未定义的变量:totalScore。如何定义此变量,因为它是计算的结果?

时间:2015-06-16 06:16:37

标签: php html aptana

以下是有问题的代码行。我需要定义$ totalScore,但不确定使用哪种方法,因为它是结果变量。我已经尝试将其设置为" 0" " "和" null",但这些值没有解决问题。这里的任何人都知道这个解决方案,所以我可以显示收到的成绩作为提醒吗?

if ($totalScore >= 900 && $totalScore <= 1000) {alert("Total Points of "+$totalScore+" gives you an A!");} 
        else if ($totalScore >= 800 && $totalScore <= 899) {alert("Total Points of "+$totalScore+" gives you an B!");}  
        else if ($totalScore >= 700 && $totalScore <= 799) {alert("Total Points of "+$totalScore+" gives you an C!");} 
        else if ($totalScore >= 600 && $totalScore <= 699) {alert("Total Points of "+$totalScore+" gives you an D!");} 
        else if ($totalScore >= 0 && $totalScore <= 599) {alert("Total Points of "+$totalScore+" gives you an F!");} } 

以下是其余代码供参考!

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);
?>  
<?php
if(isset($_POST['submit'])) {
$name = $_POST['StudentName'];
$quiz = (int)$_POST['QuizScore'];
$assignment = (int)$_POST['AssignmentScore'];
$midterm = (int)$_POST['MidtermScore'];
$final = (int)$_POST['FinalScore'];
$totalScore = NULL ;
$totalScore = $quiz + $assignment + $midterm + $final;
echo "Total Score: " , $totalScore; }
{
if ($totalScore >= 900 && $totalScore <= 1000) {alert("Total Points of "+$totalScore+" gives you an A!");} 
        else if ($totalScore >= 800 && $totalScore <= 899) {alert("Total Points of "+$totalScore+" gives you an B!");}  
        else if ($totalScore >= 700 && $totalScore <= 799) {alert("Total Points of "+$totalScore+" gives you an C!");} 
        else if ($totalScore >= 600 && $totalScore <= 699) {alert("Total Points of "+$totalScore+" gives you an D!");} 
        else if ($totalScore >= 0 && $totalScore <= 599) {alert("Total Points of "+$totalScore+" gives you an F!");} }  

?>
<!DOCTYPE html>
<html>
<head>
<body>
<div align='center'><form name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" >
<input type="text" id="studentName" size="25px" placeholder="Please enter your name" name="StudentName"><br><br>
Total of Quiz Scores (150 possible):<input type="text" id="QuizScore" name="QuizScore" min="1" max="150" size="5"/><br> 
Total of Assignment Scores (400 possible):<input type="text" id="AssignmentScore" name="AssignmentScore" min="1" max="400" size="5"><br> 
Midterm Score (200 possible):<input type="text" id="MidtermScore" name="MidtermScore" min="1" max="200" size="5"><br> 
Final Score (250 possible):<input type="text" id="FinalScore" name="FinalScore" min="1" max="250" size="5"><br> 
<input type="submit" value="Calculate your score" name="submit"><br><br>
</form></div>
</body>
</html>

4 个答案:

答案 0 :(得分:2)

看到这个。改进版本的代码

首先,你不能直接在里面使用javascript警报。

<?php
   if(isset($_POST['submit'])) 
   {
    $name = $_POST['StudentName'];
     $quiz = (int)$_POST['QuizScore'];
     $assignment = (int)$_POST['AssignmentScore'];
     $midterm = (int)$_POST['MidtermScore'];
     $final = (int)$_POST['FinalScore'];
    $totalScore = 0;;
    $totalScore = $quiz + $assignment + $midterm + $final;
     // echo "Total Score: " , $totalScore; 
     if ($totalScore >= 900 && $totalScore <= 1000) { 
        $message = "Total Points of ".$totalScore." gives you an A!"; 
    } 
    else if ($totalScore >= 800 && $totalScore <= 899) { 
        $message = "Total Points of ".$totalScore." gives you an B!" ;
   }  
    else if ($totalScore >= 700 && $totalScore <= 799) { 
        $message = "Total Points of ".$totalScore." gives you an C!"; 
    } 
   else if ($totalScore >= 600 && $totalScore <= 699) { 
        $message = "Total Points of ".'.$totalScore.'." gives you an D!"; 
   } 
    else if ($totalScore >= 0 && $totalScore <= 599) { 
        $message = "Total Points of ".$totalScore." gives you an F!";
    } 
   echo '<script type="text/javascript">  alert("'.$message.'");        </script>'; 
  }
   ?>

<html>
<head>
<body>
<div align='center'><form name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" >

 <input type="text" id="studentName" size="25px" placeholder="Please enter your name" name="StudentName"><br><br>

 Total of Quiz Scores (150 possible):<input type="text" id="QuizScore" name="QuizScore" min="1" max="150" size="5"/><br> 

 Total of Assignment Scores (400 possible):<input type="text" id="AssignmentScore" name="AssignmentScore" min="1" max="400" size="5"><br>

 Midterm Score (200 possible):<input type="text" id="MidtermScore" name="MidtermScore" min="1" max="200" size="5"><br> 

  Final Score (250 possible):<input type="text" id="FinalScore" name="FinalScore" min="1" max="250" size="5"><br> 

 <input type="submit" value="Calculate your score" name="submit">
 <br><br>
 </form>
 </div>
 </body>
</html>

答案 1 :(得分:1)

当条件<?php echo "<td>" ?> <div class="image"> <a href="delete.php?id='<?php $id; ?>'" onclick=" "><span class="close" name="delete_row" >&times;</span> <img width="100px" alt="" src="<?php echo $image; ?>" id="<?php $id; ?>"> </a> <input type="hidden" name="id_to_be_deleted" value="<?php echo $id; ?>" /> </div> </td> 为false时,不会初始化变量$totalScore,因为代码中的if(isset($_POST['submit'])){太多了。所以我会检查为什么没有设置post变量},更重要的是,在另一种情况下初始化变量。

答案 2 :(得分:1)

您只是在提交表单时初始化$totalScore,首先您应该从开始使用null初始化

<?php
  $totalScore = null;

  if (isset($_POST['submit']) {
     //...
  } elseif ($totalScore && (/*your initial conditions*/)) {
     //calculate marks
  }

如果您想要更清洁的设计,我建议您使用Ajax,作为回应,您会提醒结果;

答案 3 :(得分:0)

我做了一些更改,请查看下面的代码,实际上你必须在发布条件之前声明$ totalscore,整个代码应该处于条件状态。

<?php
 $totalScore= 0;
if(isset($_POST['submit'])) {
$name = $_POST['StudentName'];
$quiz = (int)$_POST['QuizScore'];
$assignment = (int)$_POST['AssignmentScore'];
$midterm = (int)$_POST['MidtermScore'];
$final = (int)$_POST['FinalScore'];
global $totalScore;
$totalScore = $quiz + $assignment + $midterm + $final;
echo "Total Score: " , $totalScore; 

if ($totalScore >= 900 && $totalScore <= 1000) {alert("Total Points of "+$totalScore+" gives you an A!");} 
        else if ($totalScore >= 800 && $totalScore <= 899) {alert("Total Points of "+$totalScore+" gives you an B!");}  
        else if ($totalScore >= 700 && $totalScore <= 799) {alert("Total Points of "+$totalScore+" gives you an C!");} 
        else if ($totalScore >= 600 && $totalScore <= 699) {alert("Total Points of "+$totalScore+" gives you an D!");} 
        else if ($totalScore >= 0 && $totalScore <= 599) {alert("Total Points of "+$totalScore+" gives you an F!");} }  

?>