Skip to content
Advertisement

Average Calculation for PHP with variable issue

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>
User contributions licensed under: CC BY-SA
3 People found this is helpful
Advertisement