|
|
|
| Можно ли вчерашнюю процедуру:
/
function otbor()
{
if (@mysql_num_rows($_POST['q_tries'])<1)
{
//вывод списка вопросов с ответами из базы
$sql="select unique_code,n_vopr,formul from voprosnik";
$result=mysql_query($sql);
while ($row=mysql_fetch_array($result))
{
echo "<b><br>".$row['n_vopr']." ".$row['formul']."</b><br>";
$sql1="select formulirovka from Answer_store where unique_code=".@$row['unique_code'];
$result1=mysql_query($sql1);
while ($row1=mysql_fetch_array($result1))
{
echo '<input name="box[]" type="checkbox">'.$row1['formulirovka']."<br>";
}
}
}
else
{
$id_tests=@$_POST['ID_test'];
$id_user=@$_POST['ID_user'];
//выбираем только те вопросы из данного теста, на которые пользователь не отвечал
$sql="SELECT unique_code, n_vopr, formul
FROM voprosnik
WHERE n_test=$id_tests
AND n_vopr NOT IN(SELECT n_vopr FROM History WHERE id_tests=$id_tests AND ID_user=$id_user)
ORDER BY RAND() //перемешиваем вопросы
LIMIT 10"; // и берем только 10 вопросов
$result=mysql_query($sql);
while($voprosy=mysql_fetch_array($result))
{
/*тт мы запрашиваем и выдаем пользователю варианты ответов на вопросы*/
echo "<b><br>".$row['n_vopr']." ".$row['formul']."</b><br>";
$sql1="select formulirovka from Answer_store where unique_code=".@$row['unique_code'];
$result1=mysql_query($sql1);
while ($row1=mysql_fetch_array($result1))
{
echo '<input name="box[]" type="checkbox">'.$row1['formulirovka']."<br>";
}
}
if (mysql_num_rows($result)<10) //если не задававшихся вопросов менее 10, то добираем из уже заданных
{
$limit=10-mysql_num_rows($result);
$sql="SELECT unique_code, n_vopr, formul
FROM voprosnik
WHERE n_test=$id_tests
AND n_vopr IN(SELECT n_vopr FROM History WHERE id_tests=$id_tests AND ID_user=$id_user)
ORDER BY RAND()
LIMIT $limit"; // добираем недостающие вопросы
$result=mysql_query($sql);
while($voprosy=mysql_fetch_array($result))
{
/*тут мы выдаем пользователю варианты ответов на вопросы*/
echo "<b><br>".$row['n_vopr']." ".$row['formul']."</b><br>";
$sql1="select formulirovka from Answer_store where unique_code=".@$row['unique_code'];
$result1=mysql_query($sql1);
while ($row1=mysql_fetch_array($result1))
{
echo '<input name="box[]" type="checkbox">'.$row1['formulirovka']."<br>";
}
}
}
}
}
otbor()
|
изменить так, чтобы получилась вот такая:
Процедура отбора вопросов для предъявления. По заданному ИД теста и макс. количеству баллов подобрать из потенциального списка вопросов список, набирающий требуемое количество баллов. Входные параметры – ID теста и потенциальный список вопросов. Выходные – назначаемый список вопросов.
PS: как видите, я сделал из нее функцию, чтобы, в случае чего, можно было ее вызвать ещё раз. Она рабочая, но я хочу сделать ещё одну функцию, которую описал выше. Подскажите, пожалуйста что нужно изменить или добавить... :) | |
|
|
|
|
|
|
|
для: do_cool
(24.11.2006 в 14:47)
| | >По заданному ИД теста и макс. количеству баллов подобрать из потенциального списка >вопросов список, набирающий требуемое количество баллов. Входные параметры – ID >теста и потенциальный список вопросов. Выходные – назначаемый список вопросов.
Немного не понял: нужно чтобы количество сумма баллов 10 вопросов была равна какому-то значению? Если да, то откуда оно берется? жестко задано изначально? и как оцениваются вопросы (порядок значений)? | |
|
|
|
|
|
|
|
для: Loki
(24.11.2006 в 15:19)
| | >>По заданному ИД теста и макс. количеству баллов подобрать из потенциального списка >вопросов список, набирающий требуемое количество баллов. Входные параметры – ID >теста и потенциальный список вопросов. Выходные – назначаемый список вопросов.
>
>Немного не понял: нужно чтобы количество сумма баллов 10 вопросов была равна какому-то значению? Если да, то откуда оно берется? жестко задано изначально? и как оцениваются вопросы (порядок значений)?
Да, Вы правы, количество баллов будет задаваться преподавателем жестко при помощи формы редактора теста - ее я создам позже.Вопросы оцениваются так - за каждый првильный ответ - 2 балла, за неверный ответ -1 балл, за пропущенный верный ответ - 0 баллов. | |
|
|
|
|
|
|
|
для: do_cool
(24.11.2006 в 17:28)
| | Передавайте тогда в функцию еще необходимое количество баллов, эту переменную делите на два и вставляейте ее вместо десяток. | |
|
|
|
|
|
|
|
для: Loki
(24.11.2006 в 18:07)
| | Необходимое количество баллов в функцию я передал, только, пардон, не понял зачем эту переменную делить на два?
Может быть Вы примерно напишите и тогда я пойму... | |
|
|
|
|
|
|
|
для: do_cool
(25.11.2006 в 08:40)
| | у вас же за вопрос дается два балла... следовательно, чтобы набрать N баллов нужно ответить на N/2 вопросов | |
|
|
|
|
|
|
|
для: Loki
(25.11.2006 в 12:04)
| | аааа...все, понял, спасибо. | |
|
|
|