Пожалуйста, помогите мне получить $ randomQ и $ matchinA, а затем обновить jQuery, если набрано $ matchinA?

0

Пожалуйста, покажите мне, как получить случайный вопрос: "$ randomQuestion" (т.е. "Какой цвет неба?" ) и соответствующий ответ $matchingAnswer, из раздела quizID моей базы данных SQL, а затем использовать jQuery только для обновления формы? Я начал с создания формы и некоторых JavaScript, которые могут работать.

FORM:

<form name="$quizID" action="http://asite.com" method="post">
  <fieldset>
    <legend="$randomQuestion">
    <p>
      <label>Answer: <input type="text" id="answer" onkeydown="submitAns(submit.id)" /></label>
    </p>
  </fieldset>
</form>

JS:

function submitAns(id) {
  if (document.getElementById(id).value=="$matchingAnswer")
          document.a.submit();
}

Jquery:

$.post('get-question_matchinganswer_for_quizID.php', {
  quizID: $quizID,
  question },
  function(data) {
    alert('Question is: ' + data.question)
    alert('Answer is: ' + data.answer)
  },
  'json'
);

PHP:

<!-- Help -->
function random_row($table, $column) {
  $max_sql = "SELECT max(" . $column . ") 
          AS max_id
          FROM " . $table;
  $max_row = mysql_fetch_array(mysql_query($max_sql));
  $random_number = mt_rand(1, $max_row['max_id']);
  $random_sql = "SELECT * FROM " . $table . "
          WHERE " . $column . " >= " . $random_number . " 
          ORDER BY " . $column . " ASC
          LIMIT 1";
  $random_row = mysql_fetch_row(mysql_query($random_sql));
  if (!is_array($random_row)) {
    $random_sql = "SELECT * FROM " . $table . "
            WHERE " . $column . " < " . $random_number . " 
            ORDER BY " . $column . " DESC
            LIMIT 1";

    $random_row = mysql_fetch_row(mysql_query($random_sql));
  }
  return $random_row;
}

$randomQuestion =
$matchinAnswer =

Это очень сложно для меня, и у меня с ним неприятности. Прокомментируйте, пожалуйста. Спасибо.

  • 0
    Предполагается, что случайные вопросы будут выбираться через ajax, или было бы приемлемо, чтобы их обслуживал PHP?
  • 0
    Обслуживание с помощью PHP - это хорошо. Извините, если я не был ясен, раньше. Я не видел этот комментарий. На самом деле важна функциональность: загружать новый вопрос без полного обновления страницы. Спасибо за ответ, Эрик. :)

2 ответа

2
Лучший ответ

Хорошо, ваш HTML недействителен: вы не закрываете теги:

<form name="$quizID" action="http://asite.com" method="post">
    <fieldset>
        <legend><?php echo $randomQuestion?></legend>
        <label>
            Answer: <input type="text" id="answer"
                           onkeydown="submitAns(submit.id)" />
        </label>
    </fieldset>
</form>

Что касается ajax, я бы предложил использовать jQuery. Это облегчает процесс.

$.post('getqidqandanswer.php', {
    quizID: 1337,
    questionID: 42},
    function(data) {
        alert('Question is: ' + data.question)
        alert('Answer is: ' + data.answer)
    },
    'json'
);

PHP:

$quizID = isset($_POST['quizID']) ? $_POST['quizID'] : null
$questionID = isset($_POST['questionID']) ? $_POST['questionID'] : null

if($quizID && $questionID)
{
   $data = getQuestionData($quizID, $questionID)
}
elseif($quizID)
{
   $data = getRandomQuestionData($quizID)
}
else
{
    $data = array(
        'question' => '',
        'answer'   => ''
    )
}

echo json_encode($data)
  • 0
    Виноват. Документ w3, w3.org/TR/html5/forms.html#writing-a-form-s-user-interface , показывает <p>, окружающий метку. Я не уверен, эстетично это или нет. Итак, я надеюсь, что можно быть осторожным?
  • 1
    <p> было хорошо. Я только удалил это, потому что это было ненужным. Проблема заключалась в <fieldset> тегах <label> и <fieldset> .
Показать ещё 10 комментариев
0

Вы уверены, что AJAX - это то, что вы ищете? Изменится ли вопрос и ответ на экземпляр страницы или они будут определены при первой загрузке страницы?

  • 0
    Они будут меняться в пределах экземпляра. Спасибо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню