Вывести один вопрос и варианты ответа, а не всё сразу
Вопрос: Что такое Гидрид окиси водорода?
1. Вода наверно.
2. Такого элемента в природе нет.
3. вещество выделяющееся при катализе соединений водорода
4. Правильного ответа нет.
[следующий вопрос]
У меня все вопросы-ответы получаются в одной странице, а я хочу по одному вопросу поочерёдно (нажимаете на кнопку "следующий вопрос" и переходите к следующему).
Не подскажите куда мне с лопатой идти???
Вопрос: Что такое Гидрид окиси водорода?
1. Вода наверно.
2. Такого элемента в природе нет.
3. вещество выделяющееся при катализе соединений водорода
4. Правильного ответа нет.
[следующий вопрос]
Вопрос: Что такое двуокись водорода?
1. девушки вроде волосы обесцвечивают этим.
2. Такого элемента в природе нет.
3. Это лучше не смешивать с кислотной средой.
4. Правильный ответ не здесь.
[следующий вопрос]
Вопрос: Что вообще такое химия?
1. предмет такой есть.
2. учи науку химию она тебе нужна.
3. когда целуешь девушку реакция сильна.
4. Истина где-то там.
[следующий вопрос]
А я хочу по одному вопросу.:(
<html>
<?php
//print_r("Hello");
$conn=mysql_connect("localhost", "root", "");
mysql_select_db("faq",$conn);
mysql_query("SET NAMES cp1251");
$voprosi = mysql_query("select * from Quests where anketaID=1",$conn);
if(! $voprosi )
{
die('Что то не то:' . mysql_error());
}
echo "Можно начинать<br>\n";
while($voprosi_column = mysql_fetch_array($voprosi, MYSQL_ASSOC))
{
echo "<fieldset>";
echo "<FORM method=\"post\">";
echo "<P>";
echo "Вопрос: {$voprosi_column["question"]} <br> ";
$otveti=mysql_query("select * from answs where questID={$voprosi_column["id"]}");
while($otveti_column = mysql_fetch_array($otveti, MYSQL_ASSOC))
{
echo "<input type=\"radio\" name=\"otvet\" value=\"{$otveti_column["id"]}\">{$otveti_column["answer"]}<br>";
// echo "     {$otveti_column["answer"]}<br>";
}
echo "<INPUT type=\"submit\" value=\"Следующий вопрос\">";
echo "</P>";
echo "</FORM>";
echo "</fieldset>";
mysql_close($conn);
?>
</html>
Я полагаю, что при выборке тестов надо использовать в качестве фильтра - id. Что давно применяется всеми нормальными людьми. Т.е. если question_id не установлен, то вытаскиваете самый первый. Иначе вытаскиваете тот, который указан в question_id. Потому что здесь, судя по данному "коду" у вас нет привязки к id вопроса (если такой id вообще существует).
Ну или можно извратиться то же самое с помощью LIMIT прикрутить.
Нет. а что это такое?
Ну или можно извратиться то же самое с помощью LIMIT прикрутить.
Структура таблиц:
drop table if exists Quests;
create table Quests(
id bigint(20) auto_increment,
anketaID bigint(20),
question varchar(250),
constraint pk_QestID primary key(id),
constraint fk_AnketaID foreign key(anketaID) references Anketas(id) on update cascade
)engine=InnoDB;
drop table if exists Answs;
create table Answs(
id bigint(20) auto_increment,
questID bigint(20),
answer varchar(250),
is_right bool,
constraint pk_AnswID primary key(id),
constraint fk_QuestID foreign key(questID) references Quests(id) on update cascade on delete cascade
)engine=InnoDB;
Посчет темы. Ну так и используйте
"select * from Quests where anketaID=1 and id=%d", где %d - меняете в зависимости от того вопроса, который надо показать.
А как? ведь со всеми переменными происходит что-то вроде free(somevar) то есть они умирают, как сохранить их живыми?;
Уж такова структура скриптов таких, что приходится много раз к БД обращаться.
Уж такова структура скриптов таких, что приходится много раз к БД обращаться.
Спасибо брат, сессий то что надо. чтож вы раньше про сессий молчали.
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1251" />
<title>Опрос</title>
</head>
<script type="text/javascript">
function next_question(current_id, next_id) {
if (next_id.length > 0) {
document.getElementById(next_id).style.display = 'block';
document.getElementById(current_id).style.display = 'none';
}
}
</script>
<body>
<?php
// создаем массив с вопросами и ответами
$question = array (
"Что такое Гидрид окиси водорода?" =>
array("Вода наверно.",
"Такого элемента в природе нет.",
"вещество выделяющееся при катализе соединений водорода",
"Правильного ответа нет.",
),
"Что такое двуокись водорода?" =>
array("девушки вроде волосы обесцвечивают этим",
"Такого элемента в природе нет.",
"Это лучше не смешивать с кислотной средой.",
"Правильный ответ не здесь.",
),
"Что вообще такое химия?" =>
array("предмет такой есть.",
"учи науку химию она тебе нужна.",
"когда целуешь девушку реакция сильна.",
"Истина где-то там.",
),
);
// ВЫВОД РЕЗУЛЬТАТОВ
if (isset($_POST['count'])) {
echo "Результаты: <br />";
for ($i = 0; $i < (int)($_POST['count']); $i++) {
echo "№".$i." = ".$_POST['q'.$i]."<br />";
}
}
echo "<form action='?' method='post'>";
$i = 0;
foreach ($question as $k => $v) {
$i++;
echo "\n<div id='qd".($i-1)."' style='";
if ($i>1) echo "display: none;";
else echo "display: block;";
echo "'>";
// вывод вопроса
echo "<b>".$i.". ".$k."</b><br />";
// начинаем выводить варианты ответов
echo "<ul>";
for ($ii = 0; $ii < count($v); $ii++) {
echo "<li><input type='radio' name='q".($i-1)."' value='".$ii."' />".$v[$ii]."</li>";
}
echo "</ul>";
if (($i+1) <= count($question)) {
// вывод ссылки след. вопрос
echo "<a href='java script: next_question(";
if ($i!=count($question)) echo "\"qd".($i-1)."\", \"qd".($i)."\"";
else echo "\"q".($i-1)."\", \"\"";
echo ");'>След. вопрос</a>";
} else {
// вывод кнопки Закончить
echo "<input type='hidden' name='count' value='".count($question)."' />";
echo "<input type='submit' value='Просмотреть результаты' />";
}
echo "</div>";
}
echo "</form>";
?>
</body>
</html>
Уж такова структура скриптов таких, что приходится много раз к БД обращаться.
вообще за это по рукам надо бить.