Eli mysql_error() tulostaa seuraavaa:
Error on server (127/192)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 'ORDER BY Omistajan_ID DESC' at line 1
Ja koodi on:
<?php $kuskinidnot=$kuskinID[$i]; $autoIDnot=$AutoID[$i]; $query303 = "SELECT Hevosvoimat, Auton_ID, Omistajan_ID, Auton_moottori_kunto, Auton_vaihdelaatikko_kunto, Auton_kaasari_kunto, Renkaiden_kunto, Renkaiden_pito, Alustan_taso, Paino, Valit, Jousitus, LisaPaino, AutonKorkeus, JoustenKovuus FROM Jokkis_manager_autot WHERE Auton_ID = $autoIDnot ORDER BY Omistajan_ID DESC"; $result303 = mysql_query($query303, $connection) or die('Error on server (127/192)'.mysql_error().''); $tulos6 = array(); while ($table = mysql_fetch_array($result301, MYSQL_ASSOC)) { $tulos6[] = $table; } foreach ($tulos6 as $f) { $hevosvoimatID[$i] = $f["Hevosvoimat"]; $MoottoriKuntoID[$i] = $f["Auton_moottori_kunto"]; $VaihdelaatikkoKuntoID[$i] = $f["Auton_vaihdelaatikko_kunto"]; $KaasariKuntoID[$i] = $f["Auton_kaasari_kunto"]; $RenkaidenKuntoID[$i] = $f["Renkaiden_kunto"]; $RenkaidenPitoID[$i] = $f["Renkaiden_pito"]; $AlustanTasoID[$i] = $f["Alustan_taso"]; $PainoID[$i] = $f["Paino"]; $ValitID[$i] = $f["Valit"]; $JousitusID[$i] = $f["Jousitus"]; $LisaPainoID[$i] = $f["LisaPaino"]; $AutonKorkeusID[$i] = $f["AutonKorkeus"]; $JoustenKovuusID[$i] = $f["JoustenKovuus"]; } if ($moneskokuski == $i) { $next=3; } ?>
Eli missä vika, koska itse en näe mitään ongelmaa tuossa, mutta ehkä olen vain huolimaton.
Tarkista että $autoIDnot muuttujasta tulee varmasti halutunnäköinen arvo. Ja imo kannattas käyttää vaan all-lowercase nimiä noissa, helpommin tulee virheitä jos on tuolla tavalla.
Tuo virheilmoituskin kertoo sen, että vika on _lähellä_ ilmoitettua aluetta, ei välttämättä siinä alueella.
Koska $AutoID taulukkoa ei ole missään määritelty niin myös $autoIDnot jää tyhjäksi ja SQL-kyselystä tulee "... WHERE Auton_ID = ORDER BY ..." joka luonnollisesti antaa virheen.
Juu ei tulosta tuonne mitään, ja nyt en keksi muutakaan kuin heittää tuo koko koodi tuonne jos vaikka näkisitte missä vika. Kaikki muuttujat on mielestäni alustettu:
Ja tämä ei tulosta mitään mitä tuossa if next 3 jälkeen on, joten jossain on vikaa.
<?php //En laittanut mukaan Tietokantaan yhteyksien ottoa yms vaan tämän kilpailu engine kohdan. $moneskokuski=0; $lahto=0; $sija=0; $query301 = "SELECT Osallistujan_ID, Kisan_Data, Numero, Data FROM Jokkis_manager_osallistujat WHERE Osallistujan_ID > 0 and Kisan_Data = 10 ORDER BY Osallistujan_ID DESC"; $result301 = mysql_query($query301, $connection); $tulos6 = array(); while ($table = mysql_fetch_array($result301, MYSQL_ASSOC)) { $tulos6[] = $table; } foreach ($tulos6 as $f) { $kuskinID[$moneskokuski] = $f["Osallistujan_ID"]; $moneskokuski+=1; } for ($i=0; $i <= $moneskokuski; $i++) { $kuskinidnot=$kuskinID[$i]; $query302 = "SELECT Kayttaja, ID, Ajotaito, Pisteet FROM Jokkis_manager WHERE ID = $kuskinidnot ORDER BY ID DESC"; $result302 = mysql_query($query302, $connection); $tulos7 = array(); while ($table = mysql_fetch_array($result301, MYSQL_ASSOC)) { $tulos7[] = $table; } foreach ($tulos7 as $f) { $ajotaitoID[$i]=$f["Ajotaito"]; $KuskiNimiID[$i]=$f["Kayttaja"]; $AutoID[$i]=$f["Kaytossa_auto_ID"]; } if ($moneskokuski == $i) { $next=2; } } if ($next == 2) { for ($i=0; $i <= $moneskokuski; $i++) { $kuskinidnot=$kuskinID[$i]; $autoIDnot=$AutoID[$i]; echo "<br><hr>$autoIDnot<hr><br>"; $query303 = "SELECT Hevosvoimat, Auton_ID, Omistajan_ID, Auton_moottori_kunto, Auton_vaihdelaatikko_kunto, Auton_kaasari_kunto, Renkaiden_kunto, Renkaiden_pito, Alustan_taso, Paino, Valit, Jousitus, LisaPaino, AutonKorkeus, JoustenKovuus FROM Jokkis_manager_autot WHERE Auton_ID = $autoIDnot ORDER BY Omistajan_ID DESC"; $result303 = mysql_query($query303, $connection) or die('Error on server (127/192)'.mysql_error().''); $tulos6 = array(); while ($table = mysql_fetch_array($result301, MYSQL_ASSOC)) { $tulos6[] = $table; } foreach ($tulos6 as $f) { $hevosvoimatID[$i] = $f["Hevosvoimat"]; $MoottoriKuntoID[$i] = $f["Auton_moottori_kunto"]; $VaihdelaatikkoKuntoID[$i] = $f["Auton_vaihdelaatikko_kunto"]; $KaasariKuntoID[$i] = $f["Auton_kaasari_kunto"]; $RenkaidenKuntoID[$i] = $f["Renkaiden_kunto"]; $RenkaidenPitoID[$i] = $f["Renkaiden_pito"]; $AlustanTasoID[$i] = $f["Alustan_taso"]; $PainoID[$i] = $f["Paino"]; $ValitID[$i] = $f["Valit"]; $JousitusID[$i] = $f["Jousitus"]; $LisaPainoID[$i] = $f["LisaPaino"]; $AutonKorkeusID[$i] = $f["AutonKorkeus"]; $JoustenKovuusID[$i] = $f["JoustenKovuus"]; } if ($moneskokuski == $i) { $next=3; } } } if ($next == 3) { for ($i=0; $i <= 8; $i++) { echo "$KuskiNimiID[$i]<br> $AutoID[$i]<br> $hevosvoimatID[$i]<br> $MoottoriKuntoID[$i]<br> $VaihdelaatikkoKuntoID[$i]<br><br>"; } ?>
Mahdollisesti tuosta löytyisi vika helpostikin ihan normaaleilla debuggauskeinoilla, mutta se ei tietenkään ole mahdollista ilman tietokantayhteyttä, ja muutenkin tulee mieleen että tietokannan sisältö saattaa vaikuttaa toimivuuteen.
Sinuna laittaisin vaan breaklinen tuohon alkuun ja ajelisin sitä rivi kerrallaan eteenpäin katsoen mitä tapahtuu ja jossain kohti siinä varmastikin tulee "face palm" efekti. Noiden skriptien debuggaus on lopulta aika helppoa.
Yksi kysymys
$query303 = "SELECT Hevosvoimat, Auton_ID, Omistajan_ID, Auton_moottori_kunto, Auton_vaihdelaatikko_kunto, Auton_kaasari_kunto, Renkaiden_kunto, Renkaiden_pito, Alustan_taso, Paino, Valit, Jousitus, LisaPaino, AutonKorkeus, JoustenKovuus FROM Jokkis_manager_autot WHERE Auton_ID = $autoIDnot ORDER BY Omistajan_ID DESC";
Onko tarkoituksena valita kaikki sarakkeet taulusta?
Voit tehdä sen myös SELECT * FROM Jokkis_manager_autot WHERE Auton_ID = $autoIDnot ORDER BY Omistajan_ID DESC;
Vika löytyy seuraamalla jo mainitusta ongelmakohdasta taaksepäin ja katsomalla missä menee ensimmäisen kerran pieleen. Voit tulostaa muuttujien arvoja ja katsoa ovatko ne mitä pitää.
Tilanteessasi ongelmana oli, että $autoIDnot ei sisältänyt mitään. Seurataanpa siitä ylöspäin, ratkaisevat kohdat:
$autoIDnot=$AutoID[$i]; -> $AutoID[$i]=$f["Kaytossa_auto_ID"]; -> foreach ($tulos7 as $f) -> $tulos7[] = $table; -> while ($table = mysql_fetch_array($result301, MYSQL_ASSOC)) -> $result301 = mysql_query($query301, $connection); -> $query301 = "SELECT Osallistujan_ID, Kisan_Data, Numero, Data FROM Jokkis_manager_osallistujat WHERE Osallistujan_ID > 0 and Kisan_Data = 10 ORDER BY Osallistujan_ID DESC";
Eli monen välivaiheen kautta yrität saada $query301:n tuloksen riveiltä kenttää "Kaytossa_auto_ID", jota kyselyssä ei kuitenkaan määritellä. Muuttujien sisältöjä voit tulostaa funktiolla var_dump.
tesmu: eikös ekana mysql:ssä opeteta juuri, ettei SELECT * ole kauhean optimaalinen haku.
ja jos jokin ei toimi, niin debuggia kehiin, eli queryn tulostus ruudulle, jolloin näkee heti, millä arvoilla hakua tehdään. Eli onko jostain kumman syystä tyhjiä muuttujia eksynyt joukkoon.
Laita jokaisen skriptin alkuun seuraavat rivit:
Näin saat suuren määrän lisää varoituksia ja huomautuksia mahdollisista ongelmista ja huonoista ohjelmointitavoista. Niiden ansiosta saat ehkäistyä typeriä virheitä ennalta.
(Jos yllä mainitut rivit aiheuttavat varoituksen aikavyöhykkeestä, voit asettaa sen rivillä date_default_timezone_set("Europe/Helsinki")
.)
Mikä tän putkan ulkoasua taas vaivaa, ku menee noi tekstit yli tosta ns "keskiboxisTA", eli menee tonne sivupalkin puolelle.
Ongelma siis tässä keskustelussa.
Selain: Safari 4
OS: Win 7 64bit Ultimate
Reso: 1920x1080
Ongelma siis esiintyy, kun pienennän ikkunan koon, puoleen näytön koosta.
vehkis91 kirjoitti:
Mikä tän putkan ulkoasua taas vaivaa
Tunnettu ongelma sillon ku joku kirjottaa liian pitkiä rivejä kooditagien sisään.
(Mod. korjasi.)
Okei, nyt näyttäis pelaavan.
Aihe on jo aika vanha, joten et voi enää vastata siihen.