Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > тест на php


Автор: Lely 14.6.2009, 10:26
Всем доброго времени суток smile
Пишу тест на пхп...сейчас пока написала тока, чтоб вопросы с их ответами выводились из базы...без повторений...храню айдишники вопросов в сессии...а хочу сделать, чтобы вопросы и ответы в случайном порядке выводились...помогите пожалуйста словом или деломsmile))
вот код...только там еще совсем не думала над регистрированием ответов тестируемого...так что не судите строго

Код

<?
   include_once("config.php");
   $r="SELECT * FROM TESTS WHERE ID='".$_GET['test_id']."'";
   $result = mysql_query($r) or die("Query failed : " . mysql_error());
   while ($line = mysql_fetch_array($result))
   {
      $test_name=$line['NAME'];
      $test_size=$line['KOL_Q'];
      $test_long=$line['LONG'];
   }
   $res_quest="SELECT * FROM QUESTIONS WHERE TEST_ID='".$_GET['test_id']."'";
   //die($res_quest);
   $res_q = mysql_query($res_quest) or die("Query failed : " . mysql_error());
   while ($line_q = mysql_fetch_array($res_q))
   {
      if (isset($_SESSION['quest']))
      {
         $flag=0;
         for ($i=0; $i<sizeof($_SESSION['quest']); $i++)
         {
            if ($line_q['ID']==$_SESSION['quest'][$i])
            {
               $flag--;
            }
         }
         if ($flag<0)
         {
            continue;
         }
         else
         {
            $quest_id=$line_q['ID'];
            $quest_type=$line_q['TYPE'];
            $quest_size=$line_q['KOL_A'];
            $_SESSION['quest'][$_GET['q_id']]=$quest_id;
         }
      }
      else
      {
         $quest_id=$line_q['ID'];
         $quest_type=$line_q['TYPE'];
         $quest_size=$line_q['KOL_A'];
         $_SESSION['quest'][$_GET['q_id']]=$quest_id;
      }
   }
   $src_quest="questions/".$quest_id."/index.htm";   
?>


и вот на всякий случай htm в который все это сливается...

Код

<form method="post" action="my_test.php">
<input type="hidden" name="test_id" value="<?=$_GET['test_id'];?>"/>
<?include('test_load.php');?>
                      <table width="700" border="0" cellpadding="0" cellspacing="0">
                        <tbody>
                          <tr>
                            <td width="900" valign="center" align="center">
                              <p class="main">Тест "<?=$test_name;?>"</p>
                              <hr/>
                            </td>
                          </tr>
                          <tr>
                            <td width="700" valign="center" align="left">
                              <p class="log">вопрос <?=($_GET['q_id']+1);?> из <?=$test_size;?></p>
                            </td>
                          </tr>
                          <tr>
                            <td width="700" valign="top" align="right" height="60">
                              <p class="log">осталось времени: <?=$test_long;?> мин.</p>
                            </td>
                          </tr>
                          <tr>
                            <td width="700" valign="center" align="center">
                              <?include($src_quest);?>
                            </td>
                          </tr>
                          <tr>
                            <td>
                              <table width="700" border="0" cellpadding="0" cellspacing="0" align="center">
                                <tbody>
                                  <?
   $res_ans="SELECT * FROM ANSWERS WHERE QUESTION_ID='".$quest_id."'";
   //die($res_ans);
   $res_a = mysql_query($res_ans) or die("Query failed : " . mysql_error());
   while ($line_a = mysql_fetch_array($res_a))
   {
      $src_ans="answers/".$line_a['ID']."/ans.htm";
      if ($quest_type==1)
      {?>
         <input type="radio" name="radio_name" value="1">
         <?include($src_ans);?><br/>
    <?}
      if ($quest_type==2)
      {?>
         <input type="checkbox" name="var[]" value="yes">
         <?include($src_ans);?><br/>
    <?}
      if ($quest_type==3)
      {?>
         <?include($src_ans);?><br/>
    <?}
   }
                                  ?>
                                </tbody>
                              </table>
                            </td>
                          </tr>
                        </tbody>
                      </table>


а еще хотела спросить как сделать чтобы на страничке показывалось сколько времени осталось, если известно сколько его вообще отводится на тест...
и почему у меня выводится ошибка когда F5 нажимаешь на последнем в тесте вопросе...пишет "Undefined variable: quest_id"...а на всех остальных вопросах так не делает...

всем заранее спасибо за помощь smile  

Автор: nerezus 14.6.2009, 14:06
всять все вопросы, перемешать и взять первые N штук.

Автор: bazzjr 15.6.2009, 14:19
Цитата(Lely @  14.6.2009,  10:26 Найти цитируемый пост)
как сделать чтобы на страничке показывалось сколько времени осталось


Насчет времени, я писал уже, посмотреть можно http://forum.vingrad.ru/forum/topic-259292/anchor-entry1884435/0.html.

Насчет ошибки, сложно сказать почему она появляется. Нужно больше информации.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)