Taas on ongelma scriptan kanssa, enkä millään saa päähäni, että miksi ei toimi. Seuraavanlainen skripta:
<?php $yhteys = mysql_connect("localhost", "996_punppis", "********"); mysql_select_db("996_database", $yhteys); $SQL = "SELECT max(id) FROM bosskills;"; $query = mysql_query($SQL, $yhteys); $bosseja = mysql_result($query, 0); mysql_close($yhteys); $yhteys = mysql_connect("localhost", "996_punppis", "*******"); mysql_select_db("996_database", $yhteys); if($bosseja >= 5) { for($x=$bosseja-4; $x <= $bosseja; $x++) { $i++; $SQL = "SELECT bossi FROM bosskills WHERE id=$x;"; $query = mysql_query($SQL, $yhteys); $bossi = mysql_result($query, 0); $SQL = "SELECT insta FROM bosskills WHERE id=$x;"; $query = mysql_query($SQL, $yhteys); $insta = mysql_result($query, 0); $bosskill[$i] = "<a href=\"index.php?page=bossess&id=$x\">".$bossi.", ".$insta."</a>"; } } else { for($x=1; $x <= 5; $x++) { $i++; if($x > $bosseja) { $bosskill[$i] = "None :("; } else { $SQL = "SELECT bossi FROM bosskills WHERE id=$x;"; $query = mysql_query($SQL, $yhteys); $bossi = mysql_result($query, 0); $SQL = "SELECT insta FROM bosskills WHERE id=$x;"; $query = mysql_query($SQL, $yhteys); $insta = mysql_result($query, 0); $bosskill[$i] = "<a href=\"index.php?page=bossess&id=$x\">".$bossi.", ".$insta."</a>"; } } } mysql_close($yhteys); ?>
Kuitenkin, kun myöhemmässä koodissa on
<?php echo $bosskill[1] // 1-5, eli 5 kertaa ?>
Niin tulostus on tyhjä! Koitin laittaa tuon tuplaqueryn jälkeen seuraavanlaisen rivin:
<?php die($bossi.", ".$insta); ?>
Kumma kyllä, die näytti ihan oikeita arvoja. Echolla taas ei mitään :(
Toi koodi on vielä lähes suoraan kopioitu toisesta tekemästäni koodista, joka toimii:
<?php $yhteys = mysql_connect("localhost", "996_punppis", "*********"); mysql_select_db("996_database", $yhteys); $SQL = "SELECT max(id) FROM screenshots;"; $query = mysql_query($SQL, $yhteys); $kuvia = mysql_result($query, 0); mysql_close($yhteys); $yhteys = mysql_connect("localhost", "996_punppis", "**********"); mysql_select_db("996_database", $yhteys); if($kuvia >= 8) { for($x=$kuvia-7; $x <= $kuvia; $x++) { $i++; $SQL = "SELECT polku FROM screenshots WHERE id=$x;"; $query = mysql_query($SQL, $yhteys); $polku = mysql_result($query, 0); $polku = "http://thesoulstealers.punppis.arkku.net/screenshots/thumb.php?file=".$polku; $kuva[$i] = "<a href=\"index.php?page=screens&id=$x\"><img src=\"$polku\" width=\"56\" height=\"47\"></a>"; } } else { for($x=1; $x <= 8; $x++) { $i++; if($x > $kuvia) { $kuva[$i] = "<img src=\"images/antifps_32.jpg\" width=\"56\" height=\"47\">"; } else { $SQL = "SELECT polku FROM screenshots WHERE id=$x;"; $query = mysql_query($SQL, $yhteys); $polku = mysql_result($query, 0); $polku = "http://thesoulstealers.punppis.arkku.net/screenshots/thumb.php?file=".$polku; $kuva[$i] = "<a href=\"index.php?page=screens&id=$x\"><img src=\"$polku\" width=\"56\" height=\"47\"></a>"; } } } mysql_close($yhteys); ?>
Tarkista ensinnäkin muuttujan $bosskill[$i] arvo sijoituksen jälkeen (ja tulosta myös muuttujan $i arvo). Tulosta myöhemmin muuttujan $bosskill[1] kanssa jotain muutakin tekstiä, niin selviää, pääseekö skriptin suoritus edes sinne asti. Tekstin näkymättömyys voi johtua vaikkapa siitä, että jossain on päättymätön silmukka.
Kannattaisi varmaan opetella tietokannan käyttö ennenkuin rupeaa sillä mitään kunnollista tekemään. Ensinnäkin älä avaa turhaan yhteyttä erikseen joka toista queryä varten, kyllä se sama on ihan käyttökelpoinen useampaa varten. Toisekseen queryjen tekeminen luupissa on 95.7% tapauksista väärä tapa tehdä asia. Mitä ihmettä varten teet joka rivin joka fieldiä varten erillisen queryn? Esim. "bossiesi" haun voisit hoitaa ihan vain yhdellä queryllä.
Ai niin - ja MAX(id):n olettaminen taulun rivien määräksi tulee kostautumaan. Kantsis käyttää COUNT(*):ä, joka palauttaa oikeasti rivien määrän.
Aihe on jo aika vanha, joten et voi enää vastata siihen.