Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP taulukot

Sivun loppuun

mika132 [07.12.2009 18:39:36]

#

Nyt olen jossain kohtaan saanut ajatuskatkoksen enkä saa koodiani toimimaan.
Alapuolella osa koodistani. Eli kaikki alustukset (yhteyden muodostamiset yms on tehty) kommentti rivissä josta heittää erroria. Tarkoitus olisi tallentaa kaikkien kisaan osallistuneiden tiedot taulukoihin myöhempää käyttöä varten.

<?php

	$query301 = "SELECT Osallistujan_ID FROM Jokkis_manager_osallistujat WHERE data > 0 ORDER BY Numero DESC";
	$result301 = mysql_query($query301, $connection);
	$tulos6 = array();

	while ($table = mysql_fetch_array($result301, MYSQL_ASSOC))
	{

		$tulos6[] = $table;

	}
	echo "<ul>";
	$sija=1;
	$osallistujan_ID=$f["Osallistujan_ID"];
	foreach ($tulos6 as $f)
	{
		$kuski[$sija]=$f["Osallistujan_ID"];
		$sija++;
	}
	echo "</ul>";
	$kuskina=1;
	for ($i=$sija; $i>=0; $i-=1)
	{
		$kuskin_ID[$kuskina] = $osallistujan_ID;
		$kuskina++;

		$query2 = "SELECT * FROM Jokkis_manager WHERE ID = $kuski[$kuskina]";
		$result1 = mysql_query($query2, $connection);
		$tulos1 = mysql_fetch_array($result1, MYSQL_ASSOC);//errori rivi eli suomeksi tarkoittaa, että se ei ymmärrä tuota minun taulukkoa, että mistä se etisisi yhtään mitään.

		$ajotaito[$kuskina] = $tulos1["Ajotaito"];
		$mutterit = $tulos1["Mutterit"];
		$bensaa = $tulos1["Bensaa"];
	}

Mod. lisäsi <?php:n koodin alkuun.

Spongi [07.12.2009 18:45:19]

#

Mitäs mysql_error() sanoo?

mika132 [07.12.2009 18:52:03]

#

Unohdin kokonaan.

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/web00439/public_html/gameheaven/autourheilu/jokkismanager/race_engine.php on line 113

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/web00439/public_html/gameheaven/autourheilu/jokkismanager/race_engine.php on line 113

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/web00439/public_html/gameheaven/autourheilu/jokkismanager/race_engine.php on line 113


ja tuo MySQL_error funktio sanoo:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

Macro [07.12.2009 19:32:09]

#

Ei virhe johdu mysql_fetch_array-funktiosta, vaan se johtuu kyselystä $query2. Laitappas sen $result1 = mysql_query($query2, $connection)-kohdan perään or die(mysql_error());.

mika132 [07.12.2009 20:02:40]

#

Tuo errori on saatukin siitä. En PHP:ssä niin aloittelija ole.

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

Macro [07.12.2009 20:22:17]

#

$query2 = "SELECT * FROM Jokkis_manager WHERE ID = {$kuski[$kuskina]}";

Toimisikohan tämä? Ilman aaltosulkeita tuo olisi hakasulkeiden takia string, joka tarvitsee heittomerkit ympärilleen. Nyt aaltosulkeiden kanssa se hakee taulusta $kuski kohdan $kuskina.

mika132 [07.12.2009 22:03:26]

#

Ei auttanut tuokaan, mutta heitin sitten '' merkit sinne ja alkoi pelaamaan. Kiitos kuitenkin vinkeistä jotka johdattivat minut oikeaan suuntaan. :)

mika132 [08.12.2009 17:32:48]

#

Juu elikkä kysyisin sellaista, että millä koodilla saan taulukkoni etsimään enemmän kirjaimia kuin yhden? Nimittäin tällä hetkellä jos ID on 15 se tallentaa taulukkoon arvoksi 1. Jos ID on 35 se tekee taulukon arvoksi 3. Eli se ei ota tuota toista lukua. tuossa se kohta koodistani. Taulukko "$kaytossa_auto_ID" ottaa vain ensimmäisen numeron kun taas esimerkiksi taulukko "$kilpailijan_nimi" ottaa kyllä jokaisen kirjaimen nimestä.

<?php
	for ($i=$sija; $i>=0; $i-=1)
	{

		$query2 = "SELECT * FROM Jokkis_manager WHERE ID = '$kuskin_ID[$kuskina]'";
		$result1 = mysql_query($query2, $connection) or die(''.mysql_error().'');
		$tulos1 = mysql_fetch_array($result1, MYSQL_ASSOC);

		$kilpailijan_nimi[$kuskina] = $tulos1["Kayttaja"];
		$kaytossa_auto_ID[$kuskina] = $tulos1["Kaytossa_auto_ID"];

		$query4 = "SELECT * FROM Jokkis_manager_autot WHERE Auton_ID='$kaytossa_auto_ID[$kuskina]' and Omistajan_ID='$kuskin_ID[$lahto_viiva]'";
		$result3 = mysql_query($query4, $connection) or die(''.mysql_error().'');
		$tulos3 = mysql_fetch_array($result3, MYSQL_ASSOC);

		$auton_merkkeja_kisassaa[$kuskina] = $tulos3["Auton_merkki"];

		if ($lahto_viiva <= 4)
		{
			echo "<br> $lahto_viiva. viivalla on {$auton_merkkeja_kisassaa[$kuskina]} merkkinen ja mallinen auto jota ohjastaa {$kilpailijan_nimi[$kuskina]} : {$kuskin_ID[$kuskina]} : {$kaytossa_auto_ID[$kuskina]}<br>";
		}




		$kuskina++;
		$lahto_viiva++;
	}

Mod. korjasi kooditagit ja lisäsi <?php:n koodin alkuun.
Mod. poisti alta turhan viestin. Älä lähetä sellaisia vaan odota.

mika132 [11.12.2009 11:41:30]

#

Eli teen tätä nyt javascriptillä Koodini tulostaa seuraavan tekstin kappaleen:
Lähdössä on mukana auto:undefined

Se ei tulosta auton merkkiä. Tässä koodini: (Eikä se tulosta tuota kuin kerra, vaikka pitäisi 4 kertaa kuten for silmukasta näkee.)

Koodi on:

var kisassa_tarkastetaan=1
var kisassa_tarkastetaana=1
var arr = new Array(3);
for (i=4; i >= 0; i--)
{
	arr[kisassa_tarkastetaan] = '$auton_merkkeja_kisassaa[$kisassa_takastus]';
	'$kisassa_takastus+=1'
	kisassa_tarkastetaan++
}
	for (s=4; s >= 0; s--)
	{
		arr[kisassa_tarkastetaana];
		document.tapahtuma.d3.value=('Lähdössä on mukana auto:' +arr[kisassa_tarkastetaan]+'.<br>');
		kisassa_tarkastetaana++
	}

HUOM! Tässä on vain tuohon kohtaan liittyvät koodit. Ei koko koodia.

Macro [11.12.2009 13:45:36]

#

PHP:n puolella kun eilen aloin luokkia käyttää, niin undefined tuli kun listalla ei ollut näkyvyyttä muualle.

Onko tuo edes JavaScriptiä? Mielestäni tuo on jotaiin ihan muuta. JavaScriptissä muuttujilla ei ole $-merkkiä edessä. arr[...] = '$...[...]'; on siis väärin. Voit lisätä tauluun alkion laittamalla arr[kisassa_tarkastetaan] = auton_merkkeja_kisassa[kisassa_tarkastus]. Virheesi tulee varmaankin kyseisellä sivulla, koska uskoisin tarkoittaneesi kisassa_takastuksella kisassa_tarkastusta.

Metabolix [11.12.2009 13:54:30]

#

Oli mitä oli, koodissa ei taaskaan ole mitään järkeä. Katso sivun lähdekoodista, mitä PHP-skripti tulostaa. Näyttääkö toimivalta JS:ltä? Tuskin.

Perusasia: PHP ajetaan palvelimella, ja sitten syntynyt sivu lähetetään selaimelle. Selain ajaa JS:n. Et siis voi sekoittaa PHP:tä ja JS:ää, vaan PHP-koodin pitää tulostaa täysin toimiva JS-koodi, jonka voi vaikka tallentaa ja ajaa jonain toisena päivänä toisella koneella ilman PHP:tä.

mika132 [16.12.2009 21:07:37]

#

Juu elikkä kysyisin sellaista, että millä koodilla saan taulukkoni etsimään enemmän kirjaimia kuin yhden? Nimittäin tällä hetkellä jos ID on 15 se tallentaa taulukkoon arvoksi 1. Jos ID on 35 se tekee taulukon arvoksi 3. Eli se ei ota tuota toista lukua. tuossa se kohta koodistani. Taulukko "$kaytossa_auto_ID" ottaa vain ensimmäisen numeron kun taas esimerkiksi taulukko "$kilpailijan_nimi" ottaa kyllä jokaisen kirjaimen nimestä.

Pelaajan ID on esim 40. Sen se kyllä tulostaa, mutta ei auton ID:tä. Jos se on esim 12 niin taulukon arvoksi jää yksi.

<?php
    for ($i=$sija; $i>=0; $i-=1)
    {

        $query2 = "SELECT * FROM Jokkis_manager WHERE ID = '$kuskin_ID[$kuskina]'";
        $result1 = mysql_query($query2, $connection) or die(''.mysql_error().'');
        $tulos1 = mysql_fetch_array($result1, MYSQL_ASSOC);

        $kilpailijan_nimi[$kuskina] = $tulos1["Kayttaja"];
        $kaytossa_auto_ID[$kuskina] = $tulos1["Kaytossa_auto_ID"];

        $query4 = "SELECT * FROM Jokkis_manager_autot WHERE Auton_ID='$kaytossa_auto_ID[$kuskina]' and Omistajan_ID='$kuskin_ID[$lahto_viiva]'";
        $result3 = mysql_query($query4, $connection) or die(''.mysql_error().'');
        $tulos3 = mysql_fetch_array($result3, MYSQL_ASSOC);

        $auton_merkkeja_kisassaa[$kuskina] = $tulos3["Auton_merkki"];

        if ($lahto_viiva <= 4)
        {
            echo "<br> $lahto_viiva. viivalla on {$auton_merkkeja_kisassaa[$kuskina]} merkkinen ja mallinen auto jota ohjastaa {$kilpailijan_nimi[$kuskina]} : {$kuskin_ID[$kuskina]} : {$kaytossa_auto_ID[$kuskina]}<br>";
        }




        $kuskina++;
        $lahto_viiva++;
    }

Teuro [17.12.2009 07:07:14]

#

Voitko näyttää mitä noissa kyselyissä oikeasti on? Eli siis tulosta selaimelle tuon kyselyn sisältö ja laita pastea tänne. Lisäksi on turha hakea kaikkia kenttiä, jos tarkoitus on käyttää vain yhtä tai kahta kenttää tulosjoukosta. Numeroiden ympärillä ei ole tarkoitus käyttää '' merkkejä. Lisäksi luultavasti teet jotakin todella hankalasti, koska koodissa on juoksevalla numeroinnilla nimettyjä muuttujia.

mika132 [17.12.2009 19:27:50]

#

Eli tässä mitä sen pitäisi tulostaa:
1. viivalla on Wolsvagen kupla merkkinen ja mallinen auto jota ohjastaa green : 40 : 12

2. viivalla on Volvo 240 merkkinen ja mallinen auto jota ohjastaa matti : 1 : 1

(Eli nuo numerot perässä ovat vain niitä että näen mitä se saa arvoksi noille taulukoille. Kuitenkin ensimmäinen numero eli green 40 ja matti 1 on käyttäjän ID ja toinen numero green 12 ja matti 1 on auton ID. Eri tietokannoista Käyttäjänimet ja ID:t on jokkis_manager nimisessä kun taas autot ovat jokkis_manager_autot nimisessä.)

Tulostaa kuitenkin:
1. viivalla on Volvo 240 merkkinen ja mallinen auto jota ohjastaa green : 40 : 1

2. viivalla on Volvo 240 merkkinen ja mallinen auto jota ohjastaa matti : 1 : 1


Tässä mitä se tulostaa:
1. viivalla on Volvo 240 merkkinen ja mallinen auto jota ohjastaa green : 40 : 1

2. viivalla on Volvo 240 merkkinen ja mallinen auto jota ohjastaa matti : 1 : 1

Eli näettekö. Se jättää tuolta greeniltä sen auton ID toisen numeron pois. Eli taulukon arvo on 1, koska se hukkaa johonkin sen 2 perästä. Koitin sen nimittäin. Muutin greenin omistaman auto ID:n 9 ja se tulosti:

1. viivalla on Fiat 850 merkkinen ja mallinen auto jota ohjastaa green : 40 : 9

2. viivalla on Volvo 240 merkkinen ja mallinen auto jota ohjastaa matti : 1 : 1


Ja sitten takaisin 12 niin jo pamahti taas.

Koodi:

<?php
ob_start();
session_start();
include("yla.php");
if (!$_SESSION["id"]) header("Location: http://pelila.com/gameheaven/ei_tunnusta.php");?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>

<head>
<title>Pelila - GameHeaven - Jokkismanager - Race Engine</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link href="new_website/style.css" rel="stylesheet" type="text/css" />
<link href="runko.css" rel="stylesheet" type="text/css" />
</head>
<body>
<?php
include("ylakohta.php");
include("functions.php");
?>
<div id="content">
<div id="left">


<?php

$tempid = $_SESSION["id"];

$connection = mysql_connect("localhost","web00439","6SVqUM") or die('Error!!! Otathan yhteytta administoon.');
mysql_select_db("web00439", $connection);

$query1 = "SELECT * FROM Kayttajat WHERE ID = $tempid";
$query2 = "SELECT * FROM Jokkis_manager WHERE ID = $tempid";

$result = mysql_query($query1, $connection);
$result1 = mysql_query($query2, $connection);

$tulos = mysql_fetch_array($result, MYSQL_ASSOC);
$tulos1 = mysql_fetch_array($result1, MYSQL_ASSOC);

$ganster_peli = $tulos["gangster_peli"];
$kayttaja = $tulos["Käyttäjä"];

$rahaa = $tulos1["Rahaa"];
$mutterit = $tulos1["Mutterit"];
$bensaa = $tulos1["Bensaa"];
$taso = $tulos1["Taso"];
$kaytossa_auto_ID = $tulos1["Kaytossa_auto_ID"];
$exp = $tulos1["exp"];
$ajotaito = $tulos1["Ajotaito"];
$max_exp = $tulos1["max_exp"];
$pisteet = $tulos1["Pisteet"];


$item = $_GET['item'];
$expp = $_GET['laskuri'];

	$query301 = "SELECT Osallistujan_ID FROM Jokkis_manager_osallistujat WHERE data > 0 ORDER BY Osallistujan_ID DESC";
	$result301 = mysql_query($query301, $connection);
	$tulos6 = array();

	while ($table = mysql_fetch_array($result301, MYSQL_ASSOC))
	{

		$tulos6[] = $table;

	}
	echo "<ul>";
	$sija=1;
	foreach ($tulos6 as $f)
	{
		$kuskin_ID[$sija] = $f["Osallistujan_ID"];
		$kuski[$sija]=$f["Osallistujan_ID"];

		$query2 = "SELECT * FROM Jokkis_manager WHERE ID = '$kuskin_ID[$sija]'";
		$result1 = mysql_query($query2, $connection) or die(''.mysql_error().'');
		$tulos1 = mysql_fetch_array($result1, MYSQL_ASSOC);

		$kilpailijan_nimi[$sija] = $tulos1["Kayttaja"];
		$kaytossa_auto_ID[$sija] = $tulos1["Kaytossa_auto_ID"];

		$query4 = "SELECT * FROM Jokkis_manager_autot WHERE Auton_ID=$kaytossa_auto_ID[$sija]";
		$result3 = mysql_query($query4, $connection) or die(''.mysql_error().'');
		$tulos3 = mysql_fetch_array($result3, MYSQL_ASSOC);

		$auton_merkkeja_kisassaa[$sija] = $tulos3["Auton_merkki"];

		$sija++;
	}
	echo "</ul>";
	$kuskina=1;
	$lahto_viiva=1;
	echo "<h3>Alkuerät. sij.1-4 A-Finaaliin</h3><b>Ensimmäinen lähtö on juuri alkamassa!<br><br>Katsotaanpa ensin lähdössä olevat autot.";
	for ($i=$sija; $i>=0; $i-=1)
	{

		if ($lahto_viiva <= 2)
		{
			echo '<br> '.$lahto_viiva.'. viivalla on '.$auton_merkkeja_kisassaa[$kuskina].' merkkinen ja mallinen auto jota ohjastaa '.$kilpailijan_nimi[$kuskina].' : '.$kuskin_ID[$kuskina].' : '.$kaytossa_auto_ID[$kuskina].'<br>';
		}




		$kuskina++;
		$lahto_viiva++;
	}







?>
<BR><BR><br><br><br><br><br>

<?php

ob_end_flush();
?>

			</div>
<?php
include("oikeasivu.php");
?>


		</div>
		<div style="clear:both"></div>
	</div>
<?php
include("alakohta.php");
?>
</div>
</body>
</html>

PS: Oliko siinä tarpeeksi tietoa?

mika132 [18.12.2009 14:46:27]

#

Bumbbaus viesti. Olen tässä jo 72h pian kääntänyt ja vääntänyt tuota koodia, mutta ei ratkea. Osaako siis joku auttaa minua?


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta