[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Скрипт тестирования
kuliev
оброго времени суток.
Начал писать скрипт тестирования, но до конца не понимаю механизма как его написать!
Я только представляю как он должен выглядеть:

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

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

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


Как сделать, чтобы вопросы выводились по очереди после нажатия кнопки? Как написать цикл который будет его обрабатывать?



Спустя 38 минут, 42 секунды (3.05.2008 - 11:49) qpayct написал(а):
сам я не пробывал, но осмелюсь предположить, что надо делать так:

допустим tbltests

id
test_name
test_question
test_right_answer
test_answers

форма которая меняется при нажатии на кнопку $next_step - конец теста (взависимости от колличества вопросов, которые ты уж сам посчитаешь.)
Код
<?php
$choosed_test = $_POST[choosed_test];
$num_question = $_POST[num_question];

$q = mysql(DB,"SELECT * FROM tbltests WHERE test_name='$choosed_test' and test_question=$num_question");
$z = mysql_num_row($z);
if (mysql_errno()!=0) exit(mysql_error());
if ($z>0) {
    ?><form action="_self" method="post"><?
    $f = mysql_fetch_array($q);
    $num_question++;
    // тут добавляешь условие если (колличество вопросов = $num_question) тогда $next_step = конец теста
    ?>
    <input type="hidden" name="num_question" value="<?=$num_question?>">
    // тут прописуешь форму отображения вопроса и возможных ответов.
    <input type="submit" value=<?=$next_step?> />
    <?
}
?>
</form>

ты уж извини, что я за тебя весь тест не прописал, но и своего говна навалом wink.gif
торопился, возможны недоработки...

Спустя 1 год, 13 дней, 2 часа, 52 минуты, 38 секунд (16.05.2009 - 14:41) Gudwin написал(а):
to kuliev
дружище, стукни в аську 418948335 или на мыло напиши hippie2003@mail.ru
очень срочно!
Быстрый ответ:

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