За последние 24 часа нас посетили 20230 программистов и 1718 роботов. Сейчас ищут 1811 программистов ...

Беда с удалением бренда из адресной строки.

Тема в разделе "PHP для новичков", создана пользователем gERYH, 19 авг 2014.

  1. gERYH

    gERYH Новичок

    С нами с:
    24 июл 2014
    Сообщения:
    18
    Симпатии:
    1
    Помогите пожалуйста. Я уже выкладывал вопрос чтобы разрешить эту проблему но плохо его объяснил поэтому прошу прощенья что напрягал неопрятным вопросом. Цель: есть вот такая строка

    /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
    Там на бренды нажимаете и они добавляются с запятыми а удаляются с запятыми в зависимости от положения в строке если бренды не последние то удаляется "бренд," а если последний то уже ",бренд".
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.114
    Симпатии:
    1.244
    Адрес:
    там-сям
    Честно говоря, считаю как сделано в примере — не айс. Вместо чекбоксов ставить ссылки… Ну да ладно.
    По существу: имеем множество значений (в массиве). Преобразование массива в строку очевидно:
    Код (PHP):
    1. $str = implode(',', $array);
    Добавить значение ко множеству
    Код (PHP):
    1. if (!in_array($value, $array)) $array[] = $value;
    а убрать значение из множества:
    Код (PHP):
    1. if (($index = array_search($value, $array)) !== false) unset($array[$index]);
    После чего строишь строку через implode и все дела!

    На форуме недавно проскакивало элегантное решение с индексами массива вместо значений, но это уже следующий уровень :) Сделай чтобы работало, а улучшать можно бесконечно.

    Добавлено спустя 3 минуты 58 секунд:
    Бонус: нагуглил формирование строки-через-запятую из чекбоксов на javascript: тыц. Сам не проверял, вроде правдоподобно.
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Пример понятен. Цель-то какая? =)
     
  4. gERYH

    gERYH Новичок

    С нами с:
    24 июл 2014
    Сообщения:
    18
    Симпатии:
    1
    artoodetoo Спасибо огромнейшее за ответ. Но чё-то моя дурная башка не доганяет в каком смысле добавить значение ко множеству? Конкретней что в переменной $value должно хранится?
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    хочешь-то ты чего?
     
  6. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.584
    Симпатии:
    1.762
    Я фильтры в магазине делал так: заключил чекбоксы в формы, и использовал чудесный метод jQuery serialize - и всё. Это его проблемы были, сколько чекбоксов отмечено, а не мои.
     
  7. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Это добавляет ко множеству т.е. к массиву.
     
  8. gERYH

    gERYH Новичок

    С нами с:
    24 июл 2014
    Сообщения:
    18
    Симпатии:
    1
    Я хочу чтобы когда человек отжимает чекбокс с брендом то из адресной строки удалялся этот бренд вместе с запятой что стоит после бренда тоесть
    До

    /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

    Тоесть должны удалятся если это бренд не последний удаляется (бренд и запятая), если бренд последний удаляется (запятая и бренд).
     
  9. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    во-первых, это js
    во-вторых, тебе надо после того как чел протыкал нужные галки просто перенаправить браузер на новый урл с учетом выбранных пунктов, и всё.