Xyphon Posted July 22, 2009 Share Posted July 22, 2009 Here's my whole code: <?PHP include('Connect.php'); include('top.php'); $ID= $_SESSION['UserID']; $ID= mysql_real_escape_string($ID); if(!isset($_SESSION['UserID'])) { echo "Sorry, you must be logged in to view this page."; include('bottom.php'); exit; } $Result1= mysql_query("SELECT * FROM users WHERE ID='$ID'"); $Rows1= mysql_fetch_array($Result1); $Weapon= $Rows1['Weapon']; $Weapon_Level= $Rows1['Weapon_Level']; $Weapon_Type= $Rows1['Weapon_Type']; $Weapon_Name= $Rows1['Weapon']; if($Weapon_Level==1) { echo "Hello, this is the blacksmith. Here you may upgrade or downgrade your weapons. The weapon chosen is the one equipped.<br /><br />"; echo "Sorry, you can not downgrade or upgrade this weapon, because it is only level 1."; } if($Weapon_Level == 5) { if(isset($_POST['Submit4'])) { $Result1= mysql_query("SELECT * FROM users WHERE ID='$ID'"); $Rows1= mysql_fetch_array($Result1); $Weapon= $Rows1['Weapon']; $Weapon_Level= $Rows1['Weapon_Level']; $Weapon_Type= $Rows1['Weapon_Type']; $Weapon_Name= $Rows1['Weapon']; if($Weapon_Name=="Windmill") { $FLR=35; } if($Weapon_Name=="Kunai"); { $FLR=20; } if($Weapon_Name=="Steel Windmill") { $FLR=50; } if($Weapon_Name=="Steel Kunai"); { $FLR=40; } if($Weapon_Name=="Silver Windmill") { $FLR=65; } if($Weapon_Name=="Silver Kunai"); { $FLR=60; } if($Weapon_Name=="Golden Windmill") { $FLR=80; } if($Weapon_Name=="Golden Kunai"); { $FLR=80; } $WL=1; $WEXP=0; if($Weapon_Type=="Regular") { $WNEXP=500; $WeaponType="Steel"; $WeaponName="$WeaponType $Weapon_Name"; } if($Weapon_Type=="Steel") { $WNEXP=5000; $WeaponType="Silver"; $WeaponName="$WeaponType $Weapon_Name"; } if($Weapon_Type=="Silver") { $WNEXP=50000; $WeaponType="Gold"; $WeaponName="$WeaponType $Weapon_Name"; } if($Weapon_Type=="Gold") { $WNEXP=9999999999999999; $WeaponType="Platinum"; $WeaponName="$WeaponType $Weapon_Name"; } $WNEXP= mysql_real_escape_string($WNEXP); $WL= mysql_real_escape_string($WL); $WEXP=mysql_real_escape_string($WEXP); $WeaponType= mysql_real_escape_string($WeaponType); $WeaponName= mysql_real_escape_string($WeaponName); $FLR= mysql_real_escape_string($FLR); $Wep_2=""; $Wep_2=mysql_real_escape_string($wep_2); $WepT2="Weapon"; $WepT2=mysql_real_escape_string($WepT2); mysql_query("UPDATE users SET Weapon_EXP='$WEXP', Weapon_NEXP='$WEXP', Weapon_Boost='$WEXP', Defense_Boost='$WEXP', Weapon_Level='$WEXP', Weapon='$Wep_2' WHERE ID='$ID'"); mysql_query("INSERT into item_box (Item_NEXP, Item_Level, Item_Type, Item_Type2, Item_Name, Item_LevelR) VALUES('$WNEXP', '$WL', '$WepT2', '$WeaponType', '$WeaponName', '$FLR')"); echo "Your weapon has been reduced to level one, and has been upgraded to a(n) $WeaponName. Go <a href='blacksmith.php'>back</a>"; } else { if(isset($_POST['Submit3'])) { echo "Are you SURE you want to upgrade? You will lose all levels and EXP on the weapon, BUT, you will get a better weapon with a stronger base attack in return.<br /><br />"; $Result1= mysql_query("SELECT * FROM users WHERE ID='$ID'")or die(mysql_error()); $Rows1= mysql_fetch_array($Result1) or die(mysql_error()); $Weapon= $Rows1['Weapon']; $Weapon_Level= $Rows1['Weapon_Level']; $Weapon_Type= $Rows1['Weapon_Type']; $Weapon_Name= $Rows1['Weapon']; if($Weapon_Name=="Windmill") { $FLR=35; } if($Weapon_Name=="Kunai"); { $FLR=20; } if($Weapon_Name=="Steel Windmill") { $FLR=50; } if($Weapon_Name=="Steel Kunai"); { $FLR=40; } if($Weapon_Name=="Silver Windmill") { $FLR=65; } if($Weapon_Name=="Silver Kunai"); { $FLR=60; } if($Weapon_Name=="Golden Windmill") { $FLR=80; } if($Weapon_Name=="Golden Kunai"); { $FLR=80; } echo "$Weapon_Name $FLR"; echo "NOTE: The weapon will go into your inventory after upgrading. Your upgraded weapon's required level is: $FLR"; echo "<br /><form method='post'><input type='submit' name='Submit4' value='Yes'></form>"; } else { echo "Hello, this is the blacksmith. Here you may upgrade or downgrade your weapons. The weapon chosen is the one equipped.<br /><br />"; echo "You may upgrade this weapon. If you upgrade this weapon, you'll lose all EXP and levels on the weapon. It will go up one weapon state. The orders are: Regular, Steel, Silver, Gold, Platinum. Platinums can not level, but have a big base attack boost. For every upgrade, you will get a base attack boost. Do you wish to upgrade it?"; echo "<br /><form method='post'><input type='submit' name='Submit3' value='Upgrade'></form>"; } } } if($Weapon_Level > 1 && $Weapon_Level < 5) { if(isset($_POST['Submit2'])) { $WL=1; $WEXP=0; if($Weapon_Type=="Regular") { $WNEXP=50; } if($Weapon_Type=="Steel") { $WNEXP=500; } if($Weapon_Type=="Silver") { $WNEXP=5000; } if($Weapon_Type=="Gold") { $WNEXP=50000; } $WNEXP= mysql_real_escape_string($WNEXP); $WL= mysql_real_escape_string($WL); $WEXP=mysql_real_escape_string($WEXP); mysql_query("UPDATE users SET Weapon_EXP='$WEXP', Weapon_NEXP='$WNEXP', Weapon_Boost='$WEXP', Defense_Boost='$WEXP', Weapon_Level='$WL' WHERE ID='$ID'"); echo "Your weapon has been reduced to level one. Go <a href='blacksmith.php'>back</a>"; } else { if(isset($_POST['Submit1'])) { echo "Are you SURE you want to downgrade? You will lose all levels and EXP on the weapon."; echo "<br /><form method='post'><input type='submit' name='Submit2' value='Yes'></form>"; } else { echo "Hello, this is the blacksmith. Here you may upgrade or downgrade your weapons. The weapon chosen is the one equipped.<br /><br />"; echo "You may downgrade this weapon. If you downgrade this weapon, you'll lose all EXP and levels on the weapon. It will <b>not</b> lose it's weapon state (Steel, Silver, Gold, Diamond) if it has one. You can ONLY trade/sell a weapon if it is level 1. Do you wish to downgrade it?"; echo "<br /><form method='post'><input type='submit' name='Submit1' value='Downgrade'></form>"; } } } include('bottom.php'); ?> Here's where you should be looking at: if($Weapon_Name=="Windmill") { $FLR=35; } if($Weapon_Name=="Kunai"); { $FLR=20; } if($Weapon_Name=="Steel Windmill") { $FLR=50; } if($Weapon_Name=="Steel Kunai"); { $FLR=40; } if($Weapon_Name=="Silver Windmill") { $FLR=65; } if($Weapon_Name=="Silver Kunai"); { $FLR=60; } if($Weapon_Name=="Golden Windmill") { $FLR=80; } if($Weapon_Name=="Golden Kunai"); { $FLR=80; } echo "$Weapon_Name $FLR"; Now this is weird. It echos it as "Kunai 80" when clearly they dont fall under the same if. How it did that, I have no clue. Help, please. If you're wondering why it's all ifs, it's because I get "Unexpected ELSEIF" if they arent" Quote Link to comment https://forums.phpfreaks.com/topic/166932-solved-very-weird-php-problem/ Share on other sites More sharing options...
mmarif4u Posted July 22, 2009 Share Posted July 22, 2009 I am a bit confused about: if($Weapon_Name=="Golden Kunai"); Why you are using ; after ) in if statement... Check all other if statements, remove all and then test your script. Quote Link to comment https://forums.phpfreaks.com/topic/166932-solved-very-weird-php-problem/#findComment-880148 Share on other sites More sharing options...
Xyphon Posted July 22, 2009 Author Share Posted July 22, 2009 Holy crap I cant believe I did that.. What a noob mistake, here I am with 40 well-written working pages, and I just get so used to the semi-colon that I fail completely.. I feel dissapointed in myself.. topic solved Quote Link to comment https://forums.phpfreaks.com/topic/166932-solved-very-weird-php-problem/#findComment-880150 Share on other sites More sharing options...
Andy-H Posted July 22, 2009 Share Posted July 22, 2009 Why not use switch statements instead of if blocks? switch ($Weapon_Name) { case "Windmill": $FLR = 35; break; case "Kunai": $FLR = 20; break; //ETC... default: $FLR = 0; } Quote Link to comment https://forums.phpfreaks.com/topic/166932-solved-very-weird-php-problem/#findComment-880155 Share on other sites More sharing options...
mmarif4u Posted July 22, 2009 Share Posted July 22, 2009 No worries mate...all we were also noobs sometime... Quote Link to comment https://forums.phpfreaks.com/topic/166932-solved-very-weird-php-problem/#findComment-880157 Share on other sites More sharing options...
ignace Posted July 22, 2009 Share Posted July 22, 2009 Help, please. If you're wondering why it's all ifs, it's because I get "Unexpected ELSEIF" if they arent" How about a switch ten? $WNEXP=9999999999999999; Can't be used as it exceeds the integer (and possibly float) which means you'll get a negative number for $WNEXP. Use PHP_INT_MAX instead or keep this information db-based. Quote Link to comment https://forums.phpfreaks.com/topic/166932-solved-very-weird-php-problem/#findComment-880159 Share on other sites More sharing options...
Xyphon Posted July 22, 2009 Author Share Posted July 22, 2009 No, it was just a noob mistake, lol, no errors anymore. @mmarif: It's funny because I can code very well and don't hit too many errors, but once in a while I pull a noob xD Quote Link to comment https://forums.phpfreaks.com/topic/166932-solved-very-weird-php-problem/#findComment-880165 Share on other sites More sharing options...
ignace Posted July 22, 2009 Share Posted July 22, 2009 No, it was just a noob mistake, lol, no errors anymore. @mmarif: It's funny because I can code very well and don't hit too many errors, but once in a while I pull a noob xD $ID= $_SESSION['UserID']; $ID= mysql_real_escape_string($ID); if(!isset($_SESSION['UserID'])) { echo "Sorry, you must be logged in to view this page."; include('bottom.php'); exit; } should be: if(!isset($_SESSION['UserID'])) { echo "Sorry, you must be logged in to view this page."; include('bottom.php'); exit; } $ID= $_SESSION['UserID']; $ID= mysql_real_escape_string($ID); Because if !isset($_SESSION['UserID']) then $ID= $_SESSION['UserID']; throws an e_notice: undefined index UserID Use mysql_fetch_assoc() instead of mysql_fetch_array() as it gives you both a numerical as an associative array back or atleast use MYSQL_NUM or MYSQL_ASSOC as a second optional parameter. Also you pull this information 3 times: $Result1= mysql_query("SELECT * FROM users WHERE ID='$ID'"); While $Result1 still holds the information you need and instead of re-using this information you query the db instead. $WNEXP=9999999999999999; Can't be used as it exceeds the integer (and possibly float) which means you'll get a negative number for $WNEXP. Use PHP_INT_MAX instead or keep this information db-based. if($Username=="Xyphon") { $You="Awesome!"; } Not yet Quote Link to comment https://forums.phpfreaks.com/topic/166932-solved-very-weird-php-problem/#findComment-880171 Share on other sites More sharing options...
Xyphon Posted July 22, 2009 Author Share Posted July 22, 2009 $ID= $_SESSION['UserID']; $ID= mysql_real_escape_string($ID); if(!isset($_SESSION['UserID'])) { echo "Sorry, you must be logged in to view this page."; include('bottom.php'); exit; } Works fine, I've never gotten an error. I don't see why it wouldnt, not like it's saying (if(!isset($ID)) which would probably bring an error. Use mysql_fetch_assoc() instead of mysql_fetch_array() as it gives you both a numerical as an associative array back or atleast use MYSQL_NUM or MYSQL_ASSOC as a second optional parameter. It doesn't matter for the reasons I use it, I only need fetch_array currently. Also you pull this information 3 times: $Result1= mysql_query("SELECT * FROM users WHERE ID='$ID'"); While $Result1 still holds the information you need and instead of re-using this information you query the db instead. Yeah, I thought that may have been the reason for the error, and I never got around to editing it out before posting it here. Also, although 999999999999 is over the max, it just converts it into the max, because I tested it and in the database it says: 2147483647 So yes, the statement in my signature is still true. Quote Link to comment https://forums.phpfreaks.com/topic/166932-solved-very-weird-php-problem/#findComment-880220 Share on other sites More sharing options...
ignace Posted July 22, 2009 Share Posted July 22, 2009 Works fine, I've never gotten an error. I don't see why it wouldnt, not like it's saying (if(!isset($ID)) which would probably bring an error. error_reporting(E_ALL); ini_set('display_errors', TRUE); And go to the page as not logged in and you'd get something like: Notice: undefined index 'UserID'. You should always program in a logic manner not first use a variable and afterwards question if it actually even exists? Use mysql_fetch_assoc() instead of mysql_fetch_array() as it gives you both a numerical as an associative array back or atleast use MYSQL_NUM or MYSQL_ASSOC as a second optional parameter. It doesn't matter for the reasons I use it, I only need fetch_array currently. You use the double of memory then is actually required in a small application this may not be a problem however in bigger applications you may consume just that too much memory. Also you pull this information 3 times: $Result1= mysql_query("SELECT * FROM users WHERE ID='$ID'"); While $Result1 still holds the information you need and instead of re-using this information you query the db instead. Yeah, I thought that may have been the reason for the error, and I never got around to editing it out before posting it here. Also, although 999999999999 is over the max, it just converts it into the max, because I tested it and in the database it says: 2147483647 Because PHP chopped it for you to it's maximum integer size (PHP_INT_MAX). In my opinion it's bad practice and if you'll ever work in a bank let me know so I don't deposit there Besides you are creating a game type which is known for his million users with their billion dollar accounts, they may get disappointed when it suddenly drops from 16 billion to 2 billion Have you tought about that? So yes, the statement in my signature is still true. I didn't wanted to offend you and it surely shows that you are ambigious about what you do, however modesty is much more appreciated I can say that I'm the #1 programmer however some may disagree (and some will call me a liar, which I probably am ) HAHA Quote Link to comment https://forums.phpfreaks.com/topic/166932-solved-very-weird-php-problem/#findComment-880292 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.