[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: помогите с кодом
freelancer89
Доброго времени суток! Делаю сайт интернет - тестирования!
Сделал формы для вывода вопросов на странице и скрипт для проверки результатов. Все работало чинно и гладко, пока не начал тестировать конструктор вопросов. После редактирования вопроса, скрипт проверки стал работать некорретно.

Допустим, я отвечаю на 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">
            &nbsp;</td>
            <td>
            <span lang="en-us">###</span></td>
        </tr>
        <tr>
            <td width="1084">
            <p align="right">&nbsp;</td>
            <td>
            <p align="right">&nbsp;</td>
        </tr>
    </table>
    <p align="right">&nbsp;</p>
</form>

        </td>
    </tr>
    <tr>
        <td height="407" width="188" background="HTML_img/2.png">&nbsp;</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("В настоящий момент база данных не доступна");
    
    
$resultmysql_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">&nbsp;</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("В настоящий момент база данных не доступна");
    
    
$resultmysql_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'];//количество ответов
    
    
$result1mysql_query("select *  from tests where tests.ID_t='$_SESSION[sw]'")
    or die(
mysql_error());
    
    
$result2mysql_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
Поздравляю smile.gif


_____________
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.