DEVILofDARKNESS Posted August 11, 2009 Share Posted August 11, 2009 There is this page: weapons.php The main part is coded: echo "Welcome in the weapon-section.<br><br> Our Weapons:<br><br>"; $query = "SELECT * FROM weapons WHERE shop='WOSH'"; $result = mysql_query($query); while($WOSHWeapons = mysql_fetch_array($result)){ echo "<a href='./info.php?type=weapon&name=" . $WOSHWeapons['weapon_short_name'] . "'>" . $WOSHWeapons['weapon_name'] . "</a><br>"; } So If you click on a link you go to ./info.php?type=weapon&name=//shortname On info.php I can handle this information easy by using switch(){case ... } But If I have a lot of weapons, I will have to write a lot of case ...: break; So I tried: <?php $type = $_GET['type']; switch($type){ case weapon: $name = $_GET['name']; $query = "SELECT * FROM weapons"; $result = mysql_query($query); switch($name){ while($InfWeap = mysql_fetch_array($result)){ case $InfWeap['weapon_short_name']: echo "Full Name: " . $InfWeap['weapon_name'] . "<br>Short Name: " . $InfWeap['weapon_short_name']; break; } default: echo "Default"; } break; It doesn't work because I use a while loop inside a switch loop Is there a certain way to do this, if there isn't please tell me an easier method to show the info about the weapons. BTW: It's about a futuristic game, not a weapon shop Quote Link to comment Share on other sites More sharing options...
premiso Posted August 11, 2009 Share Posted August 11, 2009 Switch is not a loop, it is case driven expression. <?php $type = $_GET['type']; switch($type){ case weapon: $name = $_GET['name']; $query = "SELECT * FROM weapons"; $result = mysql_query($query); while($InfWeap = mysql_fetch_array($result)){ switch($name){ case $InfWeap['weapon_short_name']: echo "Full Name: " . $InfWeap['weapon_name'] . "<br>Short Name: " . $InfWeap['weapon_short_name']; break; default: echo "Default"; } } Should get it to work, pending I put the braces back in right etc. Quote Link to comment Share on other sites More sharing options...
DEVILofDARKNESS Posted August 11, 2009 Author Share Posted August 11, 2009 Okay that works, thanks If I exactly copy like you 'wrote' it, I get a lot of: defaults between the normal text, if I use the same code except I don't use default: echo "Default", then I get the right text, Is there a way that I can implement the default: ? Quote Link to comment Share on other sites More sharing options...
WolfRage Posted August 11, 2009 Share Posted August 11, 2009 Don't wrap the default in the while statement. Quote Link to comment Share on other sites More sharing options...
DEVILofDARKNESS Posted August 11, 2009 Author Share Posted August 11, 2009 Well it's quit difficult to do that, because the php will think I'm closing the switch statement: switch($type){ case weapon: $name = $_GET['name']; $query = "SELECT * FROM weapons"; $result = mysql_query($query); while($InfWeap = mysql_fetch_array($result)){ switch($name){ case $InfWeap['weapon_short_name']: echo "Full Name: " . $InfWeap['weapon_name'] . "<br>Short Name: " . $InfWeap['weapon_short_name']; break; } default: echo "Default"; } break; Quote Link to comment Share on other sites More sharing options...
wildteen88 Posted August 11, 2009 Share Posted August 11, 2009 As I see it you can do away with the switch/case completely. You can just do this instead: switch($type) { case 'weapons': $name = mysql_real_escape_string($_GET['name']); $sql = "SELECT * FROM weapons WHERE weapon_short_name = '$name'"; $result = mysql_query($sql); if(mysql_num_rows() == 1) { $InfWeap = mysql_fetch_assoc($result); echo "Full Name: " . $InfWeap['weapon_name'] . "<br>Short Name: " . $InfWeap['weapon_short_name']; } else { echo 'Weapon not found!'; } break; } Quote Link to comment Share on other sites More sharing options...
DEVILofDARKNESS Posted August 12, 2009 Author Share Posted August 12, 2009 Smart Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.