silverglade Posted January 20, 2010 Share Posted January 20, 2010 hi, i am trying to test a variable , i have $vote=$vote++; in one if statement, and echo $vote; in another if statement , but the second $vote is not echoing out. do i have to make $vote global or something? any help greatly appreciated. here is the code. first if if(isset($_POST['Submit'])){ $votes=$votes++; if ($average <= 1) { $grade = "F"; echo "You have given $field2 a grade of <strong>F.</strong> "; } else if ($average > 1 && $average <= 2) { $grade = "D"; echo "You have given $field2 a grade of <strong>D.</strong> "; } else if ($average > 2 && $average <= 3) { $grade = "C"; echo "You have given $field2 a grade of <strong>C.</strong> "; } else if ($average > 3 && $average <= 4) { $grade = "B"; echo "You have given $field2 a grade of <strong>B.</strong> "; } else if ($average > 4 && $average <= 5) { $grade = "A"; echo "You have given $field2 a grade of <strong>A.</strong> "; } second if if(mysql_num_rows($result) > 0) { $userinfo = mysql_fetch_array($result); //put friends row into an array $userinfo $final_grade= ($userinfo[1]+$userinfo[2]+$userinfo[3]+$userinfo[4])/4; //compute final grade echo $votes; //average the SQL output friend's total grade for all users input if ($final_grade <= 1) { echo $userinfo[0] ." has an average grade of <strong>F.</strong> "; } else if ($final_grade > 1 && $final_grade <= 2) { echo $userinfo[0] ." has an average grade of <strong>D.</strong> "; } else if ($final_grade > 2 && $final_grade <= 3) { echo $userinfo[0]." has an average grade of <strong>C.</strong> "; } else if ($final_grade > 3 && $final_grade <= 4) { echo $userinfo[0]." has an average grade of <strong>B.</strong> "; } else if ($final_grade > 4 && $final_grade <= 5) { echo $userinfo[0]." has an average grade of <strong>A.</strong> "; } else { echo "Odd results ".$userinfo[0]." $final_grade ".$userinfo[1]." ".$userinfo[2]." ".$userinfo[3]." ".$userinfo[4]."<br />"; } }//end if }//end isset Quote Link to comment https://forums.phpfreaks.com/topic/189210-variable-scope-question/ Share on other sites More sharing options...
wildteen88 Posted January 20, 2010 Share Posted January 20, 2010 You have more of a logic issue. The variables $votes will only be defined/incremented when your form for submitting a vote is submitted. If no form is submitted then the variable $vote will not be defined/incremented. Quote Link to comment https://forums.phpfreaks.com/topic/189210-variable-scope-question/#findComment-998901 Share on other sites More sharing options...
silverglade Posted January 20, 2010 Author Share Posted January 20, 2010 thank you. when i submit the vote, the $votes is supposed to be incremented, and then shown in the second if statement. but i cant figure out why my code doesnt work. is my code right? please. thanks. derek here is the full code <?php include("connect1.php"); error_reporting(E_ALL); //error reporting php function //////////////////////////////////////// //////////////////////////////////////// // escape username and password for use in SQL//person said on board "looks fine" like this //to prevent sql injections $field2 = mysql_real_escape_string($field2); $field3 = mysql_real_escape_string($field3); /// query db and loop through rows example $field2 = $_POST['friend']; $field3 = $_POST['zip']; $field4 = $_POST['grade1']; $field5 = $_POST['grade2']; $field6 = $_POST['grade3']; $field7 = $_POST['grade4']; $find = $_POST['find']; $field4 = (int)$field4; $field5 = (int)$field5; $field6 = (int)$field6; $field7 = (int)$field7; $total = 4; $sum = $field4 + $field5 + $field6 + $field7; $average = $sum/$total; if(isset($_POST['Submit'])){ $votes=$votes++; if ($average <= 1) { $grade = "F"; echo "You have given $field2 a grade of <strong>F.</strong> "; } else if ($average > 1 && $average <= 2) { $grade = "D"; echo "You have given $field2 a grade of <strong>D.</strong> "; } else if ($average > 2 && $average <= 3) { $grade = "C"; echo "You have given $field2 a grade of <strong>C.</strong> "; } else if ($average > 3 && $average <= 4) { $grade = "B"; echo "You have given $field2 a grade of <strong>B.</strong> "; } else if ($average > 4 && $average <= 5) { $grade = "A"; echo "You have given $field2 a grade of <strong>A.</strong> "; } ///you need to know all the vote values, then divide them by the total, to get average ///where do i store all the vote values? you have to store all the votes for each specific friend. but how? then i have to be able to update the grade based on all the averages. /*Quick suggestion without too much thought, would be to have all the "grades" in a separate table and join them on the userid. id - numeric - [record number] uid - numeric [FK for user table] type - char - [code to identify which grade] value - numeric - [value for the grading] vid - numeric - [id of voter] that covers another of your questions. How to stop fake voting.*/ mysql_query("INSERT INTO friendgrade (grade, friend, zip,courtesy,stability,loyalty,attitude, votes) VALUES('$field2','$field3', '$field4' , '$field5',' $field6', '$field7','$votes' ) ON DUPLICATE KEY UPDATE courtesy = courtesy + $field4, stability = stability + $field5, loyalty = loyalty + $field6, attitude = attitude + $field7"); }//end isset //output the friend's row into an array and average all rows of his attributes. if(isset($_POST['submit'])){ $query="SELECT friend, loyalty, courtesy, stability, attitude , votes FROM friendgrade WHERE friend = '$find'"; $result=mysql_query($query); if(mysql_num_rows($result) > 0) { $userinfo = mysql_fetch_array($result); //put friends row into an array $userinfo $final_grade= ($userinfo[1]+$userinfo[2]+$userinfo[3]+$userinfo[4])/4; //compute final grade //average the SQL output friend's total grade for all users input if ($final_grade <= 1) { echo $userinfo[0] ." has an average grade of <strong>F.</strong> ". $userinfo[5] . " people voted."; } else if ($final_grade > 1 && $final_grade <= 2) { echo $userinfo[0] ." has an average grade of <strong>D.</strong> ". $userinfo[5] . " people voted."; } else if ($final_grade > 2 && $final_grade <= 3) { echo $userinfo[0]." has an average grade of <strong>C.</strong> ". $userinfo[5] . " people voted."; } else if ($final_grade > 3 && $final_grade <= 4) { echo $userinfo[0]." has an average grade of <strong>B.</strong> ". $userinfo[5] . " people voted."; } else if ($final_grade > 4 && $final_grade <= 5) { echo $userinfo[0]." has an average grade of <strong>A.</strong> ". $userinfo[5] . " people voted."; } else { echo "Odd results ".$userinfo[0]." $final_grade ".$userinfo[1]." ".$userinfo[2]." ".$userinfo[3]." ".$userinfo[4]."<br />"; } }//end if }//end isset ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Update Statement</title> <style type="text/css"> <!-- .style1 {color: #990000} .style2 {color: #0066FF} .style3 {color: #0000CC} .style4 {color: #993399} --> </style> </head> <body> </p> <div align="center">WELCOME TO THE FRIENDGRADER</div> <p>Please enter a friend, their zip code, and rate them with the following criteria.<span class="style4"></span><br /> </p> <form id="form1" name="form1" method="post" action=""> <table border="0"> <tr> <td>Friend</td> <td> <input name="friend" type="text" id="friend" /></td> </tr> <tr> <td>zip code</td> <td> <input name="zip" type="text" id="zip" /> </td> </tr> <tr> <td>courtesy</td> <td><table> <tr> <td> <input type="radio" name="grade1" value="1" id="RadioGroup1_0" /> very poor <input type="radio" name="grade1" value="2" id="RadioGroup1_1" /> poor <input type="radio" name="grade1" value="3" id="RadioGroup1_2" /> ok <input type="radio" name="grade1" value="4" id="RadioGroup1_3" /> good <input type="radio" name="grade1" value="5" id="RadioGroup1_4" /> excellent </td> </tr> </table> </td> </tr> <tr> <td>stability</td> <td><input type="radio" name="grade2" id="very_poor3" value="1" /> very poor <input type="radio" name="grade2" id="poor3" value="2" /> poor <input type="radio" name="grade2" id="ok3" value="3" /> ok <input type="radio" name="grade2" id="good3" value="4" /> good <input type="radio" name="grade2" id="excellent3" value="5" /> excellent</td> </tr> <tr> <td>loyalty</td> <td><input type="radio" name="grade3" id="very_poor4" value="1" /> very poor <input type="radio" name="grade3" id="poor4" value="2" /> poor <input type="radio" name="grade3" id="ok4" value="3" /> ok <input type="radio" name="grade3" id="good4" value="4" /> good <input type="radio" name="grade3" id="excellent4" value="5" /> excellent</td> </tr> <tr> <td>attitude</td> <td><input type="radio" name="grade4" id="very_poor5" value="1" /> very poor <input type="radio" name="grade4" id="poor5" value="2" /> poor <input type="radio" name="grade4" id="ok5" value="3" /> ok <input type="radio" name="grade4" id="good5" value="4" /> good <input type="radio" name="grade4" id="excellent5" value="5" /> excellent</td> </tr> <tr> <td> </td> <td><input type="submit" name="Submit" value="Submit" /></td> </tr> </table> </form> <form id="form2" name="form2" method="post" action=""> <table width="335" border="1"> <tr> <td width="325"> search friends <input type="text" name="find" id="find" /> </td> </tr> <tr> <td><input type="submit" name="submit" id="submit" value="submit" /></td> </tr> </table> </form> </body> </html> Quote Link to comment https://forums.phpfreaks.com/topic/189210-variable-scope-question/#findComment-998903 Share on other sites More sharing options...
wildteen88 Posted January 20, 2010 Share Posted January 20, 2010 I cant tell from just those two snippets. Where is the variable $votes originally defined? Can I see more code. EDIT: Ignore Quote Link to comment https://forums.phpfreaks.com/topic/189210-variable-scope-question/#findComment-998907 Share on other sites More sharing options...
wildteen88 Posted January 20, 2010 Share Posted January 20, 2010 You'll want to use $votes = $userinfo['votes']; after this line $userinfo = mysql_fetch_array($result); //put friends row into an array $userinfo Quote Link to comment https://forums.phpfreaks.com/topic/189210-variable-scope-question/#findComment-998913 Share on other sites More sharing options...
silverglade Posted January 20, 2010 Author Share Posted January 20, 2010 thank you, but it doesnt output anything when i added that code. i submit the "friend" attributes and do a $votes++, then i add them to the database here, including $votes. mysql_query("INSERT INTO friendgrade (grade, friend, zip,courtesy,stability,loyalty,attitude, votes) VALUES('$field2','$field3', '$field4' , '$field5',' $field6', '$field7','$votes' ) ON DUPLICATE KEY UPDATE courtesy = courtesy + $field4, stability = stability + $field5, loyalty = loyalty + $field6, attitude = attitude + $field7"); then when i search for a "friend" via the form, the output is supposed to be "(friend name) has been given an average of A" 10 people voted." or something similar that was just an example. any more help GREATLY appreciated. thank you for looking at my code. derek if you want you can try out the page here http://oddnerdrum.info/friendgrade_a2.php Quote Link to comment https://forums.phpfreaks.com/topic/189210-variable-scope-question/#findComment-998942 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.