Помогите пожалуйста. Я уже выкладывал вопрос чтобы разрешить эту проблему но плохо его объяснил поэтому прошу прощенья что напрягал неопрятным вопросом. Цель: есть вот такая строка /amino/amino-complex/parameters?brand=biotech-usa,bpi-sports,multipower&start_price=70&end_price=200&sort=price-up В ней после "brand=" идёт перечисление брендов т.е нажатые чекбоксы и смысл таков что когда человек чекбокс отжимает то из адресной строки удаляется бренд этот с запятой если он не последний т.е /amino/amino-complex/parameters?brand=biotech-usa,bpi-sports,multipower&start_price=70&end_price=200&sort=price-up /amino/amino-complex/parameters?brand=bpi-sports,multipower&start_price=70&end_price=200&sort=price-up А если он последний как multipower то удаляется соответственно с запятой перед словом ,multipower. /amino/amino-complex/parameters?brand=biotech-usa,bpi-sports,multipower&start_price=70&end_price=200&sort=price-up /amino/amino-complex/parameters?brand=biotech-usa,bpi-sports&start_price=70&end_price=200&sort=price-up Пример можно увидеть вот по этой ссылке http://arni.ua/sportivnoe-pitanie/protein Там на бренды нажимаете и они добавляются с запятыми а удаляются с запятыми в зависимости от положения в строке если бренды не последние то удаляется "бренд," а если последний то уже ",бренд".
Честно говоря, считаю как сделано в примере — не айс. Вместо чекбоксов ставить ссылки… Ну да ладно. По существу: имеем множество значений (в массиве). Преобразование массива в строку очевидно: Код (PHP): $str = implode(',', $array); Добавить значение ко множеству Код (PHP): if (!in_array($value, $array)) $array[] = $value; а убрать значение из множества: Код (PHP): if (($index = array_search($value, $array)) !== false) unset($array[$index]); После чего строишь строку через implode и все дела! На форуме недавно проскакивало элегантное решение с индексами массива вместо значений, но это уже следующий уровень Сделай чтобы работало, а улучшать можно бесконечно. Добавлено спустя 3 минуты 58 секунд: Бонус: нагуглил формирование строки-через-запятую из чекбоксов на javascript: тыц. Сам не проверял, вроде правдоподобно.
artoodetoo Спасибо огромнейшее за ответ. Но чё-то моя дурная башка не доганяет в каком смысле добавить значение ко множеству? Конкретней что в переменной $value должно хранится?
Я фильтры в магазине делал так: заключил чекбоксы в формы, и использовал чудесный метод jQuery serialize - и всё. Это его проблемы были, сколько чекбоксов отмечено, а не мои.
Я хочу чтобы когда человек отжимает чекбокс с брендом то из адресной строки удалялся этот бренд вместе с запятой что стоит после бренда тоесть До /amino/amino-complex/parameters?brand=biotech-usa,bpi-sports,multipower&start_price=70&end_price=200&sort=price-up После /amino/amino-complex/parameters?brand=biotech-usa,bpi-sports&start_price=70&end_price=200&sort=price-up Так же и с брендами не последними До /amino/amino-complex/parameters?brand=biotech-usa,bpi-sports,multipower&start_price=70&end_price=200&sort=price-up После /amino/amino-complex/parameters?brand=bpi-sports,multipower&start_price=70&end_price=200&sort=price-up Тоесть должны удалятся если это бренд не последний удаляется (бренд и запятая), если бренд последний удаляется (запятая и бренд).
во-первых, это js во-вторых, тебе надо после того как чел протыкал нужные галки просто перенаправить браузер на новый урл с учетом выбранных пунктов, и всё.