2014-01-18 148 views
0

我正在創建我的第一個PHP腳本,用於測試用戶的顱神經聯繫;具體而言,顱神經的名稱被顯示給用戶,並且他們應該點擊對應於顱神經名稱的正確數字。正在顯示PHP問答遊戲的正確答案

我會先發布我的代碼和我的問題後:

<?php 

$generated_nerve_number = mt_rand(1,12); 
switch($generated_nerve_number) { 
    case '1': 
     echo "Olfactory"; 
     break; 

    case '2': 
     echo "Optic"; 
     break; 

    case '3': 
     echo "Oculomotor"; 
     break; 

    case '4': 
     echo "Trochlear"; 
     break; 

    case '5': 
     echo "Trigeminal"; 
     break; 

    case '6': 
     echo "Abducens"; 
     break; 

    case '7': 
     echo "Facial"; 
     break; 

    case '8': 
     echo "Vestibulocochlear"; 
     break; 

    case '9': 
     echo "Glossopharyngeal"; 
     break; 

    case '10': 
     echo "Vagus"; 
     break; 

    case '11': 
     echo "Accessory"; 
     break; 

    case '12': 
     echo "Hypoglossal"; 
     break; 
} 


?> 
<html> 
<head> 
    <title>Cranial Nerves Test</title> 
</head> 
<body> 
    <p>Select the cranial nerve number below associated with the name of the cranial nerve given above:</p> 
    <form action="cranial.php" method="POST"> 
     <?php 
      echo "Cranial Number: "; 
      for($i = 1; $i <= 12; $i++) { 
       echo "<input type=\"submit\" name=\"nerve_$i\" class=\"nerve_number\" value=\"$i\">"; 
      } 

     ?> 

     <?php 
       $submit = (isset($_POST['nerve_' . $i])) ? $_POST['nerve_' . $i] : NULL; 
       if($submit) { 
        $selected_nerve_number = $_POST['nerve_' . $i]; 
        if($generated_nerve_number == $selected_nerve_number) { 
         echo "That is correct!"; 
        } else { 
         echo "Sorry that is incorrect."; 
        } 
       } 
     ?> 
    </form> 
</body></html> 

我的思維過程的簡要概述:我隨機產生1-12之間的數字,並使用switch語句,這個數字將呼應顱神經的名字。我使用了for循環來生成提交按鈕,其名稱包含與其顯示值相對應的顱神經數量。最後,我檢查答案是否正確的計劃是使用if語句將隨機生成的數字與所選數字進行比較,如果是,則輸出一條消息,說明它們是正確的。

這是問題出現的地方:當我點擊任何按鈕時,無論是否正確答案,頁面都會刷新,而不會對答案是對還是錯。有人可以指出缺陷嗎?

此外,如果在此腳本中有某種更優化的方法,請讓我知道。

在此先感謝。

+0

你創建12個輸入[type = submit] ... – voodoo417

回答

1

這種方法存在一個小問題。您的腳本實際上有兩個步驟需要考慮:首先,用隨機選擇的顱神經向客戶端發送一個頁面,然後將選擇與隨機指定的內容進行比較。

如果你希望你的腳本這樣做,你必須添加一些邏輯,以便它知道它必須有不同的反應。

if (isset($_POST)) 
{/*compare the user choice with what you had sent. 
    you will have to do add an input to your form containing the random value AND the chosen value, or you eon't be able to compare them*/} 

目前,你正在做這一切在一次,比如,你要比較你的用戶的返回值之前,你甚至在您的文章得到它!瞭解一旦發送到客戶端(瀏覽器),您的頁面不再與PHP鏈接。所以在這裏:

if($generated_nerve_number == $selected_nerve_number) { 

你實際上是比較你剛纔生成的隨機數,你會從你的用戶在未來的答案,因爲他甚至沒有看到它在屏幕上尚未:)

+0

我很欣賞反饋。這樣一個簡單的錯誤。出於好奇,如果我要在單獨的PHP文件中檢查用戶的答案,但是希望將它們發回給遊戲以繼續,那麼我可以使用頭文件(「Location:cranial.php」)?還是有更好的方法來做到這一點?最後,在一個真正的HTML表單中,您只有1個提交按鈕。在這樣的遊戲中,你是否想要像我一樣使用12個不同的按鈕?或者你想用數字1-12做一個下拉列表,只有一個提交按鈕?謝謝! – snake117

+0

那麼,您可以通過隱藏輸入(type =「hidden」)將答案發送給客戶端,並使用javascript驗證用戶選擇的答案是否與輸入值相對應。 Google AJAX和jQuery,這些都是功能強大的工具,未來可能會有用。否則,我是一名程序員,而不是設計師,所以我不會推薦你一種或另一種方式。如果你覺得它很醜,那很可能是,如果不是,那很可能。 –

相關問題