Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> тест на php, как сделать вывод вопросов по очереди 
V
    Опции темы
MaxFoxxy
Дата 15.3.2010, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 24.6.2009

Репутация: нет
Всего: нет



Добрый день. вопрос собственно в том как выводить вопрос в с вариантами ответа в окошко по очереди а не все сразу?

Добавлено через 5 минут и 44 секунды
Сейчас все примерно так:
Код

$db=mysql_connect('localhost','root','');
if(!$db)
{
    echo"Невозможнл подключиться к базе данных";    
}
mysql_select_db("univer");

echo"<form method=POST  action='rezult.php' name='form'>";
echo"<center><p><input type='text' size='8' name='timer'></p></center>";
echo"<table>";
for($i=0;$i<$_SESSION['$KolQuestions'];$i++)
{
    $query="SELECT * FROM questions as q, theme as t WHERE t.theme_name='".$_SESSION['Theme1']."' AND t.theme_id=q.theme_id AND q.question_id='".$_SESSION['Questions'][$i]."'";
    $result=mysql_query($query);
    $row=mysql_fetch_array($result);
    echo"<I>$row[question]</I> <br>";
    
    for($j=0;$j<4;$j++) 
    {
    $RandomNumber[$j]=rand(1,4);
    
        for($k=0;$k<$j;$k++)
        {
            if($RandomNumber[$j]==$RandomNumber[$k])
            {
        
                while($RandomNumber[$j]==$RandomNumber[$k])
                {
                    $RandomNumber[$j]=rand(1,4);
                }
                    $k=-1;
            }
        }
    } 
    echo"<fieldset >
    
    
    <input type='radio' name='$i' value='".$row[ answer.$RandomNumber[0]]."'> '".$row[ answer.$RandomNumber[0]]."'<br>    
    <input type='radio' name='$i' value='".$row[ answer.$RandomNumber[1]]."'> '".$row[ answer.$RandomNumber[1]]."'<br>
    <input type='radio' name='$i' value='".$row[ answer.$RandomNumber[2]]."'> '".$row[ answer.$RandomNumber[2]]."'<br>
    <input type='radio' name='$i' value='".$row[ answer.$RandomNumber[3]]."'> '".$row[ answer.$RandomNumber[3]]."'<br>";
    echo"</fieldset>";
    $_SESSION[Otvet][$i]=$_POST[$i];
}
echo"</table>";
echo"<input type=submit name='OK' value='тестирование'>";
echo"</form>";
mysql_close($db);


Добавлено через 6 минут и 55 секунд
недавно начал изучение php. заранее спаибо
PM MAIL   Вверх
bars80080
Дата 15.3.2010, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(MaxFoxxy @  15.3.2010,  17:09 Найти цитируемый пост)
в окошко по очереди а не все сразу?

показываем одну форму с вопросами, пользователь выбирает ответ, жмёт кнопку, загружается следующая страница с новым вопросом.

так как у двух страниц идентичное построение, то это можно делать одним скриптом, изменяя только get-параметр
адрес первой страницы: http:/ /server.ru/script.php
второй: http:/ /server.ru/script.php?step=1
третий: http:/ /server.ru/script.php?step=2
и так далее

остаётся принять номер вопроса в скрипте из $_GET['step']
PM MAIL WWW   Вверх
MaxFoxxy
Дата 17.3.2010, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 24.6.2009

Репутация: нет
Всего: нет



если честно не до конца понял, а как тогда вопросы подтягивать? можна если не затруднит небольшой примерчик в студию... 
PM MAIL   Вверх
bars80080
Дата 17.3.2010, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(MaxFoxxy @  17.3.2010,  09:29 Найти цитируемый пост)
а как тогда вопросы подтягивать?

не подтягивать, а выдавать не больше одного на страницу. я говорю о перезагрузке страницы целиком.

вот у вас есть цикл с запросов выдачи вопроса:

Код

for($i=0;$i<$_SESSION['$KolQuestions'];$i++)
{
    $query="SELECT * FROM questions as q, theme as t WHERE t.theme_name='".$_SESSION['Theme1']."' AND t.theme_id=q.theme_id AND q.question_id='".$_SESSION['Questions'][$i]."'";

  
(кстати, запрос в цикле - суть дичь полная. всё можно сделать и одним запросом)

переделанный вариант будет выглядеть примерно так:

Код

$question = (isset($_GET['step'])) ? intval($_GET['step']) : 0;

$query="SELECT * FROM questions as q, theme as t WHERE t.theme_name='".$_SESSION['Theme1']."' AND t.theme_id=q.theme_id AND q.question_id='".$question."'";

то есть без цикла достаём один вопрос, в зависимости от параметра $_GET['step'], который передаётся по ссылке.

к примеру, при вопросе номер 1, адрес следующего можно указать в action формы:
Код

<form method=POST  action='http://server.ru/script.php?step=2' name='form'>


но в данном случае придётся совместить скрипт обработки результатов и скрипт выдачи вопроса
PM MAIL WWW   Вверх
MaxFoxxy
Дата 17.3.2010, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 24.6.2009

Репутация: нет
Всего: нет



честно... не пойму.... делать новые страницы с каждым новым вопросом?
у меня на первой странице формируется массив вопросов $_SESSION['Questions'][$i] случайным образом для каждого тестируемого и раньше я их выводил согласно этого массива а теперь както с каждым сабмитом надо выдавать их по одному. 
Как делать через step не пойму как его наращивать? я сравнительно недавно с этим делом связался.. опыту маловасто :(

Добавлено через 1 минуту и 53 секунды
и еще как после окончания всех вопросов теста перепрыгнуть на страничку результата и  статистики 
PM MAIL   Вверх
Ипатьев
Дата 17.3.2010, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



ну вот в этот $i и подставлять $_GET['step']
PM MAIL   Вверх
bars80080
Дата 17.3.2010, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(MaxFoxxy @  17.3.2010,  10:12 Найти цитируемый пост)
делать новые страницы с каждым новым вопросом?

нет, это всё один скрипт. какая разница между ними? только в номере вопроса, а номер ты задаёшь в ссылке ?step=3


Цитата(MaxFoxxy @  17.3.2010,  10:12 Найти цитируемый пост)
у меня на первой странице формируется массив вопросов $_SESSION['Questions'][$i] случайным образом для каждого тестируемого и раньше я их выводил согласно этого массива а теперь както с каждым сабмитом надо выдавать их по одному.

а теперь тоже самое, только без цикла один вопрос:

$step = (isset($_GET['step'])) ? intval($_GET['step']) : 0;
    $query="SELECT * FROM questions as q, theme as t WHERE t.theme_name='".$_SESSION['Theme1']."' AND t.theme_id=q.theme_id AND q.question_id='".$_SESSION['Questions'][$step]."'";

один раз вначале создал случайный список, пользователь перешёл на страницу вопросов script.php и ты ему отдаёшь, вначале вопрос с номером $_SESSION['Questions'][$step], а в экшн формы прописываешь следующий:

Код

echo "<form method=POST  action='http://server.ru/script.php?step=".($step + 1)."' name='form'>";

он жмёт сабмит, переходит на этот же скрипт, но с другим значением step, в итоге получит другой вопрос.


Цитата(MaxFoxxy @  17.3.2010,  10:12 Найти цитируемый пост)
и еще как после окончания всех вопросов теста перепрыгнуть на страничку результата и  статистики  

дык, результаты в тот же массив сессий и записывай $_SESSION['result'][$step] = $_POST['answer'];

в конце, последний экшн формы направляешь на страницу, где обрабатываются результаты
PM MAIL WWW   Вверх
MaxFoxxy
Дата 18.3.2010, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 24.6.2009

Репутация: нет
Всего: нет



оп)) спс большое!!! разобрался...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0973 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.