Ik heb dus een klein probleempje met (het ophalen van) data... Of eigenlijk met het weergeven van die data. Ik ben namelijk, om te oefenen, een online Pokémon spel wat aan het bewerken. Daarbij is de mogelijkheid om een uit te wisselen voor een willekeurige andere... Dat is waar ik vastloop. Ik laat de PHP een random nummer genereren en achter elk nummer zit een andere tekst en plaatje. Alles werkt, wegschrijven/ophalen enzo ook, totdat ik de opgehaalde data wil weergeven. Hij haalt nummers op, die ook nog willen, maar als ik daar dan weer een tekst/plaatje wil plaatsen, laat ie altijd de tekst zien van nummer 1, terwijl er in de database duidelijk 9 staat en ook als ik de cijfers zelf wil laten weergeven doet ie dat ook.
Ik heb twee verschillende dingen:
<?php
// Make a MySQL Connection
$database ="****"; //Database naam
$server ="****"; //Database host
$user ="****"; //Database user
$passw ="****"; //Database wachtwoord
mysql_connect("$server","$user", "$passw") or die(mysql_error()); 
mysql_select_db($database) or die(mysql_error());
// Get all the data from the table
$result = mysql_query("SELECT * FROM tppchack");  

echo "<table border='1'>";
echo "<tr> <th>Pokemon</th> <th>Level</th><th>gender</th> </tr>";
while($row	 = mysql_fetch_array( $result )) {
// Print out the contents of each row into a table
	echo "<tr><td>"; 
	echo $row['pokemon'];
	echo "</td><td>"; 
	echo $row['level'];
	echo "</td><td>"; 
	echo $row['gender'];
	echo "</td></tr>";

echo "</table>";
?><br>TABLE^^.<br>IMG:
<?php
/*switch met de cijfers naar tekst/plaatjes toe, variabele $row['pokemon']*/
?>


Hier geeft ie in de tabel de goeie cijfers weer, maar bij de switch blijft ie altijd bij 1 en komt er dus altijd hetzelfde ook nadat er andere gegevens in de database zijn gekomen.


<?php
// Make a MySQL Connection
$database ="****"; //Database naam
$server ="****"; //Database host
$user ="****"; //Database user
$passw ="****"; //Database wachtwoord
mysql_connect("$server","$user", "$passw") or die(mysql_error()); 
mysql_select_db($database) or die(mysql_error());
// Get all the data from the table
$pokemon = mysql_query("SELECT pokemon FROM tppchack");  // Hier haalt ie dus op... 
$level = mysql_query("SELECT level FROM tppchack");
$gender = mysql_query("SELECT gender FROM tppchack");

echo "<table border='1'>";
echo "<tr> <th>Pokemon</th> <th>Level</th><th>gender</th> </tr>";
	// Print out the contents of each row into a table
	echo "<tr><td>"; 
	echo $pokemon;
	echo "</td><td>"; 
	echo $level;
	echo "</td><td>"; 
	echo $gender;
	echo "</td></tr>";

echo "</table>";
?><br>TABLE^^.<br>IMG:
<?php /*weer die switch maar dan met de variabele $pokemon*/ ?>


Hier geeft ie in de table Resource id #6/7/8 weer, 6 in de eerste cel, 7 in de tweede en 8 in de derde... Daar gaat het dus al fout. Bij de switch geeft ie dan weer wel de data van #6 weer, ook al staat in de database 9. Hij doet in ieder geval het goeie als je kijkt naar wat er in de tabel staat.


Ik hoop dat ik het een beetje duidelijk heb uitgelegd en dat iemand me hiermee kan helpen.
edit: /me las alleen 2de stuk code. Zal nog even een blik werpen ;)

edit2: haal je variabelen bij de connectie buiten quotes, is maar een opmerking.

edit3: Is het 2de codeblok een alternatief voor eerste om te kijken of het wel werkte? Zoja, raad ik je aan de oplossing te vinden voor het eerste codeblok van je post en die andere weg te kieperen.

Kan je de switch code posten? Ik zie nu nog niet echt hoe dat een id gaat omvormen tot een plaatje.
Het tweede blok was idd om te zien of dat wel werkte.
Ik gebruik if/elseif, weet niet zeker of dat ook een switch genoemd wordt maar ja, het lijkt er wel op D:
<?php
if($row['pokemon'] == 1) {
 print('<img src="img/pokemon/golden/151M.gif" alt="GoldenMew"><br>Pokémon: GoldenMew') ;
}
elseif($row['pokemon'] == 2) {
 print('<img src="img/pokemon/golden/150M.gif" alt="GoldenMewtwo"><br>Pokémon: GoldenMewtwo');
/*nog 32 van dit soort dingen, overal met copy/paste gedaan en dan naam/nummers veranderd dus als er in een van deze twee een fout zit is dat hetzelfde in alle andere*/

De eerste twee, er zijn dus 34 opties.
Je hebt switch nog niet helemaal begrepen. Om vele elseif statements te voorkomen is het switch systeem bedacht. Deze heeft een andere structuur dan (else)if. Hier een voorbeeld van php.net:

<?php
if ($i == 0) {
    echo "i equals 0";
} elseif ($i == 1) {
    echo "i equals 1";
} elseif ($i == 2) {
    echo "i equals 2";
}

switch ($i) {
    case 0:
        echo "i equals 0";
        break;
    case 1:
        echo "i equals 1";
        break;
    case 2:
        echo "i equals 2";
        break;
}
?>


Echter, dit was natuurlijk nog niet de oplossing waar je naar zocht. Eerlijk gezegd zie ik nog niet helemaal waar het probleem zit. Wellicht kun je proberen te testen of je (else)if's werken door de plaatjes te vervangen door "echo test1" o.i.d. Indien dat wel werkt, ligt het aan je img tag.
Welk bestaand spel bewerk je?
Om het misschien nóg korter te maken kun je ook gewoon dit doen:


<?php
$id = $row['pokemon'];
$id_name = $row['pokemon_naam'];

echo '<img src="img/pokemon/' . $id . '.gif alt="' . $id_name . '"><br>Pokémon: ' . $id_name '.';
?>


Kan je ook evt. anders doen. Dit is wel een snelle en lichte manier.

Reageren