Автор Тема: php и mysql: онлайн тесты.  (Прочитано 5460 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн DrGrom

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 7
  • +0/-0
  • 0
    • Просмотр профиля
php и mysql: онлайн тесты.
« : 03 Мая 2001, 12:20:03 »
Доброе утро/день/вечер кому что более подходит :)

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

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

помоги разобраться, не дайте умереть неучем ;)

Оффлайн AliMamed

  • \\o/ ali akbar \\o/
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2409
  • +2/-0
  • 2
    • Просмотр профиля
    • http://alimamed.pp.ru
php и mysql: онлайн тесты.
« Ответ #1 : 03 Мая 2001, 12:38:32 »
ну а конкретно в чем проблема то?
ну, будем исповедоваться?

Оффлайн DrGrom

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 7
  • +0/-0
  • 0
    • Просмотр профиля
php и mysql: онлайн тесты.
« Ответ #2 : 04 Мая 2001, 02:31:05 »
в реализации :(

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

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

  • Гость
php и mysql: онлайн тесты.
« Ответ #3 : 04 Мая 2001, 06:46:38 »
Почитай http://php.spb.ru/php/sess.html по-моему это как раз то что тебе надо.

Оффлайн AliMamed

  • \\o/ ali akbar \\o/
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2409
  • +2/-0
  • 2
    • Просмотр профиля
    • http://alimamed.pp.ru
php и mysql: онлайн тесты.
« Ответ #4 : 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";
ну, будем исповедоваться?

Оффлайн DrGrom

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 7
  • +0/-0
  • 0
    • Просмотр профиля
php и mysql: онлайн тесты.
« Ответ #5 : 04 Мая 2001, 10:41:33 »
Цитировать
Dmytro (04-05-2001 06:46):
Почитай http://php.spb.ru/php/sess.html по-моему это как раз то что тебе надо.


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

Оффлайн DrGrom

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 7
  • +0/-0
  • 0
    • Просмотр профиля
php и mysql: онлайн тесты.
« Ответ #6 : 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;

}
?>


Оффлайн AliMamed

  • \\o/ ali akbar \\o/
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2409
  • +2/-0
  • 2
    • Просмотр профиля
    • http://alimamed.pp.ru
php и mysql: онлайн тесты.
« Ответ #7 : 04 Мая 2001, 11:13:22 »
много читать некогда. что касается первоначального вопроса - то это как раз ответ на вопрос как загнать ответы в массивы.
ну, будем исповедоваться?

Оффлайн DrGrom

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 7
  • +0/-0
  • 0
    • Просмотр профиля
php и mysql: онлайн тесты.
« Ответ #8 : 05 Мая 2001, 07:26:35 »
Цитировать
AliMamed (04-05-2001 11:13):
много читать некогда. что касается первоначального вопроса - то это как раз ответ на вопрос как загнать ответы в массивы.

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

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

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

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28