Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Вывод нескольких рандомных элементов массива php по одному (а не сразу все) + кликабельные варианты ответов.
Форумы портала PHP.SU » » Вопросы новичков » Вывод нескольких рандомных элементов массива php по одному (а не сразу все) + кликабельные варианты ответов.

Страниц (1): [1]
 

1. Хомяк - 08 Июня, 2018 - 20:16:59 - перейти к сообщению
Есть php код, который из 5-ти элементов выбирает три. Но выводит на экран сразу все три элемента, а варианты выводит списком. Хотелось бы, чтобы каждый вопрос выводился отдельно: то есть выбирается первый рандомный появляется на экране, пользователь выбирает один вариант ответа и переходит к следующему.

Так вот, как сделать такой повопросный вывод и кликабельные варианты ответов?

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $arStrings = array(
  4.     array('question' => 'Вопрос 1', 'answers' => array('Ответ 1', 'Ответ 2', 'Ответ 3'), 'right' => 0),
  5.     array('question' => 'Вопрос 2', 'answers' => array('Ответ 1', 'Ответ 2', 'Ответ 3'), 'right' => 2),
  6.     array('question' => 'Вопрос 3', 'answers' => array('Ответ 1', 'Ответ 2', 'Ответ 3'), 'right' => 1),
  7.     array('question' => 'Вопрос 4', 'answers' => array('Ответ 1', 'Ответ 2', 'Ответ 3'), 'right' => 2),
  8.     array('question' => 'Вопрос 5', 'answers' => array('Ответ 1', 'Ответ 2', 'Ответ 3'), 'right' => 0),
  9. );
  10. $arUsed = array();
  11.  
  12. for($i = 0; $i < 3; $i++) {
  13.     do
  14.     {
  15.         $id = rand(0, count($arStrings)-1);
  16.     } while(in_array($id, $arUsed));
  17.     $arUsed[] = $id;
  18.  
  19.     ?>
  20.     <h2>Очередной вопрос: <?PHP echo $arStrings[$id]['question']; ?></h2>
  21.     <p>Варианты ответов:</p>
  22.     <ul>
  23.         <?PHP for($j = 0; $j < count($arStrings[$id]['answers']); $j++) { ?>
  24.         <li <?PHP if($arStrings[$id]['right'] == $j) echo 'class="right"'; ?>><?PHP echo $arStrings[$id]['answers'][$j]; ?></li>
  25.         <?PHP } ?>
  26.     </ul>
  27.     <?PHP
  28. }
  29. ?>
2. andrewkard - 08 Июня, 2018 - 22:22:00 - перейти к сообщению
Вам нужно форму сделать с ответами, которую пользователь отправит на сервер, и Вы ему в обратку отдадите новый вопрос. И еще хорошим тоном является сразу отметить, правильный ли ответ, для этого сделайте аякс запрос на сервер с ответом и верните ответ: да, нет, и как то отобразите результат пользователю.

 

Powered by ExBB FM 1.0 RC1