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" 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. 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 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; } 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... 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. 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 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 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. 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 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
Archived
This topic is now archived and is closed to further replies.