freelancer89
11.10.2009 - 18:21
Доброго времени суток! Делаю сайт интернет - тестирования!
Сделал формы для вывода вопросов на странице и скрипт для проверки результатов. Все работало чинно и гладко, пока не начал тестировать конструктор вопросов. После редактирования вопроса, скрипт проверки стал работать некорретно.
Допустим, я отвечаю на 4 вопроса, и мне должна выводиться таблица с результами, т.е. 4 столбца с номерами вопросов и на второй строчке +, если правильно ответил, -если не правильно.
Проблема сейчас состоит в том, что я проверяю что пришло ровно 4 ответа, а при проверке строится один "левый минус" не могу понять, откуда берется еще одна итерация!
код формы вывода вопросов
PHP |
<?
session_start(); $_SESSION['sw']=$_POST[sw];
?> <html>
<head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <title>Тестирование</title> </head>
<body>
<table border="0" width="1241" height="100%"> <tr> <td height="89" width="1235" background="HTML_img/1.png" colspan="2">
<form method="POST" action="--WEBBOT-SELF--"> <table border="0" width="99%" id="table1"> <tr> <td width="1084"> </td> <td> <span lang="en-us">###</span></td> </tr> <tr> <td width="1084"> <p align="right"> </td> <td> <p align="right"> </td> </tr> </table> <p align="right"> </p> </form>
</td> </tr> <tr> <td height="407" width="188" background="HTML_img/2.png"> </td> <td height="407" width="1043"><span lang="en-us"> <?
echo "POSTs<br>"; foreach( $_POST as $k => $val) echo "POST[$k]=$val<br>"; echo "POST ended<br>"; echo "$_POST[id]"; echo $_POST[id]; ini_set('display_errors',1); error_reporting(E_ALL); $location="localhost"; $user="root"; $pass=""; $dbcnx=@mysql_connect($location,$user,$pass) or die ("В настоящий не может осуществится соединение"); @mysql_select_db("i_test", $dbcnx) or die("В настоящий момент база данных не доступна"); $result= mysql_query("select * from new_tets where new_tets.ID_t='$_POST[sw]'") or die(mysql_error()); ?> <form action="proverka1.php" enctype="multipart/form-data" method="post" name="test">
<?
$i=1;
$R=array (1);//организовываем массив $num=1; while ($new_tets=mysql_fetch_array($result)) {
array_push($R, $new_tets['id_q']);//добавляем новый элемент массива, индекс которого равенн id_q echo "<fieldset>"; echo"<legend>"; echo"ВОПРОС №"; echo $num; $num++; echo"</legend>"; echo $new_tets['qw']; if ($new_tets['image']) //если поле image не пусто, то загружаем картинку { $adress=$new_tets['image']; echo "<img border=1 src=$adress align=right>"; } echo "</br>"; echo "</br>"; echo "<input type=radio value=v1 name='$R[$i]'>"; echo $new_tets['answer1'];echo"</br>"; echo "<input type=radio value=v2 name='$R[$i]'>"; echo $new_tets['answer2'];echo"</br>"; echo "<input type=radio value=v3 name='$R[$i]'>"; echo $new_tets['answer3'];echo"</br>"; echo "<input type=radio value=v4 name='$R[$i]'>"; echo $new_tets['answer4'];echo"</br>"; echo "</fieldset>"; $_POST[$i+1]=$new_tets['id_q']; $i=$i+1; } $_SESSION['index']=$i-1; echo"<input type=submit value=Отправить name=B1>"; ?>
</span></td>//скрипт генератор вопросов </tr> <tr> <td height="96" width="1235" colspan="2" background="HTML_img/3.png"> </td> </tr> </table>
|
Скрипт проверки
PHP |
<? session_start(); echo "POSTs<br>"; foreach( $_POST as $k => $val) echo "POST[$k]=$val<br>"; echo "POST ended<br>"; echo "$_POST[id]"; echo $_POST[id]; ini_set('display_errors',1); error_reporting(E_ALL); $location="localhost"; $user="root"; $pass=""; $dbcnx=@mysql_connect($location,$user,$pass) or die ("В настоящий не может осуществится соединение"); @mysql_select_db("i_test", $dbcnx) or die("В настоящий момент база данных не доступна"); $result= mysql_query("select * from r_answers where r_answers.ID_t='$_SESSION[sw]'") or die(mysql_error()); echo"ID OF TEST="; echo $_SESSION['sw']; echo" rows="; echo $_SESSION['index'];//количество ответов $result1= mysql_query("select * from tests where tests.ID_t='$_SESSION[sw]'") or die(mysql_error()); $result2= mysql_query("select * from new_tets where new_tets.ID_t='$_SESSION[sw]'") or die(mysql_error()); $name=mysql_fetch_array($result1);//имя теста echo "Результаты тестирования "; echo $name['name']; echo "</br>"; $ra=0; $unra=0; echo "<table border=2>"; echo "<tr>"; for ($k=1; $k<=$_SESSION['index']; $k++) { echo "<td>"; echo $k; echo "</td>" ; } echo "</tr>"; echo "<tr>"; while ($res=mysql_fetch_array($result)) { $j=$res['id_q'];//будующий индекс массива if ($res['r_answer']==$_POST[$j])//если правильный ответ из таблицы совпадает со значением массива , то { echo "<td>"; echo "+"; echo "</td>";//пишем + $ra++; $j++; } else { echo "<td>"; echo "-"; echo "</td>";//иначе - $unra++; $j++; }//вот тут проходит одна не нужная итерация } echo"Right=";echo $ra; echo"wrong=";echo $unra;
|
помогите решить проблему, плиз!
картинка результата работы скрипта прилагается!
Спустя 27 минут, 54 секунды (11.10.2009 - 17:49) Kuliev написал(а):
Очень тяжело читаем код, автор наверное сам запутался где и что у него.
Спустя 9 минут, 15 секунд (11.10.2009 - 17:58) freelancer89 написал(а):
не, я как раз таки понимаю что где=)))
просто не могу понять откуда выскакивает еще одна итерация!
Спустя 3 минуты, 29 секунд (11.10.2009 - 18:02) freelancer89 написал(а):
О, я все понял, у неня была лишняя запись в таблице с правильными ответами!=)
Спустя 7 минут, 26 секунд (11.10.2009 - 18:09) Kuliev написал(а):
freelancer89Поздравляю
_____________