2017-03-09 112 views
0

我需要做這個練習:級計算器

創建一個函數workOutGradeAv - 這種方法將在一些檔次閱讀,然後制定出並顯示平均品位。

顯示有意義的介紹性消息。 1.1在代碼中稍後聲明您需要的任何變量。

1.2在HTML表單的5個單獨的輸入框中顯示一條消息,要求輸入5個等級。你也應該解釋,他們應該每行輸入一個等級 1.3除非所有5個字段輸入正確並且在等級範圍內,否則不應該提交表格

1.4使用do循環控制程序流程):

1.4.1從輸入表格讀取成績到變量。 1.4.2(使用邏輯運算符)條件語句(If)檢查等級是否在0到101範圍之外(使用布爾或),​​如果是,則輸出錯誤消息。 1.4.3否則,如果等級不是101,則將等級添加到您的總計

。 結束循環並檢查分數是不是101

1.5計算平均分數並用合適的消息顯示結果。

我的代碼是這樣的: Assess1Grades.php

<!doctype html> 
<html> 
    <head> 
     <title>Grade Assessor</title> 
    </head> 

    <body> 
     <h2>Grade Assessor<h2> 
     <table border="1"> 
      <tr> 
       <td> 
        <table> 
         <form action="grades.php" method="post"> 
          <tr> 
           <td> 
            Enter 5 grades. One per each line: 
           </td> 
          </tr> 
          <tr> 
           <td> 
            Grade 1: <input type="number" name="grade1" required> 
           </td> 
          </tr> 
          <tr> 
           <td> 
            Grade 2: <input type="number" name="grade2" required> 
           </td> 
          </tr> 
          <tr> 
           <td> 
            Grade 3: <input type="number" name="grade3" required> 
           </td> 
          </tr> 
          <tr> 
           <td> 
            Grade 4: <input type="number" name="grade4" required> 
           </td> 
          </tr> 
          <tr> 
           <td> 
            Grade 5: <input type="number" name="grade5" required> 
           </td> 
          </tr> 
          <tr> 
           <td align="center"> 
            <input type="submit"> 
           </td> 
          </tr> 
         </form> 
        </table> 
       </td> 
      </tr> 
     </table> 
    </body> 
</html> 

grades.php

<!doctype html> 
<html> 

    <head> 
     <title>Grade Assessor</title> 
    </head> 

    <body> 
     <h2>Grade Assessor<h2> 
     <table border="1"> 
      <tr> 
       <td> 
        <table> 
         <tr> 
          <td> 
           The Average grade is: 
          </td> 
          <td> 
           <?php 
           function workOutGradeAv() { 
            $averagegrade=$grades/5; 
            echo "$averagegrade"; 
           } 
           $grades=0; 
           do { 
            if ($_Post["grade1"] < 0 or $_Post["grade1"] > 101) { 
             echo "Error! Check Input."; 
            } elseif ($_Post["grade2"] < 0 or $_Post["grade2"] > 101) { 
             echo "Error! Check Input."; 
            } elseif ($_Post["grade3"] < 0 or $_Post["grade3"] >101) { 
             echo "Error! Check Input."; 
            } elseif ($_Post["grade4"] < 0 or $_Post["grade4"] >101) { 
             echo "Error! Check Input."; 
            } elseif ($_Post["grade5"] < 0 or $_Post["grade5"]>101) { 
             echo "Error! Check Input."; 
            } else { 
             $grades = $grades + $_Post["grade1"] + $_Post["grade2"] + $_Post["grade3"] + $_Post["grade4"] + $_Post["grade5"]; 
            } 
           } 
           while ($_Post["grade1"]!= 101); 
           workOutGradeAv(); 
           ?> 
          </td> 
         </tr> 
        </table> 
       </td> 
      </tr> 
     </table> 
    </body> 
</html> 

當我提交表單的輸出只是「平均品位」,也沒有結果。我究竟做錯了什麼?

感謝

+0

佩德羅,什麼是$ _Post? $ _Post未定義...您應該使用$ _POST(全部大寫)。我假設你沒有打開錯誤報告,請打開錯誤報告。 –

+0

首先,您正在使用$ _Post ...它應該是:$ _POST。 PHP區分大小寫。 http://php.net/manual/en/reserved.variables.post.php – valicu2000

+1

感謝崩潰我的瀏覽器... while循環做什麼? –

回答

1

你有多個錯誤在grades.php

1)刪除不必要do while

2)更換$_Post$_POSTPHP是區分大小寫的語言。

3)要顯示功能級別,您必須聲明grades爲全局。或者將它作爲參數傳遞。

<!doctype html> 
<html> 

<head> 
<title>Grade Assessor</title> 
</head> 

<body> 
<h2>Grade Assessor<h2> 
<table border="1"> 
<tr> 
<td> 
<table> 
<tr> 
<td> 
The Average grade is: 
</td> 
<td> 
<?php 

function workOutGradeAv($grades) { 

$averagegrade=$grades/5; 
echo "$averagegrade"; 
} 
$grades=0; 

if ($_POST["grade1"] < 0 || $_POST["grade1"] > 101) { 
echo "Error! Check Input."; 
} elseif ($_POST["grade2"] < 0 or $_POST["grade2"] > 101) { 
echo "Error! Check Input."; 
} elseif ($_POST["grade3"] < 0 or $_POST["grade3"] >101) { 
echo "Error! Check Input."; 
} elseif ($_POST["grade4"] < 0 or $_POST["grade4"] >101) { 
echo "Error! Check Input."; 
} elseif ($_POST["grade5"] < 0 or $_POST["grade5"]>101) { 
echo "Error! Check Input."; 
} else { 
$grades = $grades + $_POST["grade1"] + $_POST["grade2"] + $_POST["grade3"] + $_POST["grade4"] + $_POST["grade5"]; 
} 

workOutGradeAv($grades); 
?> 
</td> 
</tr> 
</table> 
</td> 
</tr> 
</table> 
</body> 
</html> 
+0

謝謝。但其中一個標準就是「循環」。 1.4 \t使用do循環(來控制程序流程): 1.4。1 \t將輸入表格中的成績讀入變量。 1.4.2 \t(使用邏輯運算符)條件語句(If)來檢查等級是否在0到101範圍之外(使用布爾OR),如果是,則輸出錯誤消息。 1.4.3 \t否則,如果等級不是101,則將等級添加到總共 。 –