Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Программа для проведения тестов

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
sergik20
Отправлено: 28 Января, 2008 - 17:59:03
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Янв. 2008  


Помог: 0 раз(а)




Мне нужно написать программу для проведения тестов.
Есть тема теста.
- В ней 20 вопросов
- на каждый вопрос 4-е ответа. 1-н правильный.

Не могу понять как обозначать правильный ответ.
 
 Top
valenok Модератор
Отправлено: 28 Января, 2008 - 19:24:33
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




А вопросы вы генерируете скриптом или они заранее вписаны в html страницу?
Если вы их откуда то берёте - там же записывайте номер правильного ответа.
Если они прописаны в странице, то в ней же пропишите номера правильных ответов.


-----
Truly yours, Sasha.
 
My status
 Top
sergik20
Отправлено: 28 Января, 2008 - 23:32:47
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Янв. 2008  


Помог: 0 раз(а)




Нет, они должны находиться в бд. Всё берётся и пишется в бд
 
 Top
Staind
Отправлено: 29 Января, 2008 - 01:09:31
Post Id



Гость


Покинул форум
Сообщений всего: 116
Дата рег-ции: Нояб. 2007  
Откуда: Планета сокровищ


Помог: 0 раз(а)

[+]


Ну а в чем тогда заключается проблема?
В БД будет две таблицы, первая:

id_question | otvety | rezyltat
1 |Бла,бла| 1
1 |Бла,бла| 0
1 |Бла,бла| 0
1 |Бла,бла| 0

где, в столбце rezyltat 0 будет - лже ответ, 1 - правильный.

Вторая такая:

id | question
1 | Вы любите пиццу?

id во второй таблице будет сравниваться с id_question (4 варианта ответа к даннному вопросу) и выводится из базы. Вот и все пожалуй.

Можете еще что-нибудь по лучше придумать.
 
 Top
decss
Отправлено: 30 Января, 2008 - 05:07:18
Post Id


Новичок


Покинул форум
Сообщений всего: 16
Дата рег-ции: Янв. 2008  


Помог: 0 раз(а)




вот вам программа тестов в одним файле
только запись результатов в базу я не писал... если надо - пишите, помогу.
CODE (text):
скопировать код в буфер обмена
  1. <html>
  2. <head>
  3.   <title></title>
  4. </head>
  5. <body>
  6. <?php
  7. # поля: id; question; answer1; answer2; answer3; answer4; trueAnswerID
  8. # таблица: test
  9. $result = mysql_query("SELECT * FROM `test`");
  10. if($status==1){
  11.         $mark = 0;
  12.         while($row = mysql_fetch_object($result)){
  13.                 $i = $i+1;
  14.                 if($quest[$i]==$row->trueAnswerID){
  15.                         $mark = $mark+1;
  16.                 }
  17.         }
  18. echo("Количество правильных ответов: ".$mark);
  19. }
  20. else{
  21.         while($row = mysql_fetch_object($result)){
  22.         $i = $i+1;
  23.         echo("Вопрос № <b>".$row->id."</b><br>".$row->question."<br>
  24.         Варианты ответов:<br>1) ".$row->answer1."<br>2) ".$row->answer2."<br>3) ".$row->answer3."<br>4) ".$row->answer4."<br>
  25.         <form action=".$_SERVER['PHP_SELF']." method='post'>
  26.         Номер правильного ответа: <select size='1' name='quest[".$i."]'>
  27.           <option value='1'>1</option>
  28.           <option value='2'>2</option>
  29.           <option value='3'>3</option>
  30.           <option value='4'>4</option>
  31.         </select><br><br>");
  32.         }
  33. echo("<input name='status' type='hidden' value='1'>
  34. <input type='submit' value='Проверить ответы'>");
  35. }
  36. ?>
  37. </form>
  38. </body>
  39. </html>

(Отредактировано автором: 30 Января, 2008 - 21:06:43)

 
 Top
Kosteg
Отправлено: 11 Марта, 2008 - 01:08:11
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Март 2008  


Помог: 0 раз(а)




У меня похожая задача и возникло несколько вопросов:
1. Если имеется несколько тем тестов, получается для каждого из них нужно создавать свою таблицу в бд?
2.Возможно ли автоматизировать этот процесс?, т.е. имеется страница управления, где можно создать тему теста или добавить вопросы к уже имеющимся тестам?
3.Имеется, например 100 вопросов, а в тест нужно подать случайно 30, и что бы они не повторялись.
По поводу записи результатов в базу не откажусь ^_^.
З.ы. Просто пхп начал изучать совсем недавно, в связи с курсачом, а задача поставлена не простая(для меня по крайней мере). Поможете - спасибо огромное, нет, - ну на нет и суда нет =). Может кому то будет интересно - мало ли. Там еще есть ньюансы.

(Отредактировано автором: 11 Марта, 2008 - 01:13:59)

 
 Top
RomAndry Администратор
Отправлено: 11 Марта, 2008 - 02:03:23
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 913
Дата рег-ции: Янв. 2008  


Помог: 6 раз(а)




1. Нет, не обязтельно
достаточно создать таблицу тем, таблицу тестов и кросс-таблицу, которая свяжет тесты к теме.
2. Это в админ-части создаются темы. Создавая тест, выбирается тема.
3. Проще и быстрее вывести ВСЕ вопросы "перемешав" их, а потом выбрать из них нужное количество.

вот в кратце все пункты твоей задачи. Что конкретно не понятно или на каком этапе возникли ошибки - спрашивай.
 
My status
 Top
Kosteg
Отправлено: 11 Марта, 2008 - 12:09:07
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Март 2008  


Помог: 0 раз(а)




По поводу первого пункта. Можно привести пример?, а то у меня проблемно немного с базами данных. Щас мне главное с базой разобраться, потом попробую что нить сваять.
Но думаю вопросы еще возникнут ^_^, так что сильно не бейте ).
 
 Top
RomAndry Администратор
Отправлено: 11 Марта, 2008 - 13:10:08
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 913
Дата рег-ции: Янв. 2008  


Помог: 6 раз(а)




достаточно создать таблицу тем, таблицу тестов и кросс-таблицу, которая свяжет тесты к теме.
thems
id | name
1 ThemeA
2 ThemeB

tests
id | test
1 TestA
2 TestB
3 TestC
4 TestD

cross
theme_id | test_id
1 2
1 4
означает что у ThemeA есть 2 теста: TestB и TestD
 
My status
 Top
udo
Отправлено: 11 Марта, 2008 - 14:08:10
Post Id


Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Март 2008  


Помог: 0 раз(а)

[+][+]


вот пример

PHP:
скопировать код в буфер обмена
  1. function viewResult($id){
  2.     $rs=mysql_query("SELECT * FROM otvety WHERE id='".$id."'");
  3.     $data=mysql_fetch_array($rs);
  4.     $balls=0;
  5.     for($x=1;$x<11;$x++){
  6.         $rs=mysql_query("SELECT otvet FROM base WHERE bilet='".$data['bilet']."' AND nomer='".$x."'");
  7.         $data2=mysql_fetch_array($rs);
  8.         if($data["otvet".$x]==$data2['otvet']){
  9.             $balls++;
  10.         }
  11.     }
  12.     return $balls;
  13. }
  14. function viewError($id){
  15. echo '
  16. <html>
  17. <head>
  18. <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
  19. </head>
  20. <body>';
  21. echo '<br><h1 align=center><FONT COLOR="#FF0000">Вопросы, на которые Вы ответили неправильно!</h1></font>';
  22.     $rs=mysql_query("SELECT * FROM otvety WHERE id='".$id."'");
  23.     $data=mysql_fetch_array($rs);
  24.     for($x=1;$x<11;$x++){
  25.         $rs=mysql_query("SELECT image_file,otvet FROM base WHERE bilet='".$data['bilet']."' AND nomer='".$x."'");
  26.         $data2=mysql_fetch_array($rs);
  27.  
  28.         if($data["otvet".$x]!=$data2['otvet']){
  29.             echo '<img src="img/'.$data2["image_file"].'.gif" height="300" width="300">&nbsp;&nbsp;';
  30.         }
  31.     }
  32. echo '
  33. </body>
  34. </html>';


Отредактировано модератором: Dastar, 11 Марта, 2008 - 18:14:43
 
 Top
Kosteg
Отправлено: 11 Марта, 2008 - 17:59:20
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Март 2008  


Помог: 0 раз(а)




RomAndry А что подразумевается в таблице тесты под самим тестом? я так понимаю название теста? Следовательно нужно указать к какому тесту какие вопросы принадлежат, т.е. делать еще одну крос таблицу??
Мне вот так вот понимается. Может не с той стороны смотрю?
 
 Top
RomAndry Администратор
Отправлено: 11 Марта, 2008 - 19:09:09
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 913
Дата рег-ции: Янв. 2008  


Помог: 6 раз(а)




Kosteg
определитесь для начала с структурой и понятиями
я себе предстаил что есть темы, в них тесты, а в тестах вопросы
Если так то вопросам не нужна кросс-таблица, а только принадлежность к тестам
questions
id | pid | name
где pid это ID теста.
 
My status
 Top
Kosteg
Отправлено: 11 Марта, 2008 - 19:16:55
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Март 2008  


Помог: 0 раз(а)




Пасиб, теперь картина прояснилась. Со структурой и понятиями есть проблемы Растерялся . Воображение подводит. Пойду поштудирую мануалы пока. Еще вернусь Закатив глазки
 
 Top
Kosteg
Отправлено: 17 Апреля, 2008 - 14:32:46
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Март 2008  


Помог: 0 раз(а)




Здраствуйте. У меня были некоторые заминки с компом, поэтому не так далеко продвинулся в своей задачке. Вот, опять пришел к вам за помощью. Я накидал примерную БД для онлайн тестирования. Можете поглядеть на нее? и если есть недочеты, то посоветовать, что подправить и что не правильно. у меня малость проблемно с проектирование БД. У меня в голове еще есть кой какие таблицы, но с ними я думаю разберусь, там типа запись итогово теста и т.д.
Поясню на всякий случай таблицы:
thems - темы тестов(например в одной теме м.б. несколько тестов)
test - сами тесты
th_te - кросс таблица для связи thems и test
vopros - вопросы для тестов
otvet - ответы на вопросы
teacher и student - это данные преподов, которые будут создавать тесты и студентов, которые будут проходить их.
з.ы. что то еще хотел узнать, но пока писал мысль ушла. Позже думаю вспомню =)
Прикреплено изображение (Нажмите для увеличения)
db.jpg
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB