Page 1 of 1

LOOP don'd loop

Posted: Sat Mar 20, 2004 2:57 pm
by dull1554
I am working on a virtual pet site with a few friends of mine, you are allowed to have 3 pets, but pet.php is only showing the first one

pet.php

Code: Select all

<?php
include('include.php');
doheader();
checkloggedin();

Print <<< END
<center><a href=/pets.php>My Pets</a> | <a href=/adopt.php>Adopt A Pet</a><p><p></center>
END;

$query = "SELECT * FROM pets_owned WHERE owner_id='{$userinfo['id']}' ORDER by id ASC";
$result = mysql_query($query);
print'<table width=425><tr>';
while ($pets = mysql_fetch_array($result)){
$petstatus=$pets['boredom']+$pets['hunger'];
if($petstatus>125){$status="sad";}else{$status="happy";}
$hurt=$pets['maxhp']/10;
if($pets['hp']<$hurt){$status="hurt";}else{$status=$status;}
$query = "SELECT * FROM pets WHERE id='{$pets['pet_id']}' ORDER by id ASC";
$result = mysql_query($query);
$specie = mysql_fetch_array($result);
if($pets['hunger']==0){$pets['hunger']="Stuffed!";}
if(($pets['hunger']>0)&&($pets['hunger']<=15)){$pets['hunger']="Full";}
if(($pets['hunger']>15)&&($pets['hunger']<=30)){$pets['hunger']="Almost full";}
if(($pets['hunger']>30)&&($pets['hunger']<=50)){$pets['hunger']="Hungry";}
if(($pets['hunger']>50)&&($pets['hunger']<=70)){$pets['hunger']="Pretty hungry";}
if(($pets['hunger']>70)&&($pets['hunger']<=90)){$pets['hunger']="Starving";}
if($pets['hunger']>90){$pets['hunger']="Suffering";}
if($pets['boredom']==0){$pets['boredom']="Extremely happy!";}
if(($pets['boredom']>0)&&($pets['boredom']<=15)){$pets['boredom']="Pretty happy";}
if(($pets['boredom']>15)&&($pets['boredom']<=30)){$pets['boredom']="Happy";}
if(($pets['boredom']>30)&&($pets['boredom']<=50)){$pets['boredom']="Almost happy";}
if(($pets['boredom']>50)&&($pets['boredom']<=70)){$pets['boredom']="Bored";}
if(($pets['boredom']>70)&&($pets['boredom']<=90)){$pets['boredom']="Really Bored";}
if($pets['boredom']>90){$pets['boredom']="Depresed";}
Print <<< END
<td><table width=225 bgcolor='#4289ff'>
<tr><td bgcolor='#FFFFFF'>
<img src=/images/pets/{$specie['name']}_{$specie['eevolve_count']}_{$status}.gif>
</td></tr>
<tr><td bgcolor='#4289ff'>
<center>Specie : {$specie['name']}</center>
</td></tr>
<tr><td bgcolor='#FFFFFF' height=45>
<center>Name : {$pets['name']}</center>
</td></tr>
<tr><td bgcolor='#4289ff'>
<center>Level : {$pets['lvl']}</center>
</td></tr>
<tr><td bgcolor='#FFFFFF'>
<center>Strength : {$pets['str']}</center>
</td></tr>
<tr><td bgcolor='#4289ff'>
<center>Defense : {$pets['def']}</center>
</td></tr>
<tr><td bgcolor='#FFFFFF'>
<center>Speed : {$pets['spe']}</center>
</td></tr>
<tr><td bgcolor='#4289ff'>
<center>Accuracy : {$pets['accur']}</center>
</td></tr>
<tr><td bgcolor='#FFFFFF'>
<center>Intelligence : {$pets['intel']}</center>
</td></tr>
<tr><td bgcolor='##4289ff'>
<center>HitPoints : {$pets['hp']}/{$pets['maxhp']}</center>
</td></tr>
<tr><td bgcolor='#FFFFFF'>
<center>Hunger : {$pets['hunger']}</center>
</td></tr>
<tr><td bgcolor='#4289ff'>
<center>Happiness : {$pets['boredom']}</center>
</td></tr>
<tr><td bgcolor='#FFFFFF'>
<center>Gender : {$pets['gender']}</center>
</td></tr></table></td>
END;
}
print'</tr></table>';
dofooter();
?>
*note that doheader(), checkloggedin(), and dofooter() are defined in include.php as well as the array $userinfo.*

any help would be greatly appreciated thanks.....

Posted: Sat Mar 20, 2004 2:57 pm
by dull1554
also i know that there are 3 valid rows it should be returning, hence it should loop 3 times but it only does once.

Posted: Sat Mar 20, 2004 3:05 pm
by markl999
Might be because you are overwriting $result inside the while loop, ie try renaming $result in ..
$query = "SELECT * FROM pets WHERE id='{$pets['pet_id']}' ORDER by id ASC";
$result = mysql_query($query);
$specie = mysql_fetch_array($result);
to something like $result2

Posted: Sat Mar 20, 2004 3:17 pm
by dull1554
thanks, im just a bit too pig headed to see things like that...

Posted: Sat Mar 20, 2004 3:21 pm
by markl999
Always harder to spot typos/bugs in your own code ;) It would have taken me hours to spot it if it was mine :o