passshift
@passshift
php, js, html5, css

Как выделить выбранные пункты меню исходя из параметров $_GET?

Здравствуйте!

Делаю простую сортировку по Производителю.

Имеется форма со списком производителей:

<form action="" method="get">
    <input type="checkbox" name="brands[]" value="59" > Adidas<br><br>
    <input type="checkbox" name="brands[]" value="72" > Rebook<br><br>
    <input type="checkbox" name="brands[]" value="56" > Nike<br><br>
    <input type="submit" value="Показать">
</form>


отправляющая GET-запрос, из него можно выбрать сразу несколько путем установки checkbox-а. После сохранения получаю строку вида:

... ?proizvoditel=1&proizvoditel=2&proizvoditel=3 ....


Все параметры отправляются в модель и по итогу на странице видны только товары определенных производителей, но мне нужно отметить выбранные checkbox-ы, как у всех нормальных людей.

Каким образом такое реализовать?

Спасибо за отклик.
  • Вопрос задан
  • 2511 просмотров
Решения вопроса 2
samoilenkoevgeniy
@samoilenkoevgeniy
Lead Full-Stack Web Developer
Каким образом применяются фильтры? Просто редиректом или аякс подгрузкой и подкидыванием урла в адресную строку?
В первом варианте - да, надо js использовать
Во втором варианте - просто при сборке в очередной раз страницы с поиском во вьюхе проверяйте, выбран ли чек бокс основываясь на тех же ГЕТ Параметрах и все!

Смогу пояснить более детально ,если пойму что за cms/cmf/etc.

UPDATE
Во-первых, у вас проблема и в гет параметре в вашем примере будет только последний производитель, чтобы там были все производители используйте гет массивы так, чтобы получилась строка такая:
... ?proizvoditel[]=1&proizvoditel[]=2&proizvoditel[]=3 ....

В таком случае в том месте, где вы выводите чек-боксы производителей проверяйте так:
Если в гет массиве есть элемент с номером один - то выводите чекбокс этого производителя с аттрибутом checked, и так далее...
p.s. Как смог объяснил, не идеально конечно. Но точней я не могу сказать, пока не увижу что и как, но общая идея должна быть более чем понятна.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
passshift
@passshift Автор вопроса
php, js, html5, css
Заработало с такой проверкой у каждого Checkbox-а:

<?php echo in_array($key, $params['proizvoditel'] ? $params['proizvoditel'] : array()) ? 'checked' : ''; ?>


т.е. форма выглядит так:

<form action="" method="get">
    <?php foreach ($brands as $key => $value) : ?>
        <input type="checkbox" name="brands[]" value="<?php echo $key; ?>" <?php echo in_array($key, $brand_sort ? $brand_sort : array()) ? 'checked' : ''; ?>> <?php echo $value; ?><br>
    <?php endforeach; ?>

    <input type="submit" value="Показать">
</form>


насколько красиво вообще?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы