2013-12-12 17 views
2

好的,所以我一直在這工作了兩天 - 我的代碼有點草率&混亂,但我已經超過了數百個問題,網站等。等尋找答案或只是我理解的解釋;不幸的是,我的努力仍然不成功。PHP/MySQL「測驗」遊戲 - 表單輸入值

我建立在PHP/HTML一個「測驗」遊戲 - 網頁引用了一個數據庫,具體地說,提交討論標記爲「答案」,它擁有以下信息:

- ID: Auto-Increment 
- Question: Varchar 
- Answer: Varchar 
- Comment: Varchar 

現在,對於一些信息在網站上 - 一旦用戶登錄,他/她可以「玩」遊戲;遊戲只是一個HTML表單,它在上面顯示了一個隨機的「答案表」問題。該表格有4個用戶輸入,但只需要兩個。讓我進入代碼的細節,然後我會問我的問題:

我的index.php頁面(其中包含遊戲形式)是目前:

<?php # index.php 
session_start(); 
    //check session first 
    if (!isset($_SESSION['email'])){ 
    include ('../includes/header.php'); 
    }else 
     { 
    session_start(); 
     include ('../includes/header.php'); 
     require_once ('../../mysql_connect.php'); 
     $query = "SELECT * FROM answers ORDER BY RAND() LIMIT 1"; 
     $result = @mysql_query ($query); 
     $num = mysql_num_rows($result); 
     if ($num > 0) { // If it ran OK, display all the records. 
      while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {   
?> 

<div class="newGame"> 
    <h2>Are you a Question Master?<hr /></h2> 
    <h3 style="color:#000">Find Out Now!</h3> 
</div> 
<br /> 

<div class="newGameContain"> 
    <form action="gameSubmit.php" method="post" autocomplete="off"> 
     <h2><? echo $row["Question"]."<hr />"; ?></h2> 
     <h3>Enter Player Answers</h3> 
      <p><input type="text" placeholder="Player 1" name="player1" value="<? echo $_POST['player1']; ?>" /> <input type="text" placeholder="Player 2" name="player2" value="<? echo $_POST['player2']; ?>" /></p> 
      <p><input type="text" placeholder="Player 3" name="player3" value="<? echo $_POST['player3']; ?>" /> <input type="text" placeholder="Player 4" name="player4" value="<? echo $_POST['player4']; ?>" /></p> 
      <p><input type="submit" class="submitButton" /> <input type="reset" class="resetButton" value="Reset" /> </p> 
      <input type="hidden" name="ID" value="<?php echo $row["ID"]; ?>" /> 
      <input type="hidden" name"Answer" value="<?php echo $row['Answer']; ?>" /> 
      <input type="hidden" name="submitted" value="TRUE" /> 
    </form> 
    <p></p> 
    </div> 
    <br /> 


<?php 
    } //end while statement 
} //end if statement 
mysql_close(); 
//include the footer 
include ("../includes/footer.php"); 
} 
?> 

然後我gameSubmit.php頁面(表單操作)看起來是這樣的 - 我只會給一個快照,而不是整個事情:

<?php # index.php 
session_start(); 
//check session first 
if (!isset($_SESSION['email'])){ 
    include ('../includes/header.php'); 
}else 
    { 
session_start(); 
include ('../includes/header.php'); 
require_once ('../../mysql_connect.php'); 
$query = "SELECT * FROM answers ORDER BY RAND() LIMIT 1"; 
$result = @mysql_query ($query); 
$num = mysql_num_rows($result); 
if ($num > 0) { // If it ran OK, display all the records. 
    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {   
?> 

<? if (isset($_POST['submitted'])){ 

     $correct1Msg = "<div class='correct1Msg'><p style='color:#000;font-family:Arial, Helvetica, sans-serif;'>Player 1 entered the <span id='answerUnder'>correct answer</span>.</p></div><p></p>"; 
     $correct2Msg = "<div class='correct2Msg'><p style='color:#000;font-family:Arial, Helvetica, sans-serif;'>Player 2 entered the <span id='answerUnder'>correct answer</span>.</p></div><p></p>"; 

     $incorrect1Msg = "<div class='incorrect1Msg'><p style='color:#F00;font-family:Arial, Helvetica, sans-serif;'>Player 1 entered the <span id='answerUnder'>incorrect answer</span>.</p></div><p></p>"; 
     $incorrect2Msg = "<div class='incorrect2Msg'><p style='color:#F00;font-family:Arial, Helvetica, sans-serif;'>Player 2 entered the <span id='answerUnder'>incorrect answer</span>.</p></div><p></p>"; 

      $player1Answer = $_POST['player1']; 
      $player2Answer = $_POST['player2']; 
      $player3Answer = $_POST['player3']; 
      $player4Answer = $_POST['player4']; 

      $questionID = $row['ID']; 

    if ($questionID == "1" && $player1Answer != "Red"){ 
     echo $incorrect1Msg; 
    }elseif ($questionID == "2" && $player1Answer != "4"){ 
     echo $incorrect1Msg; 
    }else { 
     echo $correct1Msg; 
    } 

    if ($questionID == "1" && $player2Answer == "Red"){ 
     echo $correct2Msg; 
    }elseif ($questionID == "2" && $player2Answer == "4"){ 
     echo $correct2Msg; 
    }else{ 
     echo $incorrect2Msg; 
    } 
} 
?> 

<?php 
      } //end while statement 
     } //end if statement 
     mysql_close(); 
     //include the footer 
     include ("../includes/footer.php"); 
} 
?> 

作爲一個說明,該gameSubmit.php頁面也有相同的消息,如果... ... ELSEIF爲player3Answer &聲明player4Answer。

所以我的問題是...

如果用戶登錄並打開index.php頁面,他/她會被提示「回聲$行[」問題「]」(這是一個使用$ query =「SELECT * FROM answers ORDER BY RAND()LIMIT 1」從MySQL數據庫中提取問題; - 然後用戶在每個玩家各自的文本輸入中輸入一個答案,一旦用戶點擊提交按鈕,表單重定向到gameSubmit.php - 一旦加載,如果(isset($ _ POST ['submitted'])){啓動並交叉檢查每個用戶的答案並顯示相應的消息

目前,我的表單重定向到gameSubmit.php,但是,它沒有引用前面的問題fo正確的答案 - 因此它的純粹運氣在「評分」答案時出現相同的答案。

爲了在表單操作頁面上實現輸入驗證,我需要做什麼/需要糾正哪些內容?

再一次,我只是想隨機檢索一個問題,並提交檢查正確答案的輸入答案 - 我還想我的代碼能夠檢索正確的答案,而不是我必須輸入每個回答,這樣,如果記錄被添加,我不必更新代碼。

感謝您的時間和幫助,非常感謝! (它的最後一週,我不能更強調)

  • Rockmandew
+0

此外,看到一個工作示例 - http://kethcart.uwmsois.com/qm/htdocs/Home/index.php - 隨時註冊一個帳戶,並登錄到登錄主頁。 – rockmandew

回答

4

剛剛從索引頁杆元件傳遞到gameSubmit.php與問題ID。

在索引頁像添加一個隱藏的元素..

<input type="hidden" name="questionId" value="<?php echo $row['id']; ?>"> 

所以,你可以在pageSubmit問題ID。php使用$_POST['questionId']

+0

這不就是我所擁有的那種嗎?此外,我測試了這種方法,它似乎並不奏效,它總是給我一個不正確的答案。有什麼想法嗎? – rockmandew

+0

sriraman - 我想通了!事實證明,我隱藏的值名稱後面缺少'='符號,因此它沒有將答案傳遞給操作頁面。謝謝你的幫助! – rockmandew