|
|
|
| Здравствуйте!
Кому под силу такая задача?
// Здесь просто задаются куки
<?php
$mypost = $_POST;
$buts = "";
$pbuts = "";
if (isset($_COOKIE['buts'])) {
$buts = $_COOKIE['buts'];
$pbuts = $buts;
}
foreach ($mypost as $key => $val) {
$buts .= $key."#";
}
if ($pbuts != $buts) {
setcookie("buts", "$buts");
header("Location:/index.php");
}
?>
// Форма
<form action="index.php" method="post">
<input name="a" class="knopka" type="submit" value="Кнопка"><br>
<input name="a2" class="knopka" type="submit" value="Кнопка2"><br>
<input name="a3" class="knopka" type="submit" value="Кнопка3"><br>
</form>
<?php
$buttons = array();
if (isset($_COOKIE['buts'])) {
$buts = $_COOKIE['buts'];
$buttons = explode("#", $buts);
}
foreach ($buttons as $id)
{
$x = count($buttons);
$y = $x - 3;
$z = $x - 2;
// $z - нынешнее значение, $y - предыдущее значение
if ($buttons[$y]=="a" and $buttons[$z]!="a" and $buttons[$z]!="a3")
{
// array_splice вставляет значение "a2" в массив $buttons, перед нынешним значением
array_splice($buttons, $z, 0, "a2");
}
if ($id == "a2"){
echo "Кнопка2"
}elseif($id == "a3"){
echo "Кнопка3"
}}
print_r ($buttons);
?>
print_r ($buttons) выводит желаемый результат с помощью функции array_splice только в момент срабатывания первого if. После того как нажата еще одна кнопка результат функции array_splice исчезает. Почему и как это исправить? | |
|
|
|
|
|
|
|
для: Чайчайвыручай
(29.06.2011 в 13:42)
| | Кто решит эту задачу первый. Может скинуть мне номер телефона на voroshilov555@mail.ru и сто рублей на Вашем счету | |
|
|
|
|
|
|
|
для: Чайчайвыручай
(29.06.2011 в 13:54)
| | опишите пожалуйста функцию которую должен выполнять Ваш скрипт | |
|
|
|
|
|
|
|
для: Valick
(29.06.2011 в 14:31)
| | Скрипт должен выводить значения кнопок. А что именно не ясно? | |
|
|
|
|
|
|
|
для: Чайчайвыручай
(29.06.2011 в 14:37)
| | честно сказать ничего не ясно
просто значения кнопок и все? тогда зачем там всего так много наворочано?
array_splice - обязательно к применению? | |
|
|
|
|
|
|
|
для: Valick
(29.06.2011 в 14:41)
| | array_splice - обязательно к применению?
Нет.
тогда зачем там всего так много наворочано?
print_r ($buttons) выводит
например: Array ( [0] => a2 [1] => a3 [2] => a2 [3] => a3 [4] => a [5] =>)
Если ключ =>элемент, [5] =>не равен "а" и [5] =>не равен "а3", равен например "а5", т.е. [5] =>"а5".
Тогда print_r ($buttons) выводит:
Array ( [0] => a2 [1] => a3 [2] => a2 [3] => a3 [4] => a [5] =>а2 [6] =>а5 [7] =>). Все как задуманно.
Но после того как нажата еще одна кнопка, например "а6"
print_r ($buttons) выводит:
Array ( [0] => a2 [1] => a3 [2] => a2 [3] => a3 [4] => a [5] =>а5 [6] =>а6 7] =>), а надо что бы выводилось: Array ( [0] => a2 [1] => a3 [2] => a2 [3] => a3 [4] => a [5] =>а2 [6] =>а5 [7] =>а6) | |
|
|
|
|
|
|
|
для: Чайчайвыручай
(29.06.2011 в 15:18)
| | кнопок а5 и а6 я у Вас в коде вообще не видел... как прикажите понимать?
невозможно написать рабочий код там где нет логики
я вас просил обьяснить логику вот этого:
$x = count($buttons);
$y = $x - 3;
$z = $x - 2;
|
я так понимаю изменения в массиве не нужно сохранять в кукисы? | |
|
|
|
|
|
|
|
для: Valick
(29.06.2011 в 15:42)
| | кнопок а5 и а6 я у Вас в коде вообще не видел... как прикажите понимать?
У меня на самом деле у меня таких страниц 7 и на каждой по 10 кнопок. Я добавил а5 и а6, что бы объяснить то что должен делать скрипт.
я вас просил обьяснить логику вот этого:
$x = count($buttons);
$y = $x - 3;
$z = $x - 2;
Логика здесь простая: считаю колличество элементов. $z - это ключ нынешнего элемента, а $y - это ключ предыдущего элемента. Они необходимы для того что бы возможно было при определенном сценарии (который я описывал выше) в массив вставлялось дополнительное значение, это я реализовывал с помощью функции array_splice.
я так понимаю изменения в массиве не нужно сохранять в кукисы?
Как раз это и нужно. Это у меня и не получается | |
|
|
|
|
|
|
|
для: Чайчайвыручай
(29.06.2011 в 17:20)
| | Как раз это и нужно. Это у меня и не получаетсятак а в куку измененный массив кто будет переписывать? Пушкин? :)
да и лучше в куку записывать массив предварительно обработав его функцией serialize()
и наконец главный вопрос почему именно кука используется для хранения данной информации?
У меня на самом деле у меня таких страниц 7 и на каждой по 10 кнопок.
ну не томите признайтесь честно что это за страницы, что это за кнопки, как это в целом называется? игра? аукцион? лотерея? лохотрон? или что? | |
|
|
|
|
|
|
|
для: Valick
(29.06.2011 в 17:41)
| | Как это самое изменение записать? | |
|
|
|
|
|
|
|
для: Чайчайвыручай
(29.06.2011 в 17:45)
| | Вы абсолютно не хотите отвечать на мои наводящие вопросы, а зря :(
записать очень просто - установить куку с новым значением... | |
|
|
|
|
|
|
|
для: Valick
(29.06.2011 в 17:48)
| | Как это сделать я не знаю. Поэтому и код такой "навороченный":
<?php
$mypost = $_POST;
$buts = "";
$pbuts = "";
if (isset($_COOKIE['buts'])) {
$buts = $_COOKIE['buts'];
$pbuts = $buts;
}
foreach ($mypost as $key => $val) {
$buts .= $key."#";
}
if ($pbuts != $buts) {
setcookie("buts", "$buts");
header("Location:/index.php");
}
?> | |
|
|
|
|
|
|
|
для: Valick
(29.06.2011 в 17:41)
| | ну не томите признайтесь честно что это за страницы, что это за кнопки, как это в целом называется? игра? аукцион? лотерея? лохотрон? или что?
Это план, который составляет пользоватьль для себя. А изменения вносить нужно в том случае, если человек забыл нажать кнопку, а по логике значение этой кнопки должно там быть. | |
|
|
|
|
|
|
|
для: Чайчайвыручай
(29.06.2011 в 17:49)
| | ну наконец-то :)
это нужно было написать в самом первом посте
теперь все понятно, но Вы движетесь немного не в том направлении | |
|
|
|
|
|
|
|
для: Valick
(29.06.2011 в 18:01)
| | Я рад, что Вам понятно. Еще больше меня обрадует решение.
А что не так с направлением | |
|
|
|
|
|
|
|
для: Чайчайвыручай
(29.06.2011 в 18:04)
| | готовое решение - это дорогое удовольствие ;)
а вот информационную поддержку я готов оказать всегда.
надо немного подумать.... | |
|
|
|
|
|
|
|
для: Valick
(29.06.2011 в 18:18)
| | У меня все работает нормально, направление менять не надо, только подскажите как записать это в куки, этого будет более чем достаточно | |
|
|
|
|
|
|
|
для: Чайчайвыручай
(29.06.2011 в 13:42)
| | Не понятно. Есть три кнопки, что должно быть на выходе? Я гляжу первая кнопка обрабатывается отдельно от других. Чем они отличаются друг от друга?
>print_r ($buttons) выводит желаемый результат с помощью функции array_splice только в момент
>срабатывания первого if.
Под "первым" if имеется в виду вот этот?
if ($buttons[$y]=="a" and $buttons[$z]!="a" and $buttons[$z]!="a3")
{
// array_splice вставляет значение "a2" в массив $buttons, перед нынешним значением
array_splice($buttons, $z, 0, "a2");
}
|
>После того как нажата еще одна кнопка результат функции array_splice исчезает.
В чем это выражается? не выводится содержимое массива $buttons или в нем что-то лишнее? Нельзя ли добавить вызов array_splice($buttons, $z, 0, "a2"); в оставшиеся if-блоки? | |
|
|
|
|
|
|
|
для: cheops
(29.06.2011 в 19:12)
| | В чем это выражается?
просто нет сохранения этого результата в кукисы, и в последствии происходит чтение старого результата для работы. | |
|
|
|
|
|
|
|
для: Valick
(29.06.2011 в 19:30)
| | В чем это выражается?
просто нет сохранения этого результата в кукисы, и в последствии происходит чтение старого результата для работы.
Да да да. Так и есть.
Как мне сохранить новое значение $buttons в кукисы? | |
|
|
|
|
|
|
|
для: cheops
(29.06.2011 в 19:12)
| | Первый if именно тот на который Вы указали.
Необходимый результат описывал выше, повторюсь:
print_r ($buttons) выводит
например: Array ( [0] => a2 [1] => a3 [2] => a2 [3] => a3 [4] => a [5] =>)
Если ключ =>элемент, [5] =>не равен "а" и [5] =>не равен "а3", равен например "а5", т.е. [5] =>"а5".
Тогда print_r ($buttons) выводит:
Array ( [0] => a2 [1] => a3 [2] => a2 [3] => a3 [4] => a [5] =>а2 [6] =>а5 [7] =>). Все как задуманно.
Но после того как нажата еще одна кнопка, например "а6"
print_r ($buttons) выводит:
Array ( [0] => a2 [1] => a3 [2] => a2 [3] => a3 [4] => a [5] =>а5 [6] =>а6 7] =>), а надо что бы выводилось: Array ( [0] => a2 [1] => a3 [2] => a2 [3] => a3 [4] => a [5] =>а2 [6] =>а5 [7] =>а6)
Нельзя ли добавить вызов array_splice($buttons, $z, 0, "a2"); в оставшиеся if-блоки?
Нет он нужен только в первом if | |
|
|
|
|
|
|
|
для: Чайчайвыручай
(29.06.2011 в 19:32)
| | setcookie("buts",implode("#",$buttons));
print_r ($buttons); | |
|
|
|
|
|
|
|
для: Valick
(29.06.2011 в 19:44)
| | Спасибо за ответ!
Но у меня выводит ошибку:
Warning: Cannot modify header information - headers already sent by (output started at X:\home......
Перевод:
Предупреждение: Не удается изменить информацию заголовка - заголовки уже прислал (выход начался в X: \ домой | |
|
|
|
|
|
|
|
для: Чайчайвыручай
(29.06.2011 в 19:32)
| | - | |
|
|
|
|
|
|
|
для: Valick
(29.06.2011 в 19:45)
| | Warning: Cannot modify header information - headers already sent by (output started at X:\home. | |
|
|
|
|
|
|
|
для: Чайчайвыручай
(29.06.2011 в 20:49)
| | кукисы должны устанавливаться до любого вывода в браузер, будь то символ, будь то спец символ или даже пробел (хотя это тоже символ) | |
|
|
|
|
|
|
|
для: Valick
(29.06.2011 в 21:08)
| | Пробую, но почему то мой adobe dreamweaver ругается на </table>. Пока не понимаю почему | |
|
|
|
|
|
|
|
для: Чайчайвыручай
(29.06.2011 в 21:16)
| | Или ругается не на </table>
Ошибка следующая: Parse error: syntax error, unexpected $end in X:\home
Перевод: Синтаксическая ошибка: синтаксическая ошибка, неожиданный конец $ в X: \ домой | |
|
|
|
|
|
|
|
для: Valick
(29.06.2011 в 21:08)
| | Устанавливаю кукисы до любого вывода в браузер, но все равно выдает ошибку типа: кукисы уже были установленны. Можно ли повторно их устанавливать? | |
|
|
|
|
|
|
|
для: Чайчайвыручай
(29.06.2011 в 22:34)
| | вроде да, код нужно сохранять в utf-8 без bom
про пробелы до <?php и после ?> тоже не забывайте
вывод это не только echo , но и любой html код | |
|
|
|