|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
12.06.2016, 21:17 | #1 |
Пользователь
Регистрация: 05.09.2011
Сообщений: 12
|
Как запомнить нажатый checkbox?
У меня интернет магазин. В нем фильтр товаров по трем параметрам.
Фильтр работает, но чекбоксы сбрасываются, из-за этого постраничная навигация криво работает. При переходе на следующую страницу фильтры уже не работают. Подскажите пожалуйста как запомнить что чекбоксы активны. Код фильтрации товаров. Здесь сразу и вывод по категориям и фильтрация. PHP код:
Код HTML:
<form class="form-filter" action="#" method="post"> <div class="panel"> <div class="panel-heading"> <table> <tr> <th>Производитель</th> </tr> <?php foreach ($brands as $brandItem): ?> <tr> <td> <input type="checkbox" name="brandItem[]" id="brand<?php echo $brandItem['id'];?>" value="<?php echo $brandItem['id'];?>"> <label for="brand<?php echo $brandItem['id'];?>"><?php echo $brandItem['name'];?></label> </td> </tr> <?php endforeach; ?> <tr> <th>Ткань</th> </tr> <?php foreach ($cloths as $clothItem): ?> <tr> <td> <input type="checkbox" name="clothItem[]" id="cloth<?php echo $clothItem['id'];?>" value="<?php echo $clothItem['id'];?>"> <label for="cloth<?php echo $clothItem['id'];?>"><?php echo $clothItem['name'];?></label> </td> </tr> <?php endforeach; ?> <tr> <th>Размер</th> </tr> <?php foreach ($sizes as $sizeItem): ?> <tr> <td> <input type="checkbox" name="sizeItem[]" id="size<?php echo $sizeItem['id'];?>" value="<?php echo $sizeItem['id'];?>"> <label for="size<?php echo $sizeItem['id'];?>"><?php echo $sizeItem['name'];?></label> </td> </tr> <?php endforeach; ?> <tr> <td> <input type="submit" name="submit" class="btn btn-default search-filter" value="Найти"> </td> </tr> </table> </div> </div> </form> Последний раз редактировалось Distemper; 12.06.2016 в 21:28. |
12.06.2016, 22:03 | #2 |
Старожил
Регистрация: 31.05.2010
Сообщений: 3,301
|
В случае с фильтрами GET практичнее, чем POST – так как позволяет сохранять состояние фильтров непосредственно в URL для каждой страницы.
Если использовать POST – то можно сохранять состояние фильтров в сессии. Соответственно, при формировании страницы мы берём эти параметры фильтров из $_GET или $_SESSION, в зависимости от выбранного варианта. |
12.06.2016, 22:37 | #3 | |
Пользователь
Регистрация: 05.09.2011
Сообщений: 12
|
Цитата:
Можете подсказать как сделать с сессиями? |
|
12.06.2016, 23:10 | #4 | |
Пользователь
Регистрация: 05.09.2011
Сообщений: 12
|
Цитата:
PHP код:
|
|
12.06.2016, 23:12 | #5 |
Старожил
Регистрация: 31.05.2010
Сообщений: 3,301
|
Если существуют данные из формы ($_POST) – то переменные $checkBrand, $checkCloth и $checkSize получают свои значения из $_POST (как это и сделано сейчас) + происходит запись этих значений в $_SESSION для последующих страниц.
Иначе – эти переменные получают свои значения из $_SESSION (если там есть соответствующие значения для этих переменных, само собой). |
12.06.2016, 23:33 | #6 | |
Старожил
Регистрация: 31.05.2010
Сообщений: 3,301
|
Цитата:
Активировать нужный чекбокс нужно примерно так: PHP код:
|
|
13.06.2016, 21:37 | #7 | |
Пользователь
Регистрация: 05.09.2011
Сообщений: 12
|
Цитата:
PHP код:
|
|
13.06.2016, 21:44 | #8 |
Пользователь
Регистрация: 05.09.2011
Сообщений: 12
|
Если через $_POST отправлять данные то всегда при обновлении страницы будет спрашивать подтверждение повторной отправки формы, подскажите пожалуйста?
При $_GET такого не будет? |
13.06.2016, 21:51 | #9 | |||
Старожил
Регистрация: 31.05.2010
Сообщений: 3,301
|
Алгоритм сохранения и использования данных в/из $_SESSION (getProductsListByCategory):
Цитата:
Цитата:
Цитата:
|
|||
13.06.2016, 22:46 | #10 |
Пользователь
Регистрация: 05.09.2011
Сообщений: 12
|
Проверяю есть ли данные в $_POST. Если есть то заношу их в сессию (надеюсь верно, но не уверен).
PHP код:
PHP код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как определить нажатый панель StatusBar-а | SASFM | Компоненты Delphi | 2 | 27.12.2015 18:26 |
Как выполнить функцию в случае нажатия на CheckBox, если данный CheckBox был добавлен через код? | PAMAC | Microsoft Office Excel | 7 | 21.02.2013 15:33 |
Как запомнить координаты Image? | werrey | Общие вопросы Delphi | 4 | 21.07.2011 23:08 |
Как запомнить строку.... | Avvakymova | Паскаль, Turbo Pascal, PascalABC.NET | 10 | 13.05.2011 23:55 |
Как запомнить столько Данных? | valerij | Microsoft Office Excel | 18 | 03.05.2010 19:52 |