chocopi Posted May 27, 2007 Share Posted May 27, 2007 Below is more source code for one of my pages. The idea is that a random enemy is chosen from the database and when the user submits the form it is meant to take 20 from the enemies hp. the enemy has 100 hp and when attacked it will go to 80 then 60 etc. However, instead of going to 80 from 100 it goes to -20. im not sure why it is doing this so here is my code: <?php // Start Session session_start(); require_once ('page_header.php'); // Declare Variables $id = $_SESSION['id']; $username = $_SESSION['username']; $password = $_SESSION['password']; $adv = $_SESSION['adv']; $title = 'Chocopi :: Fight'; $image_root = 'http://members.lycos.co.uk/chocopi/Mark/images/'; // If post, deal damage to enemy and set sessions if($_POST) { $damage = 20; $enemy_hp = $_POST['enemy_hp']; $new_enemy_hp = $enemy_hp - $damage; $_SESSION['enemy_hp'] = "$new_enemy_hp"; $_SESSION['enemy_id'] = "$enemy_id"; $_SESSION['enemy_name'] = "$enemy_name"; $_SESSION['enemy_desc'] = "$enemy_desc"; $_SESSION['enemy_item'] = "$enemy_item"; } // Check is session of enemy id is set so the sessions can be set to variables if ( isset($_SESSION['enemy_id'] )) { $enemy_id = $_SESSION['enemy_id']; $enemy_hp = $_SESSION['enemy_hp']; $enemy_name = $_SESSION['enemy_name']; $enemy_name = ucfirst($enemy_name); $enemy_desc = $_SESSION['enemy_desc']; $enemy_desc = ucfirst($enemy_desc); $enemy_item = $_SESSION['enemy_item']; } else { // Get random enemy stuff from database $query = @mysql_query("SELECT `id`,`name`,`desc`,`hp`,`item` FROM `enemies` WHERE `id`>0 ORDER BY rand() LIMIT 1"); $row = @mysql_fetch_assoc($query) or die("Invalid query, please contact an administrator!"); $enemy_id = $row['id']; $enemy_name = $row['name']; $enemy_name = ucfirst($enemy_name); $enemy_desc = $row['desc']; $enemy_desc = ucfirst($enemy_desc); $enemy_item = $row['item']; } if( !isset($_SESSION['enemy_hp'] )) { // Destroy $_SESSION['enemy_hp']; unset($_SESSION['enemy_hp']); $enemy_hp = $row['hp']; } else { $enemy_hp = $_SESSION['enemy_hp']; } // Check the session is set if( isset($_SESSION['id']) && isset($_SESSION['username']) && isset($_SESSION['password']) && isset($_SESSION['adv']) ) { // Begin html print ("<html>\n"); print ("<head>\n"); print ("<title>$title</title>\n"); print ("</head>\n"); print ("<body>\n"); print("<form name=\"adv\" method=\"post\" action=\"$_SERVER[php_SELF]\"> \n"); print ("<center>\n"); // Get adv $query = @mysql_query("SELECT `adv` FROM `Mark` WHERE `id`='$id'"); $row = @mysql_fetch_assoc($query) or die("Invalid query, please contact an administrator!"); $adv = $row['adv']; // Check if adv <= 0 if ($adv <= 0) { print ("You are out of adventures!\n"); print ("<br /> \n"); print ("<br /> \n"); print ("<a href=\"main.php\">Exit</a>\n"); die(); } // Check if enemy is alive if ($enemy_hp <= 0) { // Check what $enemy_hp is outputting print $enemy_hp; unset($_SESSION['enemy_hp']); unset($_SESSION['enemy_id']); unset($_SESSION['enemy_name']); unset($_SESSION['enemy_desc']); unset($_SESSION['enemy_item']); print ("You have defeated $enemy_name\n"); print ("<br /> \n"); print ("<br /> \n"); print ("<a href=\"adv.php\">Adventure Again</a>\n"); print ("<br /> \n"); print ("<br /> \n"); print ("<a href=\"main.php\">Exit</a>\n"); die(); } // Minus 1 from adv $adv--; $adv_update = "UPDATE `Mark` SET `adv`='$adv' WHERE `id`='$id'"; @mysql_query($adv_update) or die("Invalid query, please contact an administrator!"); print ("$enemy_name \n"); print ("<br /> \n"); print ("<img src=\"$image_root$enemy_id.gif\" alt=\"$enemy_name\" border=\"0\" />\n"); print ("<br /> \n"); print ("<br /> \n"); print ("$enemy_desc \n"); print ("<br /> \n"); print ("<br /> \n"); print ("$enemy_name has $enemy_hp hp.\n"); print ("<br /> \n"); print ("$enemy_name will drop item $enemy_item. \n"); print ("<br /> \n"); print ("<br /> \n"); print ("<input type=\"submit\" name=\"attack\" value=\"Attack $enemy_name\" />\n"); print ("<br /> \n"); print ("<br /> \n"); print ("<br /> \n"); print ("You have $adv adventures left. \n"); print ("</center>\n"); print ("</form>\n"); print ("</body>\n"); print ("</html>\n"); } else { // If the session is not set, redirect $filename = "index.php"; header("Location: ".$filename); } ?> Thanks, ~ Chocopi Quote Link to comment https://forums.phpfreaks.com/topic/53173-get-error-or-session-either-or/ Share on other sites More sharing options...
paul2463 Posted May 27, 2007 Share Posted May 27, 2007 Hi this part of the code is setting the enemy hp <?php // If post, deal damage to enemy and set sessions if($_POST) { $damage = 20; $enemy_hp = $_POST['enemy_hp']; $new_enemy_hp = $enemy_hp - $damage; $_SESSION['enemy_hp'] = "$new_enemy_hp"; $_SESSION['enemy_id'] = "$enemy_id"; $_SESSION['enemy_name'] = "$enemy_name"; $_SESSION['enemy_desc'] = "$enemy_desc"; $_SESSION['enemy_item'] = "$enemy_item"; } ?> could you do me a favour and put the following line of code above the $damage = 20; print_r($_POST); and see if the posted values are what you expect first of all because it seem that you are not getting anything posted across for $_POST['enemy_hp']; because it is taking 20 away from 0 and coming up, quite rightly with, -20. a couple of other points in your code though, wont help this problem but may help in the future, the lines are 43/44/75/76 and 109, all these lines start with the "@" symbol which suppresses errors then you tell it to tell you what the error is, try not to use this, good code will not throw errors anyway and errors are good for finding faults in bad code, just a piece of advice. Quote Link to comment https://forums.phpfreaks.com/topic/53173-get-error-or-session-either-or/#findComment-262749 Share on other sites More sharing options...
chocopi Posted May 27, 2007 Author Share Posted May 27, 2007 I dont think its showing anything. I have tried everything i know to get $enemy_hp to show up as its value when its posted but it wont work. The reason I have the @ is so users will only see the message "Invalid query, please contact an administrator!" instead of the actual error message. By the way, thanks for helping ~ Chocopi Quote Link to comment https://forums.phpfreaks.com/topic/53173-get-error-or-session-either-or/#findComment-262755 Share on other sites More sharing options...
paul2463 Posted May 27, 2007 Share Posted May 27, 2007 what printout do you get when you use the print_r() function??? Quote Link to comment https://forums.phpfreaks.com/topic/53173-get-error-or-session-either-or/#findComment-262759 Share on other sites More sharing options...
chocopi Posted May 27, 2007 Author Share Posted May 27, 2007 Array ( [attack] => Attack blah ) Quote Link to comment https://forums.phpfreaks.com/topic/53173-get-error-or-session-either-or/#findComment-262767 Share on other sites More sharing options...
paul2463 Posted May 27, 2007 Share Posted May 27, 2007 so it only sends attack through??? if so its the posting page thats at fault, or is the blah bit the rest of the post array? Quote Link to comment https://forums.phpfreaks.com/topic/53173-get-error-or-session-either-or/#findComment-262768 Share on other sites More sharing options...
chocopi Posted May 27, 2007 Author Share Posted May 27, 2007 the blah is the $enemy_name Quote Link to comment https://forums.phpfreaks.com/topic/53173-get-error-or-session-either-or/#findComment-262769 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.