【问题标题】:Undefined variable: totalScore. How do I define this variable since it is a result of a calculation?未定义变量:totalScore。我如何定义这个变量,因为它是计算的结果?
【发布时间】:2015-06-16 06:16:37
【问题描述】:

这是有问题的代码行。我需要定义 $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>

【问题讨论】:

  • 这是因为global这个词。只需$totalScore = null ; 就可以了
  • 只需分配 $totalScore = 0;或 $totalScore = null;
  • @Faradox 仍然收到未定义的变量通知
  • @ManojK 对于 $totalScore 的所有实例仍然收到相同的通知
  • 为什么在 php 脚本中使用alert() 函数?

标签: php html aptana


【解决方案1】:

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

首先你不能直接在里面使用javascript alert。

<?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>

【讨论】:

  • 而且这段代码没有未定义的变量:totalScore 警告/错误
  • 原来如此!谢谢!
【解决方案2】:

变量$totalScore不会被初始化,当这个条件if(isset($_POST['submit']))为假时,因为你的代码中有太多的{}。所以我会检查为什么没有设置post变量submit,更重要的是,在其他情况下也要初始化变量。

【讨论】:

    【解决方案3】:

    只有在提交表单时才初始化$totalScore,首先你应该从一开始就用null初始化它

    <?php
      $totalScore = null;
    
      if (isset($_POST['submit']) {
         //...
      } elseif ($totalScore && (/*your initial conditions*/)) {
         //calculate marks
      }
    

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

    【讨论】:

      【解决方案4】:

      我做了一些更改,请看下面的代码,实际上你必须在你的 post 条件之前声明 $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!");} }  
      
      ?>

      【讨论】:

      • 你如何在 php 中使用 + 来警告,在 php.ini 中是(加法运算符)。您的代码将给出未定义函数警报()的错误
      • @kevin 代码现在运行,它的 else if 语句部分出现此错误 总分:813 致命错误:调用 /home/jamcgraw/public_html/index1 中的未定义函数 alert()。第 18 行的 php
      • @user9018 你能跑吗。我发布的答案中的代码。
      • 对于提醒用户 Meenesh Jain 的解决方案,最好将您的消息存储在一个变量中,毕竟条件只是用它回显
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-20
      • 2019-08-01
      • 2021-12-28
      • 1970-01-01
      • 2011-06-11
      • 2014-12-05
      相关资源
      最近更新 更多