Morning Everyone,
I am trying to troubleshoot this code. I have made progress, but I am doing a simple average calculation. When I try and declare a variable before using it I have issues. When I try to just use it I get errors saying declare a variable.
Any idea what I am doing incorrectly on the $Average portion. I either can’t render the page or I get 0.00 because when I declare the variable I don’t have an input for it yet.
<?php // get the data from the form $first = filter_input(INPUT_POST, 'first'); $last = filter_input(INPUT_POST, 'last'); $one = filter_input(INPUT_POST, 'one', FILTER_VALIDATE_FLOAT); $two = filter_input(INPUT_POST, 'two', FILTER_VALIDATE_FLOAT); $three = filter_input(INPUT_POST, 'three', FILTER_VALIDATE_FLOAT); //var = $Average ; $Sum = filter_input(INPUT_POST, 'Sum'); // validate Score one if ($one === FALSE ) { $error_message = 'Score one must be a valid number.'; } else if ( $one < 0 ) { $error_message = 'Score one cannot be less than zero.'; // validate Score two if ($two === FALSE ) { $error_message = 'Score two must be a valid number.'; } else if ( $two < 0 ) { $error_message = 'Score two cannot be less than zero.'; // validate Score three if ($three === FALSE ) { $error_message = 'Score three must be a valid number.'; } else if ( $three < 0 ) { $error_message = 'Score three cannot be less than zero.'; // set error message to empty string if no invalid entries } else { $error_message = ''; } // if an error message exists, go to the index page if ($error_message != '') { include('index.php'); exit(); } // calculate the average score //$Sum = $one; + $two; + $three; //$Average = $Sum / 3;}} $Average = ($one + $two + $three)/3;}} $Average = number_format($Average, 2); ?> <!DOCTYPE html> <html> <head> <title>Assignment 2</title> <link rel="stylesheet" type="text/css" href="main.css"/> </head> <body> <main> <h1>Assignment 2</h1> <label>Student Name:</label> <span><?php echo $first; ?></span><span><?php echo " ", $last; ?></span><br /> <label>Your Scores:</label> <span><?php echo $one, ","; ?></span> <span><?php echo $two, ","; ?></span> <span><?php echo $three; ?></span><br /> <label>Average:</label> <span><?php echo $Average; ?></span><br /> </main> </body> </html>
Advertisement
Answer
In your if else codes , your values can’t arrive calculation line. I edited this part and include isset for $one , $two , $three :
<?php // get the data from the form $first = filter_input(INPUT_POST, 'first'); $last = filter_input(INPUT_POST, 'last'); $one = filter_input(INPUT_POST, 'one', FILTER_VALIDATE_FLOAT); $two = filter_input(INPUT_POST, 'two', FILTER_VALIDATE_FLOAT); $three = filter_input(INPUT_POST, 'three', FILTER_VALIDATE_FLOAT); //var = $Average ; $Sum = filter_input(INPUT_POST, 'Sum'); if(!isset($one)){$one=0;}else{$error_message ='You must enter a value';} if(!isset($two)){$two=0;}else{$error_message ='You must enter a value';} if(!isset($three)){$three=0;}else{$error_message ='You must enter a value';} // validate Score one if ($one === FALSE ) { $error_message = 'Score one must be a valid number.'; } else if ( $one < 0 ) { $error_message = 'Score one cannot be less than zero.'; // validate Score two} } if ($two === FALSE ) { $error_message = 'Score two must be a valid number.'; } else if ( $two < 0 ) { $error_message = 'Score two cannot be less than zero.'; // validate Score three } if ($three === FALSE ) { $error_message = 'Score three must be a valid number.'; } else if ( $three < 0 ) { $error_message = 'Score three cannot be less than zero.'; // set error message to empty string if no invalid entries } else { $error_message = ''; } // if an error message exists, go to the index page if ($error_message != '') { include('index.php'); exit(); } // calculate the average score //$Sum = $one; + $two; + $three; //$Average = $Sum / 3;}} $Average = ($one + $two + $three)/3; $Average = number_format($Average, 2); ?> <!DOCTYPE html> <html> <head> <title>Assignment 2</title> <link rel="stylesheet" type="text/css" href="main.css"/> </head> <body> <main> <h1>Assignment 2</h1> <label>Student Name:</label> <span><?php echo $first; ?></span><span><?php echo " ", $last; ?></span><br /> <label>Your Scores:</label> <span><?php echo $one, ","; ?></span> <span><?php echo $two, ","; ?></span> <span><?php echo $three; ?></span><br /> <label>Average:</label> <span><?php echo $Average; ?></span><br /> </main> </body> </html>