|
|
|
|
|
для: cheops
(10.06.2011 в 15:45)
| | Если сразу после else прописать инициализацию дня $namber_day = 1, то эта переменная везде будет равна единице, больше ничего не нарушается.
PS Если не сложно опишите вкратце что разрабатываете - откуда столько кнопок и почему важно отслеживать порядок их нажатия?
Это программа-план предположим на неделю. Есть рабочие дни ("новый день"), есть пропущенные ("Пропустить"). Рабочие дни делятся пронумерованными этапами.
Во время заполнения плана человек может не нажать "новый день" в самом начале составления, а вместо этого сразу нажать на какой-либо этап и тут наша программа выдаст ему "День №1" и этап соответственно.
Так же он после нажатия "Пропустить" опять сразу же нажимает на какой-либо этап и тут наша программа выдаст ему "День № такой-то" и этап соответственно.
А нумеровать все это хочу для удобства, что бы как можно меньше напрягать пользователя. | |
|
|
|
|
|
|
|
для: Чайчайвыручай
(10.06.2011 в 15:34)
| | А что происходит, если в обработчике "всех кнопок", сразу после else прописать инициализацию дня $namber_day = 1. Это нарушает логику работы других режимов? Если нарушает то каких?
<?php
...
if($name == "85")
{
// Это обработчик "Пропустить"
}
elseif ($name == "84")
{
// Это обработчик "Новый день"
}
else
{
$namber_day=1;
// Это обработчик всех остальных кнопок - тут нужно что-то сделать с $namber_day
}
?>
|
PS Если не сложно опишите вкратце что разрабатываете - откуда столько кнопок и почему важно отслеживать порядок их нажатия? | |
|
|
|
|
|
|
|
для: cheops
(10.06.2011 в 11:52)
| | Спасибо cheops, что обратили внимание! Я уже думал, это тема так и останется вопросом.
В скрипте есть две переменные, отвечающие за счет $namber_day и $namber_upr, последняя считает “остальные” кнопки, назовем их этапами. Счет этапов обнуляется (начинается с единицы), после срабатывания "Пропустить" или "Новый день", с ним все прекрасно.
"Новый день" считается с помощью переменной $namber_day. Все работает если срабатывает обработчик "Новый день". Я хочу, что бы он срабатывал (выводился на экран «новый день» и номер его увеличивался на единицу) не только при нажатии на соответствующую кнопку (“новый день”), но при срабатывании "else (обработчик всех остальных кнопок)" в двух случаях:
1. Если "else (обработчик всех остальных кнопок)" это первое нажатие кнопки.
Т.е. нажали на кнопку «этап», но забыли нажать на “новый день”, а мы все равно выводим : «День №1».
2. Если "else (обработчик всех остальных кнопок)" это нажатие кнопки после if($name == "85") { обработчик "Пропустить"} .
Т.е. нажали на кнопку «пропустить», но после этого забыли нажать “новый день” и сразу нажали на «этап». Мы все равно выводим: «День № такойто». | |
|
|
|
|
|
|
|
для: Чайчайвыручай
(09.06.2011 в 22:15)
| | Довольно тяжело ориентироваться на результат, когда невозможно воспроизвести работу скрипта (у нас нет таблицы otk). Скорее всего это приведет к тому, что ответа на вопрос вы не получите - нужно как-то менять постановку вопроса. Давайте упростим скрипт до схемы
<?php
...
if($name == "85")
{
// Это обработчик "Пропустить"
}
elseif ($name == "84")
{
// Это обработчик "Новый день"
}
else
{
// Это обработчик всех остальных кнопок - тут нужно что-то сделать с $namber_day
}
?>
| За "новый день" я так понимаю несет ответственность переменная $namber_day=1;, которая у вас инициализируется перед всеми обработчиками. Что это? Какое значение она должна принимать? Особенно когда нужен "новый день"? Это значение 1 или она должна увеличить значение на 1, чтобы начался новый день? | |
|
|
|
|
|
|
| Подскажите, пожалуйста, что надо сделать для вывода, который представлен ниже? Т.е. что бы новый день ($namber_day) начинался не только после нажатия кнопки с value="новый день", но и после нажатия кнопки value="2 этапа" или value="4 этапа”.
Пример вывода:
Номер этапа Отк
Номер дня $namber_day (Значит здесь “1” на месте "$namber_day", т.к. была нажата кнопка value=" новый день " или кнопка value="2 этапа")
1 2 этапа
2 4 этапа
Пропустить
Номер дня $namber_day (Значит здесь “2” на месте "$namber_day", т.к. была нажата кнопка value=" новый день " или кнопка value="2 этапа")
1 2 этапа
2 4 этапа
Номер дня $namber_day (Значит здесь “3” на месте "$namber_day", т.к. была нажата кнопка value=" новый день ")
1 2 этапа
2 4 этапа
Код:
<form action="otk.php" method="post">
<input name="a85” type="submit" value="Пропустить"><br>
<input name="a2" type="submit" value="2 этапа"><br>
<input name="a4" type="submit" value="4 этапа "><br>
<input name="a84" type="submit" value="новый день"><br>
<?php
echo "<table class='tableu'>
<tr width='750 px'>
<td >Номер этапа</td>
<td >Отк</td>
</tr>";
$namber_day=1;
$buttons = array();
if (isset($_COOKIE['buts'])) {
$buts = $_COOKIE['buts'];
$buttons = explode("#", $buts);
}
foreach ($buttons as $id)
{
if($id)
{
$name = substr($id, 1);
if($name == "85")
{$namber_upr=1;
echo "<tr>
<td ></td>
<td > Без отк</td>
</tr>";
}elseif ($name == "84")
{ $namber_upr=1;
echo "<tr>
<td ></td>
<td > Номер дня $namber_day</td>
</tr>"; $namber_day++;
}else{
$query = "SELECT title FROM otk WHERE id = $name LIMIT 1";
$result = mysql_query($query, $db);
if (!$result) {exit("Ошибка выполнения запроса - ".mysql_error());}
do {
if ($namber_upr) {
printf (
"<td>%s</td>
<td class='tdu'>%s</td>
</tr>", $namber_upr, mysql_result($result, 0);} $n++;
} while ($result<=$buts);
}}}
echo "</table>";
?> | |
|
|
|
|