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.
Mitäs mysql_error() sanoo?
Unohdin kokonaan.
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/web00439/public_html/gameheaven/
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/web00439/public_html/gameheaven/
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/web00439/public_html/gameheaven/
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
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());
.
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
$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.
Ei auttanut tuokaan, mutta heitin sitten '' merkit sinne ja alkoi pelaamaan. Kiitos kuitenkin vinkeistä jotka johdattivat minut oikeaan suuntaan. :)
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.
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.
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.
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ä.
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++; }
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.
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?
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?
Aihe on jo aika vanha, joten et voi enää vastata siihen.