ik heb de volgende code:
<br />
<table width=100% border=1 bordercolor=#000000 rules="all">
<?
$hand = mysql_query("SELECT * FROM users");
while($object = mysql_fetch_object($hand))
{
	$username = $object->username;
	$userid = $object->id;
	echo '<tr>
			<td width=15%>
				'.$username.'
			</td>
			<td>';

	$award = mysql_query("SELECT * FROM userawards WHERE userid='$userid'");
	while($object = mysql_fetch_object($award)){
		$award=$object->award;

		$awardpic = mysql_query("SELECT * FROM awards WHERE id='$award'");
		while($object = mysql_fetch_object($awardpic)){
			$pic=$object->pic;
			$pic='images/'.$pic.'';
		}

		echo'<img src="'.$pic.'">';
	}
	echo'</td>
		 </tr>';
}

?>
</table>

De uitkomst is 1 plaatje, de rest geeft ie een foutmelding, iemand een idee wat ik fout doe?
een foutmelding
En nu mogen wij gaan raden welke foutmelding?

Wat in elk geval fout is, is dat je niets aan foutafhandeling doet. Je controleert nergens of de queries wel zijn gelukt, je controleert niet of er wel resultaten zijn en wanneer er fouten zijn, gebruik je nergens mysql_error(). Op deze manier wordt het onmogelijk om fatsoenlijk te debuggen.

error_reporting(E_ALL); ontbreekt eveneens, dat is misschien nog wel de belangrijkste maar in elk geval de eerste stap in het debuggen.
de foutmelding is:
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in C:\serverwww\website\test\award\users.php on line 17

dus de query kan niet goed uitgevoerd worden! En nog even iets, dit scriptje is even een snel testscriptje, nog lang geen uiteindelijke versie dus foutafhandeling komt nog ;-) Maar is idd niet zo handig
Dit is inderdaad niet handig. Dit is een totaal verkeerde manier om een systeem te ontwikkelen. Tijdens het bouwen maak je fouten, maar je hebt nauwelijks mogelijkheden om te debuggen omdat je niets aan foutafhandeling doet. Veel succes er mee...

Foutafhandeling is de basis van ieder systeem. Dat is het eerste waarmee je begint wanneer gaat bouwen.
ok,ik heb mn fouten al toegegeven, maar heb nu nog geen antwoord op mijn vraag, want de fout is NIET dat er geen foutafhandeling in zit!!
ok, dan het antwoord: Er is een query mislukt. Maar omdat de foutafhandeling ontbreekt, heb ik geen idee welke dat is. Ik gok er op dat het deze is: $awardpic

Maar ga s.v.p. niet eigenwijs doen en bouw eerst die foutafhandeling in. Zo moeilijk is dat niet. Hier een voorbeeldje:
<?php
if(!$awardpic){ // FALSE
echo 'Query mislukt: '.mysql_error();
die(); // kan netter...
}

if(!mysql_num_rows($awardpic) > 0){
echo 'Er zijn geen records gevonden.';
die(); // kan netter
}

// rest van je script
?>
Ik nu ook dat je 3x een while begint met $object. Dat gaat niet lukken. Zorg voor verschillende namen.

Verder is mysql_fetch_object() de langzaamste van alle fetch-functies. mysql_fetch_assoc() is de snelste. Zie verder de php-handleiding.

Reageren