Forum Webscript.Ru

Программирование => PHP => Тема начата: DrGrom от 03 Мая 2001, 12:20:03

Название: php и mysql: онлайн тесты.
Отправлено: DrGrom от 03 Мая 2001, 12:20:03
Доброе утро/день/вечер кому что более подходит :)

Пришлось мне тут заняться веб-програмирование (html/php/mysql), а так как  ранее был далек от этой темы, то соответственно возникли вопросы, пока все самому удовалось решать, но так как стало поджимать время, то решился спросить у общественности.

я делаю онлайн тесты. все пишу с нуля сам так как просто стало интерсно это занятие. почти все сделал, но вот на одном вопросе, а в частносте в выводе самих тестов на экран возникли проблемы. у меня есть два варианта их вывода: первый класических  одни лист и все вопросы на данный тест (тут у меня проблема с обработкой checkbox и проверкой ответов в базе, второй это один лист - один вопрос и так далее до конца, тут я попал в глубокую яму :(

помоги разобраться, не дайте умереть неучем ;)
Название: php и mysql: онлайн тесты.
Отправлено: AliMamed от 03 Мая 2001, 12:38:32
ну а конкретно в чем проблема то?
Название: php и mysql: онлайн тесты.
Отправлено: DrGrom от 04 Мая 2001, 02:31:05
в реализации :(

в первом случае я могу сам все реализовать путем простого перебора чекбоксов через if (empty($answer)), но тогда у меня получается что при 10 вопросах по 4 ответа в каждом получается 40 вариантов if (empty($answer)) что не есть хорошо, так как код получается не универсальный, а написан только под это колличество вопросов - ответов, что не есть хорошо...
идеальный вариант был бы если бы удалось все загнать в цикл где бы было только одно универсальное условие if (empty($answer)), где бы переменная $answer менялась сама от $answer1 до $answer?? или через масив (но тут я видно что-то не то делаю :(). Имена переменных в чекбоксах я могу заставить менять, чтобы небыло одинаковых, а вот с алгоритмом и реализацией проверки проблемы. Ранее когда я делал ввод тестов там у маня было 5 вариантов проверок чекбоксов и я это сделал путем написания кода для каждого случая, но в данном варианте код очень сильно раздувается :(

А вот с вариантом при постраничном выводе вопросов-ответов у меня вообще ничего не получается :(
Название: php и mysql: онлайн тесты.
Отправлено: от 04 Мая 2001, 06:46:38
Почитай http://php.spb.ru/php/sess.html по-моему это как раз то что тебе надо.
Название: php и mysql: онлайн тесты.
Отправлено: AliMamed от 04 Мая 2001, 10:24:49
Цитировать
DrGrom (04-05-2001 02:31):
в реализации :(

в первом случае я могу сам все реализовать путем простого перебора чекбоксов через if (empty($answer)), но тогда у меня получается что при 10 вопросах по 4 ответа в каждом получается 40 вариантов if (empty($answer)) что не есть хорошо, так как код получается не универсальный, а написан только под это колличество вопросов - ответов, что не есть хорошо...
идеальный вариант был бы если бы удалось все загнать в цикл где бы было только одно универсальное условие if (empty($answer)), где бы переменная $answer менялась сама от $answer1 до $answer?? или через масив (но тут я видно что-то не то делаю :(). Имена переменных в чекбоксах я могу заставить менять, чтобы небыло одинаковых, а вот с алгоритмом и реализацией проверки проблемы. Ранее когда я делал ввод тестов там у маня было 5 вариантов проверок чекбоксов и я это сделал путем написания кода для каждого случая, но в данном варианте код очень сильно раздувается :(

А вот с вариантом при постраничном выводе вопросов-ответов у меня вообще ничего не получается :(

так, давай попорядку разберемся
сначала чекбоксы. я так понял у тебя проблема их парсить. все просто.

в форме делаешь так:
Чек a
Чек b
Чек c

тогда у тебя получается так:
$mycheck[0]="a";
$mycheck[1]="b";
$mycheck[2]="c";
Название: php и mysql: онлайн тесты.
Отправлено: DrGrom от 04 Мая 2001, 10:41:33
Цитировать
Dmytro (04-05-2001 06:46):
Почитай http://php.spb.ru/php/sess.html по-моему это как раз то что тебе надо.


Спасибо конечно, это решает мою другую проблему о которой я только начал задумываться :) но вот что касается нонешней, то ... :( увы нет.  хотя неисключено что я просто не вижу как то применить к моей нынешней проблеме.
Название: php и mysql: онлайн тесты.
Отправлено: DrGrom от 04 Мая 2001, 10:54:03
Цитировать
AliMamed (04-05-2001 10:24):
так, давай попорядку разберемся
сначала чекбоксы. я так понял у тебя проблема их парсить. все просто.

в форме делаешь так:
Чек a
Чек b
Чек c

тогда у тебя получается так:
$mycheck[0]="a";
$mycheck[1]="b";
$mycheck[2]="c";


хмм, подобное я и использую сейчас. вот текст скрипта.
посмотри если не трудно...
хотя возможно что в обработке нажатия кнопки я чего-то и напутал...

$query = "SELECT * FROM test where id_t=\'$id_t\';";
$result = MYSQL_QUERY($query);
$myrow = mysql_fetch_array($result);

?>


   
      
тест :
      

   

" >
$query1 = "SELECT * FROM question where id_t=\'$id_t\';";
$result1 = MYSQL_QUERY($query1);
$i=1;
$j=1;
if ($myrow1 = mysql_fetch_array($result1))            
{                                                  
do
{                                                  
$id_q= $myrow1[\'id_q\'];
?>

echo "";                                    
echo    "";
echo "";
echo "";
printf("",$i);
printf("",$myrow1[\'q_name\']);
echo "";
$query2 = "SELECT * FROM answer where id_q=\'$id_q\'";
$result2 = MYSQL_QUERY($query2);
if ($myrow2 = mysql_fetch_array($result2))            
{                                                  
do                                          
{                                                  
echo "";
echo    "";
printf ("",$myrow2["a_name"]);
$answer[$i][$j]=$myrow2[\'answer\'];
printf ("",$i,$j,$myrow2[\'answer\']);
echo "";
$j++;
}
while ($myrow2= mysql_fetch_array($result2));
}
$j=1;
$i++;
echo "
Вопрос  %s.%s
%s
";
echo "

";
}
while ($myrow1 = mysql_fetch_array($result1));
}
?>





/*  */
if ($submit) {

$otvet=0;
for ($i=1; $i<=10; $i++)
{

   for ($j=1; $j<=4; $j++)
   {

 if (empty($answer[$i][$j]))
     {
     $ans3=0;
    }
     else
      {
       $ans3=1;
      }

   if ($ans3=$answer[$i][$j])
   {$otvet++;}
   else
   {$otvet=$otvet-1;}

}
}
echo $otvet;

}
?>

Название: php и mysql: онлайн тесты.
Отправлено: AliMamed от 04 Мая 2001, 11:13:22
много читать некогда. что касается первоначального вопроса - то это как раз ответ на вопрос как загнать ответы в массивы.
Название: php и mysql: онлайн тесты.
Отправлено: DrGrom от 05 Мая 2001, 07:26:35
Цитировать
AliMamed (04-05-2001 11:13):
много читать некогда. что касается первоначального вопроса - то это как раз ответ на вопрос как загнать ответы в массивы.

Понимаешь, я  и раньше мог загонять и извлекать ответы из массива, но с одномерным только.

а тут мне что-то стукнуло в голову и я стал пытаться сделать это через дмумерный массив :), но ничего неполучалось :(

ну да ладно... я сделал все через одномерный и все работает...
так что спасибо за совет...