За последние 24 часа нас посетили 20226 программистов и 1697 роботов. Сейчас ищут 1688 программистов ...

Пишу скрипт тестирования

Тема в разделе "Вопросы от блондинок", создана пользователем kuliev, 3 май 2008.

  1. kuliev

    kuliev Активный пользователь

    С нами с:
    10 фев 2006
    Сообщения:
    204
    Симпатии:
    0
    Адрес:
    TLT
    Доброго времени суток.
    Начал писать скрипт тестирования, но до конца не понимаю механизма как его написать!
    Я только представляю как он должен выглядеть:

    1)-- > Сначала выводится название тестов!
    2)-- > Затем пользователь выбирает тест для прохождения!
    3)-- > Скрипт выводит по очереди вопросы, скажем всего 10
    3)-- > По окончанию теста выдается результат (оценка)

    ТЕСТЫ - ВОПРОСЫ - ОТВЕТЫ хранятся в базе

    Вот скрипт
    PHP:
    1.  
    2.  <?
    3. include "../config.php";
    4. // функция вывода всех тестов
    5. function TestList()
    6. {
    7. // разбивае на страницы
    8. $per_page=pages;
    9. if (isset($_GET['list'])) $list=($_GET['list']-1); else $list=0;
    10. $start=abs($list*$per_page);
    11. // запрос на выборку из базы
    12. $sql="select * from test ORDER BY id_test LIMIT $start,$per_page";
    13. $result=db($sql);
    14. // выводим в таблицу
    15. echo "<br><br><center><font class='content'><b>Выбирите тест</b></font></center><br>";
    16. echo "<table width='70%' border='0' cellspacing='1' cellpadding='4' align='center' bgcolor='#336699'><tr>";
    17. echo "<td align='center'>№</td>";
    18. echo "<td align='center'>Тесты</td></tr>";
    19. $bgr='1';
    20. // заганяем запрос в цикл для вывода тестов
    21. while($row=mysql_fetch_array($result))
    22. {
    23. if($bgr==1)
    24. {
    25. $bgcolor='#F5F5F5';
    26. $bgr=0;
    27. }
    28. else
    29. {
    30. $bgcolor='#FFFFFF';
    31. $bgr=1;
    32. }
    33.  // название теста выглядит как ссылка
    34. echo "<tr bgcolor='$bgcolor' onMouseOut=this.style.backgroundColor='$bgcolor' onMouseOver=this.style.backgroundColor='#BED9FB'>";
    35. echo "<td align='center'>".$row['id_test']."<input type='hidden'  value='".$row['id_test']."'></td>";
    36. echo "<td align='center'><a href='".$_SERVER['PHP_SELF']."?page1-for-3.php&num=1&id_test=".$row['id_test']."&flag=1'>".$row['name_test']."</a>";
    37. echo "<input type='hidden' name='name_test' value='".$row['name_test']."'></td>";
    38. }
    39. // конец цикла
    40. //закрываем форму и таблицу
    41. echo "</form></tr></table><br><center>";
    42. // выводим ссылки для № страниц
    43. $sql=("SELECT count(*) FROM test");
    44. $result=db($sql);
    45. $row=mysql_fetch_row($result);
    46. $total_rows=$row[0];
    47. $num_pages=ceil($total_rows/$per_page);
    48. for($i=1;$i<=$num_pages;$i++) {
    49.   if ($i-1 == $list) {
    50.  
    51.     echo $i." ";
    52.   } else {
    53.     echo '<a href="'.$_SERVER['PHP_SELF'].'?page1-for-3.php&list='.$i.'">'.$i."</a> ";
    54.   }
    55.    }
    56.     }
    57.  
    58.  
    59. //Функция для прохождения тестов пользователем
    60.  
    61. function TestingUsers ()
    62. {
    63. // запрос на вывод вопроса согластно названия теста
    64. $sql=("select * from vopros,test where vopros.id_test='".$_GET['id_test']."' and vopros.id_test=test.id_test  LIMIT 1");
    65. $result=db($sql);
    66.  
    67. $row=mysql_fetch_array($result);
    68. // выводим ВОПРОС
    69. echo "<b class='red'>".$row['vopr']."</b>";
    70.  
    71. // Табличка с ответами на вопрос
    72.  
    73.  
    74. echo "<br><br>";
    75. echo "<table width='50%' border='0' cellspacing='1' cellpadding='4' align='center' bgcolor='#336699'><tr>";
    76. echo "<td align='center'>№</td>";
    77. echo "<td align='center'>Вариант ответа</td>";
    78. echo "<td align='center'>Ответ</td></tr>";
    79.  
    80.  
    81. //форма || Почему то когда ставлю метот GET данные в массив не передаются  
    82. echo "<form action='".$_SERVER['PHP_SELF']."?flag=1&id_test=".$_GET['id_test']."&id_vopros=".$_GET['id_vopros']."' method='POST'>";
    83. echo "<input type='hidden' name='id_vopros' value='".$row['id_vopros']."'>";
    84. echo "<input type='hidden' name='id_test' value='".$_GET['id_test']."'>";
    85.  
    86. $bgr='1';
    87.  
    88.  
    89. // зарос на вывод ответов для вопроса
    90. $sql=("select * from vopros,otvet where vopros.id_vopros='".$row['id_vopros']."' and vopros.id_vopros=otvet.id_vopros");
    91. $result=db($sql);
    92. // загоняем ответы в цикл
    93. while($row=mysql_fetch_array($result)){
    94.  
    95. if($bgr==1)
    96. {
    97. $bgcolor='#F5F5F5';
    98. $bgr=0;
    99. }
    100. else
    101. {
    102. $bgcolor='#FFFFFF';
    103. $bgr=1;
    104. }
    105.  
    106.  // выводим ответы
    107. echo "<tr bgcolor='$bgcolor' onMouseOut=this.style.backgroundColor='$bgcolor' onMouseOver=this.style.backgroundColor='#BED9FB'>";
    108. echo "<td align='center'>".$row['id_otvet']."</td>";
    109. echo "<td align='center'>".$row['otvet']."</td>";
    110. echo "<td align='center'><input type='checkbox' name='' value='1'></td>";
    111. }
    112. // кнопка SUBMIT :)
    113. echo "</tr><tr>";
    114. echo "<td align='center' bgcolor='#FFFFD0'><b class='red'>Вопрос №</b></td>";
    115. echo "<td align='center' bgcolor='#FFFFD0'><input type='submit'  value='Ответить'></td>";
    116. echo "<td align='center' bgcolor='#FFFFD0'><b class='red'>".$_GET['num']."</b></td>";
    117. echo "</form></tr></table><br><center>";
    118.  
    119. }
    120. // выбираем функцию
    121.  
    122. if ($_GET['flag']>0)
    123. {
    124. TestingUsers();
    125. }
    126. else
    127. {
    128.  TestList();
    129. }
    130.  
    131.  
    132.  
    133.   ?>
    134.  
    Как сделать, чтобы вопросы выводились по очереди после нажатия кнопки? Как написать цикл который будет его обрабатывать?
     
  2. S.t.A.M.

    S.t.A.M. Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    1.041
    Симпатии:
    0
    когда пользователь выбирает ответ, в скрытом поле хранится ID вопроса, который отсылается серверу, далее сервер обрабатывает его и передает след. вопрос.
     
  3. kuliev

    kuliev Активный пользователь

    С нами с:
    10 фев 2006
    Сообщения:
    204
    Симпатии:
    0
    Адрес:
    TLT
    Простите, действительно хочу многого и сразу smile
    Буду исправляться.
    Действительно проблема стоит с выводом вопросов и ответов поочередно!
    Мне нужно чтобы юзер нажал на кнопку ДАЛЕЕ соответственно поменяется вопрос с ответами!

    Вот пример кода, только незнаю как его доработать до ума. Может кто подскажет как быть?
    PHP:
    1.  
    2. <?
    3. include "../config.php";
    4.  
    5.  // считаем количество строк в базе
    6. $sql=("select count(*) from testing");
    7. $result=db($sql);
    8. $row=mysql_fetch_row($result);
    9. $total=$row['0'];
    10.  
    11.  //$i=1;
    12. for ($i=1; $i<$total; $i++);
    13. if($i>1){
    14. // sql запрос на выборку
    15. $sql =( "SELECT * from testing WHERE id='".$i."'");
    16. $result = db($sql);
    17.  
    18. // выводим вопрос с вариантами ответа
    19. $row =mysql_fetch_array($result);
    20. $table1="<table bgcolor='#f0f0f0' cellspacing='1' cellpadding='2'><tr><td width='400' bgcolor='#ffffff'>";
    21. $table2="</td></tr></table>";
    22.  // выводим все красиво в табличке
    23. echo "<table>";
    24. echo "<form action='".$_SERVER['PHP_SELF']."' method='post'>";
    25. echo "<tr><td><b>".$row['vopros']."</b></td></tr>";
    26. echo "<tr><td>".$table1."<input type='radio' name='vs' value='1' id='1'><label for='1'>".$row['otvet1']."</label> ".$table2."</td></tr>";
    27. echo "<tr><td>".$table1."<input type='radio' name='vs' value='2' id='2'><label for='2'>".$row['otvet2']."</label> ".$table2."</td></tr>";
    28. echo "<tr><td>".$table1."<input type='radio' name='vs' value='3' id='3'><label for='3'>".$row['otvet3']."</label>".$table2."</td></tr>";
    29. echo "<tr><td>".$table1."<input type='radio' name='vs' value='4' id='4'><label for='4'>".$row['otvet4']."</label>".$table2."</td></tr>";
    30. echo "<tr><td><input type='submit' name='next' value='Далее'></td></tr>";
    31. echo "</from>";
    32. echo "</table>";
    33. }
    34.