Код (PHP): function url_cat(){ $url = substr($_SERVER['REQUEST_URI'], strlen('/index.php?')); return $url."&cat"; } выводит http://domain/index.php?param%3Dall%26cat=5 вместо http://domain/index.php?param=all&cat=5 как заменить %3D на знак (=) ? PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
посмотри что пришло в $_SERVER['REQUEST_URI'] твой пример у меня работает почитай про отладку http://phpfaq.ru/debug https://php.net/manual/ru/function.rawurldecode.php https://php.net/manual/ru/function.parse-url.php https://php.net/manual/ru/function.http-build-query.php Добавлено спустя 1 минуту 26 секунд: p@R@dox 55RU почитай https://en.wikipedia.org/wiki/Percent-encoding
Код (PHP): function url_cat(){ $url = substr($_SERVER['REQUEST_URI'], strlen('/index.php?')); return rawurldecode($url."&cat"); } в урл все равно %3D может это зависит от того, что эту функцию формирую через отправку формы <form method="get" ? PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
Код (PHP): <? function url_cat(){ $url = substr($_SERVER['REQUEST_URI'], strlen('/index.php?')); return rawurldecode($url."&cat"); } ?> <form method="get"> <select name="<? url_cat(); ?>"> <option value='1'>1</option> </select> </form> PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
Пиши код внутри тегов code=php В какой момент тебя не устраивает %3D: Ссылка в браузере до отправки формы Ссылка в HTML Ссылка после отправки формы и т.д. и ты перепутал похоже action для тега form, вписал путь в name для тега select. https://php.net/manual/ru/tutorial.forms.php
action подошел бы для post запроса, а у меня get , мне нужно построить ссылку вида : http://domain/index.php?param=all&cat=5 , чтобы при выборе options 1 параметр в ссылке менялся на &cat=1 , &cat=6 и тд. Если функцию прописать в action, ничего не происходит
А всё потому что ты можешь прочитать книгу по "PHP и HTML для начинающих" и понять в чём у тебя ошибка в алгоритме. http://htmlbook.ru/html/select Код (PHP): <select name="cat"> <option value="1">Пункт 1</option> <option value="6">Пункт 6</option> </select>
у меня в коде стоит <option value="6">Пункт 6</option> , но при чем здесь это? я же спрашивал, как декодировать ссылку ???? вернемся на самое начало Код (PHP): <? function url_cat(){ $url = substr($_SERVER['REQUEST_URI'], strlen('/index.php?')); return rawurldecode($url."&cat"); } ?> <form method="get"> <select name="<? url_cat(); ?>"> <option value='1'>1</option> <option value='2'>2</option> <option value='3'>3</option> <option value='4'>4</option> <option value='5'>5</option> <option value='6'>6</option> </select> </form> с помощью приведенного кода получаем ссылку - http://domain/index.php?param%3Dall%26cat=5 Вопрос : как убрать %3D ? и получить знак = ? Как получить ссылку http://domain/index.php?param=all&cat=5 ??? rawurldecode - помогает до GET , а после нет. В книге "для новичков", про декодирование ни слова не сказано PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
select name= <- что у тебя тут в результате? Код (PHP): $url_array = parse_url('http://example.com/index.php?param%3Dall%26cat=5'); $url_array['query'] = rawurldecode($url_array['query']); echo $url_array['scheme'].'://'.$url_array['host'].$url_array['path'].'?'.$url_array['query'];
Код (PHP): $url = substr($_SERVER['REQUEST_URI'], strlen('/index.php?')); что это? страшно то как стало. Мегахреновая строчка. Что она вообще должна вернуть? Если $_SERVER['REQUEST_URI'] меньше 11 символов, то она не вернёт ничего вообще. А в вашем примере это именно так. Дальше, вам надо отправить ваш параметр cat. что за ересь, мил человек? Код (PHP): <form method="get" action="2.php"> <select name="cat"> <option value='1'>1</option> <option value='2'>2</option> <option value='3'>3</option> <option value='4'>4</option> <option value='5'>5</option> <option value='6'>6</option> </select> <input type="submit"/> </form> Другой вариант, что я недопонял и вам надо не переходить на ссылку, а только передать её параметром (хотя и в этом случае по-хорошему указывается action всё равно). Тогда выше постом уважаемый Денис ссылку привёл к нормальному виду.