2013-11-12 3 views
0

Я пытаюсь реализовать форму, в которой пользователю задают некоторые вопросы, которые хранятся в базе данных. Ответы на соответствующие вопросы также хранятся, и пользователь должен отвечать на те, которые указаны в текстовых полях (например, в онлайн-тестовой системе). Я хочу сохранить все ответы, введенные пользователем в массиве, сохраняя значения столбца ответа базы данных в другом массиве. Сравнение значений двух массивов должно дать мне правильные ответы. Я упомянул об этом question и использовал следующие коды. Но проблема в том, что результат показывает неопределенную ошибку смещения в том месте, где я использую переменную $i для сравнения двух массивов. Пожалуйста, помогите мне.Сравнение значений из нескольких текстовых полей с таблицей mysql

Код для формы (giveexam.php):

<form id ="answersheet" name="answersheet" action="assessment.php" method="post"> 
<table border="1px"> 
<tr> 
<!--td>sr_no</td--> 
<td width="144">Question</td> 
<td width="50">option1</td> 
<td width="50">option2</td> 
<td width="50">option3</td> 
<td width="50">option4</td> 
<td width="30"> 
<strong>ANSWER</strong></td> 


</tr> 
<?php 
require_once("connection.php"); 

$query = "select * from mgmt"; 
$result = mysql_query($query, $connection); 

if(!$result) 
echo "ERROR: No results"; 
else 
{ 
while($row = mysql_fetch_array($result)) 
{ 

?> 

<tr> 
<!--td><?php echo $row['eid'];?></td--> 
<td><?php echo $row['question'];?></td> 
<td><?php echo $row['op1'];?></td> 
<td><?php echo $row['op2'];?></td> 
<td><?php echo $row['op3'];?></td> 
<td><?php echo $row['op4'];?></td> 
<td><input type="text" name="ans[]"/></td> 

</tr> 


<?php } 
} //end while 
?> 
</table> 
<tr> 

<td></td> 
<td><input type="submit" value="submit" /></td> 
</tr> 
</form> 

PHP файл (assessment.php):

<?php 
session_start(); 
$m=0; 
//$c=0; 

      require_once("connection.php"); 

      $query="select answer from mgmt"; 
      $result=mysql_query($query, $connection); 

      $result_array=array(); 
      while($row=mysql_fetch_assoc($result)) 
      {$result_array[]=$row;} 

      $answer=array(); 
      $answer[]=$_POST["ans"]; 
      for($i=1;$i<4;$i++) 
      { 
       if($answer[$i]==$result_array[$i]) 
        $m++; 

      } 
      echo $m; 

        ?> 
+0

** НЕ ИСПОЛЬЗУЙТЕ расширение 'mysql_' ДЛЯ НОВОГО КОДА, КАК ЭТО СЕЙЧАС УДАЛОСЬ. ИСПОЛЬЗОВАТЬ 'PDO' ИЛИ' MySQLi' INSTEAD. ** – Ethan

+0

устарел для php 5.3? –

+0

Возможный дубликат [PHP: «Примечание: неопределенная переменная», «Примечание: неопределенный индекс» и «Примечание: неопределенное смещение»] (https://stackoverflow.com/questions/4261133/php-notice-undefined-variable- note-undefined-index-and-notice-undef) –

ответ

0

не определено смещение означает, что либо $ ответа или $ result_array короче 4. попробуйте сначала распечатать результаты и посмотреть, где лежит проблема.

+0

В порядке, я попробовал, и печать значений для '$ result_array' дает мне ошибку' array to string conversion'. возможно, я не вписываю значения из столбца в массив справа. какие-либо предложения? –

+0

внесли следующие изменения в файл evaluation.php: 1. Это просто '$ answer = $ _ POST [" ans "];' без '$ answer = array();' 2. Кроме того, используется '$ result_array [] = $ row ['answer']; 'вместо' $ result_array [] = $ row; ' не может публиковать больше ответов из этой учетной записи :( –

+0

для печати значений используйте« echo »

";var_dump($var);echo"
»; 'чтобы увидеть фактическую переменную и ее формат (это может быть что угодно: от строки до объекта). И да, в текущей форме, $ answer [0] содержит $ _POST, так что это ровно 1 в длину :) –

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