[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как организовать цикл?
Russl
Здравствуйте, помогите, пожалуйста решить проблему. Никак не могу понять, как сделать, чтобы программа выполнилась определенное число раз. Поясню на моем примере. Я пытаюсь написать код для решения билетов ПДД. В каждом билете 20 вопросов. На стартовой странице юзер выбирает номер билета и попадает на страницу с первым вопросом. Вопросы читаются из тестовых файлов (до БД мне далеко). файлы разложены по папкам. например первый вопрос первого билета находится в папку 1/1.1/text.txt, второй вопрос первого билета 1/1.2/text.txt и т.д. Как сделать, чтобы, после нажатия пользователем кнопки "следующий вопрос", переменная увеличилась на одну единицу и программа началась заново сначала, но со значением на единицу больше.
Циклы с for, while приводят к тому, что программа выводит сразу 20 билетов, без остановки, не дожидаясь ответа пользователя на вопрос.
Извините за сумбурность, часов 6 подряд сижу уже за PHP. Подскажите как грамотно организовать такой цикл. Спасибо



Спустя 2 часа, 37 минут, 4 секунды (17.08.2008 - 02:14) Adil написал(а):
А покажи свой код, так легчебудет разобраться.

P.S. Вообще чтобы при нажатии на кнопку, переменная увеличивалась на 1,то можно сделать это при помощи куки или сессий. В данном примере просто покажу на сессиях:

Цитата
- Проверяем нажата ли кнопка, и если нажата, то:
- смотрим есть ли сессия под названием $_SESION[count]
- если такой сессии нет,то создаем сессию и присваиваем ей 1.
- если такая сессия имеется берем ее значение и увеличиваем на один


Пример:

Код
<?php
session_start();

    if (isset($_POST['next'])) {
        if (!isset($_SESSION['count'])) {
            $_SESSION['count']="1";
        }

        else{

            $_SESSION['count']+="1";
    
        }
    }


?>

   <form action="" method=post>
   <input type=submit value="Следующий" name="next">
   </form>

Спустя 12 часов, 30 минут, 51 секунда (17.08.2008 - 14:45) Russl написал(а):
Вот мой код, он конечено корявый, это первый мой опыт, по ходу дела много приходится читать, изучать. Не судите строго. Готов выслушать конструктивные замечания. Этот код не работае, он просто выдает сразу 20 билетов (они пока пустые)
<?php
//скрипт будет работать, если была нажата кнопка start_button
if (isset($_POST['start_button']))
{
//определяем переменные
$category=$_POST['category']; //категория транспорьного средства
$bulliet_number=$_POST['bulliet_number']; //номер билета
$squation_number=1;
}
//скрипт должен выполняться 20 раз
while ($squation_number<20)
{

?>
<table width="60%" border="1" bgcolor="#FFFFFF" align="center">
<tr>
<td width="33%" bgcolor="#C0C0C0">Категория ТС:
<?php echo $category ?></td>
<td width="33%" bgcolor="#C0C0C0">Билет№
<?php echo $bulliet_number ?></td>
<td width="33%" bgcolor="#C0C0C0">Вопрос№
<?php echo $squation_number ?></td>
</tr>
<tr>
<td colspan="3">&nbsp;</td>
</tr>
</table>
<?php
//окрываем файл text.txt для чтения
$text_url=$category.'/'.$bulliet_number.'/'.$bulliet_number.'.'.$squation_number.'/text.txt';
echo $text_url;
$f=fopen($text_url,"rt") or die ("Не могу открыть файл, обратитесь к администратору");

?>
<FORM method="POST">
<input type="submit" name="next_button" value="Следующий вопрос">
</FORM>
<?php if (!isset($_POST['next_button']))
{
$squation_number++;
}
}
?>


Спустя 7 часов, 49 минут, 27 секунд (17.08.2008 - 22:35) linedmk написал(а):
Дык тута циклы и не нужны. Тут надо в форме сделать невидимое поле в котором будет номер вопроса, и при ответе юзера просто выводить вопрос то шо был плюс адын и так до 20-го вопроса

Спустя 22 часа, 41 минута, 41 секунда (18.08.2008 - 21:16) Russl написал(а):
Цитата(linedmk @ 17.8.2008, 19:35) [snapback]46318[/snapback]
Дык тута циклы и не нужны. Тут надо в форме сделать невидимое поле в котором будет номер вопроса, и при ответе юзера просто выводить вопрос то шо был плюс адын и так до 20-го вопроса

а почему при нажатии на кнопку "следующий" программа решит, что надо идти в начало и все проделать заново (если вопрос глупый извините)

Спустя 1 час, 56 минут, 36 секунд (18.08.2008 - 23:13) linedmk написал(а):
Цитата(Russl @ 18.8.2008, 22:16) [snapback]46404[/snapback]
Цитата(linedmk @ 17.8.2008, 19:35) [snapback]46318[/snapback]
Дык тута циклы и не нужны. Тут надо в форме сделать невидимое поле в котором будет номер вопроса, и при ответе юзера просто выводить вопрос то шо был плюс адын и так до 20-го вопроса

а почему при нажатии на кнопку "следующий" программа решит, что надо идти в начало и все проделать заново (если вопрос глупый извините)

Прикольный вопрос acute.gif smile.gif) Хотя хм... и в самом деле откуда она узнает...
А! наверное Вы ее научите! smile.gif)

Спустя 15 часов, 47 минут, 54 секунды (19.08.2008 - 15:01) Russl написал(а):
Цитата(linedmk @ 18.8.2008, 20:13) [snapback]46409[/snapback]
Цитата(Russl @ 18.8.2008, 22:16) [snapback]46404[/snapback]
Цитата(linedmk @ 17.8.2008, 19:35) [snapback]46318[/snapback]
Дык тута циклы и не нужны. Тут надо в форме сделать невидимое поле в котором будет номер вопроса, и при ответе юзера просто выводить вопрос то шо был плюс адын и так до 20-го вопроса

а почему при нажатии на кнопку "следующий" программа решит, что надо идти в начало и все проделать заново (если вопрос глупый извините)

Прикольный вопрос acute.gif smile.gif) Хотя хм... и в самом деле откуда она узнает...
А! наверное Вы ее научите! smile.gif)

Прикольный ответ.Но не по существу. Я ожидаю помощи.Что бы направили на путь истинный.

Спустя 11 часов, 9 минут, 54 секунды (20.08.2008 - 02:11) linedmk написал(а):
Данные с форм когда-нибудь обрабатывали? Если нет то почитайте.
Ну а на счет вопросов, то сначала выводите страницу с первым вопросом, в скрытом поле пишите этот номер вопроса
Код
<form ...>
...
<input type="hidden"  name="num_question" value="1">
...
</form>

после нажатия на кнопочку "следующий вопрос" данные отправятся на сервер, там проверяете номер вопроса, если меньше 20, то увеличиваете на единицу, и выводите страницу с полученным номером вопроса. Возможно нужно будет использовать сессии для хранения результатов

Спустя 13 часов, 1 минута, 30 секунд (20.08.2008 - 15:12) Russl написал(а):
Цитата(linedmk @ 19.8.2008, 23:11) [snapback]46504[/snapback]
Данные с форм когда-нибудь обрабатывали? Если нет то почитайте.
Ну а на счет вопросов, то сначала выводите страницу с первым вопросом, в скрытом поле пишите этот номер вопроса
Код
<form ...>
...
<input type="hidden"  name="num_question" value="1">
...
</form>

после нажатия на кнопочку "следующий вопрос" данные отправятся на сервер, там проверяете номер вопроса, если меньше 20, то увеличиваете на единицу, и выводите страницу с полученным номером вопроса. Возможно нужно будет использовать сессии для хранения результатов

спасибо за желание помочь, мысль понятна, буду пробовать


_____________
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.