Сохранение состояния checkbox при обновлении страницы и пагинации

ИА
На сайте с 12.02.2014
Offline
63
778

Доброго времени.

Подскажите, как сделать сохранение состояния чекбоксов в фильтре товаров при обновлении страницы и пагинации.

Точнее даже вопрос, как сделать это в динамически создаваемом input, с обычным, который не формируется на основе данных из БД все работает. И при обновлении страницы и при пагинации. Даже ссылку можно кому-нибудь скинуть и в ней будет все отмечено.

Рабочий код такой на простом input:

<ul>	
<li><input type="checkbox" name="wifi" value="1" id="r5" <?=isset($_GET[wifi]) ? ' checked="checked"' : ''?> /><label for="r5">Да</label></li>
</ul>

В динамическом input такое не проходит, пробовал такой вариант, в этом случае фильтр отбирает товар как надо, но в чекбоксе отмечаются все производители, а не только выбранный.

while($row = mysql_fetch_assoc($query)) 
{
echo '<li><input type="checkbox" name="manufacturer[]" ';?><?=isset($_GET['manufacturer']) ? ' checked="checked"' : ''?><?php echo ' value="'.$row['manufacturer'].'" id="t'.$row['id'].'" /><label for="t'.$row['id'].'">'.$row['manufacturer'].'</label></li>';
}

Пробовал и так:

{  
echo '<li><input type="checkbox" name="manufacturer[]" ';?><?=isset($_GET['manufacturer'][$_GET['manufacturer']) ? ' checked="checked"' : ''?><?php echo ' value="'.$row['manufacturer'].'" id="t'.$row['id'].'" /><label for="t'.$row['id'].'">'.$row['manufacturer'].'</label></li>';
}

Выдает ошибку syntax error, unexpected ')', expecting ']'

Или так

while($row = mysql_fetch_assoc($query)) //Будем писать в массив данные, пока есть строчки в таблице 
{
echo '<li><input type="checkbox" name="manufacturer[]" ';?><?=isset($_GET['manufacturer'][$row['manufacturer']]) ? ' checked="checked"' : ''?><?php echo ' value="'.$row['manufacturer'].'" id="t'.$row['id'].'" /><label for="t'.$row['id'].'">'.$row['manufacturer'].'</label></li>';
}

Сам фильтр работает, но чекбокс не отмечается.

Кусок PHP код обработчика фильтра отвечающий за производителя

if (isset($_GET["manufacturer"])) { $where = addWhere($where, "`manufacturer` IN ("."'".htmlspecialchars(implode("','", $_GET["manufacturer"]))."'".")");}

Так как тут GET, то все переменные уходят в УРЛ, он получается вида

мой-сайт.ру?page=2&price_start=&price_end=&size_h=&size_w=&manufacturer%5B%5D=Asus&filter=Показать

Пробовал вытащить переменную из URL и подставить ее, тоже не помогает.

if(isset($_GET['manufacturer']))
{
$manufacturer = $_GET['manufacturer'];
}

Уже всю голову сломал как отметить их...

Как можно реализовать сохранение отмеченных checkbox при таком коде?

M
На сайте с 04.12.2013
Offline
223
#1
Илья Артурович:
Так как тут GET, то все переменные уходят в УРЛ, он получается вида
мой-сайт.ру?page=2&price_start=&price_end=&size_h=&size_w=&manufacturer%5B%5D=Asus&filter=Показать


Пробовал вытащить переменную из URL и подставить ее, тоже не помогает.

Нужно наследовать все параметры фильтра. Ну и воссоздавать состояние формы на этой основе, естественно.

---------- Добавлено 15.03.2019 в 13:09 ----------

P.S. Пустышки, как у вас, лучше не пихать в адрес, чтобы не загромождать его без надобности.

---------- Добавлено 15.03.2019 в 13:14 ----------

Илья Артурович:
filter=Показать
Настолько пригрелись в танке, что вылезать вообще не хоЦА? :)
Домены и скрипт для коротких ссылок: https://u75.ru/domains-for-shortcuts

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий