PHP URL GET параметры, если существуют, заменить? - PullRequest
8 голосов
/ 05 февраля 2011

Попытка выполнить расширенный поиск с возможностью сортировки различных параметров ASC или DESC.

Пример URL:

search.php?accom_type=x&no_rooms=x&rooms_total=x&prop_area=x&rent_less=&rent_more=&available=&go=Search&sd=a

Выделенный жирный шрифт - это опция & sd (направление сортировки).Предыдущие переменные передаются через заполненную форму.

Теперь у меня есть такие ссылки:

<a href="<?=$_SERVER['REQUEST_URI']?>&sd=a">ASC</a>|<a href="<?=$_SERVER['REQUEST_URI']?>&sd=d">DESC</a>

Что явно не так, потому что я использую REQUEST_URI - потому чтоесли человек изменится после его первоначальной установки, URL будет:

&sd=a&sd=d

Я уверен, что сталкивался с этой проблемой раньше, но не могу понять, как я ее решил.

Как проверить, установлен ли уже GET (например, sd), и если да, измените его, в противном случае добавьте его в конец URL-адреса, чтобы получить ссылки, показанные выше.

Редактировать:Может быть, скриншот поможет понять: http://dl.dropbox.com/u/10591127/Capture.PNG

Ура, Мэтт

1 Ответ

20 голосов
/ 05 февраля 2011

Вы можете использовать суперглобальный $ _GET для получения каждой отдельной переменной get. Если вы поместите это в массив, вы можете перезаписать любое значение, просто установив его снова:

$params = $_GET;
$params['sd'] = "whateveryoulike";
$paramString = http_build_query($params);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...