2013-12-12 6 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, он/она будет предложено с «эхо $ строки [» Вопрос «]» (который является вопрос вытащил из базы данных MySQL, используя $ query = "SELECT * FROM отвечает ORDER BY RAND() LIMIT 1"; - затем пользователь переходит к ответу в соответствующем текстовом входе каждого игрока. Как только пользователь нажимает кнопку отправки, форма перенаправляет на gameSubmit.php - после загрузки, если (isset ($ _ POST ['представлен'])) {запускает и перекрестно проверяет, что каждый пользователь отвечает и отображает соответствующее сообщение.

В настоящее время моя форма перенаправляется на gameSubmit.php, однако он не ссылается на предыдущий вопрос fo Правильный ответ - таким образом, его удача одинаковый ответ появляется, когда «сортирует» ответы.

Что мне нужно сделать/что нужно исправить, чтобы получить подтверждение ввода на странице действия формы?

Еще раз, я просто хочу получить вопрос в случайном порядке, а на отправке проверить введенные ответы с правильным ответом - мне также хотелось бы, чтобы мой код мог получить правильный ответ, а не мне, чтобы набирать каждый ответ, так что, если запись добавлена, мне не нужно обновлять код.

Спасибо за ваше время и помощь, это очень ценится! (Это финал недели, и я не мог быть более подчеркнуто)

  • Rockmandew
+0

Также, чтобы увидеть рабочий пример - http://kethcart.uwmsois.com/qm/htdocs/Home/index.php - Не стесняйтесь регистрировать учетную запись и переходите на начальную страницу. – rockmandew

ответ

4

Просто пройти POST элемент из индексной страницы gameSubmit.php с вопросом ид.

Добавить скрытый элемент индексной страницы, как ..

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

Таким образом, вы можете получить вопрос идентификатор в pageSubmit.php, используя $_POST['questionId']

+0

Разве это уже не то, что у меня есть? Кроме того, я тестировал этот метод, и он, похоже, не работает, он всегда дает мне неправильный ответ. Есть предположения? – rockmandew

+0

sriraman - Я понял это! Оказывается, мне не хватало знака '=' после имени скрытого значения, чтобы он не передавал ответ на страницу действия. Спасибо за вашу помощь! – rockmandew

Смежные вопросы