|
|
|
| По производственной необходимости необходимо написать обучающий тест.
Прочитав многие темы на форуме и покопавшись в нете, решила начать сама. Но т.к. я в этой совсем чайник - нужна помощь...
Сперва я составила две таблицы, одну с вопросами, другую с ответами, вот их структуры
таблица test_vopr
id_v тип int (3)
name_v тип varchar(250)
и таблицу test_otvet
id_ot тип int(3)
id_v тип int (3)
name_ot тип varchar(250)
correct тип int(1) -- значение 1 для правильного ответа, значение 0 - для всех остальных
и вывела их всех на страницу
<?
$q=mysql_query("select * from test_v ",$db);
if(!$q) {echo "error";}
echo "<table width='300' border='1'>";
while($tmp1 = mysql_fetch_array($q))
{ echo "<tr><td><font color='red'>вопрос: </font>".$tmp1['name_tv']."</br></tr></td>";
$q_otv=mysql_query("select * from test_otv where id_tv=".$tmp1['id_tv']."",$db);
while($tmp2 = mysql_fetch_array($q_otv))
{
echo "<tr><td><input type='checkbox' name='t_otv' value=".$tmp2'name_to'].">".$tmp2'name_to']."</br></tr></td>";
}
}
echo "<tr><td><input type='submit' name='next' value='продолжить'></td></tr>";
echo "</table>";
?>
|
Первый вопрос в том, как вывести не все вопросы сразу, а 5 хаотически выбранных системой и выводиться они должны по одному с кнопкой продолжить, нажимая на кот. должен выводится след. вопрос. | |
|
|
|
|
|
|
|
для: lilu
(18.10.2007 в 15:10)
| | У меня была похожая проблема. Достаешь все вопросы из базы. Потом shuffle($массив свопросами). И выводи первых пять, все равно они перемешены. Вот и достигнута хаотичность. | |
|
|
|
|
|
|
|
для: lilu
(18.10.2007 в 15:10)
| | при запросе к базе можно использовать конструкцию
select * from tbl order by rand;
|
| |
|
|
|
|
|
|
|
для: Саша
(19.10.2007 в 11:40)
| | Вот так я добилась чтобы выводились 5 вопросов случайно выбранных :
<? for($i=1; $i<=5; $i++){
$query=mysql_query("select * from test_v where id_pr='1'",$db);
$count=mysql_num_rows($query);
//echo $count."<br>";
$rnd=rand(1,$count);
//echo $rnd;
$q=mysql_query("select * from test_v where id_pr='1' AND id_tv=".$rnd."",$db);
//$count=($q);
if(!$q) {echo "error";}
echo "<table width='300' border='1'>";
while($tmp1 = mysql_fetch_array($q))
{
echo "<tr><td><font color='red'>вопрос: </font>".$tmp1['name_tv']."</br></tr></td>";
$q_otv=mysql_query("select * from test_otv where id_tv=".$rnd."",$db);
while($tmp2 = mysql_fetch_array($q_otv))
{
echo "<tr><td><input type='checkbox' name='t_otv' value=".$tmp2['name_to'].">".$tmp2['name_to']."</br></tr></td>";
}
echo "<tr><td><input type='submit' name='next' value='продолжить".$i."'></td></tr>";
}
echo "</table>";
}//for
?>
|
А вот как сделать чтобы на экране появлялись не все 5 а по одному вопросу, след.-ий вопрос должен появиться после нажатия кнопки продолжить...? | |
|
|
|