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 :: Версия для печати :: что возвращает radio?
Форумы портала PHP.SU » PHP » Программирование на PHP » что возвращает radio?

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

1. haveFun - 30 Октября, 2010 - 17:01:39 - перейти к сообщению
ситуация такова: форма отправляет текст (несколько вопросов), и 4 варианта ответа на каждый вопрос. нужно выбрать верный вариант и на странице обработки определить какой из вариантов был правильным.

index1.php
PHP:
скопировать код в буфер обмена
  1.  
  2. echo '<form action="index2.php?st=6&lib=1" method="post">';
  3. echo '<table><tr><td><b>'.$tt.' Подглава. '.$r['cont'].'</b></td></tr>';
  4. for ( $i = 1; $i <= $r['who4']; $i++ ) // ВОПРОСЫ
  5. {
  6.         echo '<tr><td><br><textarea name="qtext['.$i.']" cols="80" rows="3">Введите вопрос</textarea>
  7.                 <br>Отметьте правильный варианта ответа</td></tr>';
  8.         for ( $j = 1; $j <= 4; $j++ ) // ОТВЕТЫ И РАДИО
  9.         {
  10.                 echo '<tr><td><input type="text" name="zar['.$i.']['.$j.']">
  11.                   <input type="radio" name="ans['.$i.']" value="'.$j.'"></td></tr>';
  12.         }
  13. }
  14. echo '<tr><td colspan="4" align="right"><br>
  15.         <input type="hidden" name="podgl" value="'.$r['who2'].'">
  16.         <input type="hidden" name="kolvop" value="'.$r['who4'].'">
  17.         <input type="hidden" name="kolvom" value="'.$r['res3'].'">
  18.         <input type="submit" value="     Далее >     " style="width: 100px;">
  19.         </td></tr></table></center></form>';
  20. echo '</form>';
  21.  


и index2.php соответственно:
PHP:
скопировать код в буфер обмена
  1.  
  2. for ( $i = 1; $i <= $pprr ; $i++ ) //ВОПРОС
  3. {
  4.         $vop = $_POST['qtext'][$i];
  5.         mysql_query("INSERT INTO `$gh`.`$ddbb` VALUES ('NULL','".$vop."','1','".$i."','','')");
  6.         for ( $j = 1; $j <= 4; $j++ ) // ОТВЕТ
  7.         {
  8.                 $otv = $_POST['zar'][$i][$j];
  9.                 $one = 2;
  10.                 if (!empty($_POST['ans'][$i])) $one = 3;
  11.                 mysql_query("INSERT INTO `$gh`.`$ddbb` VALUES ('NULL','$otv','$one','$i','','')");
  12.         }
  13. }
  14.  

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

данная проверка if (!empty($_POST['ans'][$i])) как показывает практика, тупо проверяет группу на чекед, а мне нужно что бы проверялась не группа, а сам элемент radio. как это реализовать?
2. Uchkuma - 30 Октября, 2010 - 17:33:16 - перейти к сообщению
Если честно, мне не понятно, что вам не понятно Однако

ans - это у вас массив ответов, каждый элемент которого, является номером ответа на соответствующий порядковому номеру вопрос. Соответственно $_POST['ans'][$i] содержит ответ на вопрос номер $i. Все понятно, вроде. Тут и цикл-то никакой не нужен.
3. haveFun - 30 Октября, 2010 - 17:56:09 - перейти к сообщению
оо спасибо! нужно было сравнивать вот так
if ($_POST['ans'][$i]== $j) $one = 3;
Хорошо

 

Powered by ExBB FM 1.0 RC1