На сервер посылается поисковый запрос в виде массива (приблизительно так - ttp[11]=yes). В базе найдено множество соответствий, происходит постраничная разбивка результата поиска: Код (PHP): $pagination = и так далее.... Но в момент создания гипертекстовой ссылки (href) квадратные скобки "обрезаются" и на выходе получается вот это - ....&ttp=. (т.е. пусто). Вот обработчик, где это происходит: Код (PHP): $pagination_href_chunk = "?"; foreach ($_REQUEST as $get_key => $get_value){ if ($get_key == "page") continue; if ($pagination_href_chunk != "?"){ $pagination_href_chunk.= "&"; }; $pagination_href_chunk.=urlencode($get_key)."=".urlencode($get_value) ; }; Из $_REQUEST ttp[11]=yes получается ttp= Помогите решить проблему. PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
https://secure.php.net/manual/ru/function.parse-url.php https://secure.php.net/manual/ru/function.parse-str.php пример #1 там где два аргумента в функции А вот создание ссылки https://secure.php.net/manual/ru/function.http-build-query.php
Я не понял вашу мысль. Если можете помочь, то помогите поправить вышеприведенный код. А слать к мануалам и я могу.
Вот зачем было это писать? Я что телепат, дал ссылки на правильные функции, просто напиши что всё равно не понятно. Код (PHP): <?php $url = 'http://example.com/?ttp[10]=one&ttp[20]=two'; $query = parse_url($url, PHP_URL_QUERY); parse_str($query, $query_array); $query_array['ttp'][20] = 'three'; $url_modified = http_build_query($query_array); echo $url_modified.'<hr>'; // test $query = parse_url('http://example.com/?'.rawurldecode($url_modified), PHP_URL_QUERY); parse_str($query, $query_array); echo '<pre>'; var_export($query_array);
Поставить php5 не могу. Слишком много кода надо переделывать. А я не программист а системщик. Поэтому и обратился к вам за конкретной помощью (в виде кода а не в виде отсылок на рессурсы и намеки на програмирование).
А я надеюсь, что найдется добрый человек, который поможет сделать за меня. Если Вам слабо, так и не мешайте сбыться надежде )) Перенесите.
alikmakh так при чём тут я и другие? Кто мог знать что у тебя PHP 4. Люди могут почитать твои упрёки и решить не помогать тебе. Код (PHP): $query = 'ttp%5B10%5D=one&ttp%5B%5D=three'; function my_parse_str($query_string) { $query_array = explode('&', $query_string); $query = array(); foreach ($query_array as $v) { $param_value = explode('=', $v); $param = urldecode($param_value[0]); $value = urldecode($param_value[1]); if ( preg_match("/^[a-z0-9_-]+$/i", $param) ) { $query[$param] = $value; } else if ( preg_match("/^([a-z0-9_-]+)\[([a-z0-9_-]+)\]$/i", $param, $matches) ) { $query[$matches[1]][$matches[2]] = $value; } else if ( preg_match("/^([a-z0-9_-]+)\[\]$/i", $param, $matches) ) { $query[$matches[1]][] = $value; } } return $query; } $q = my_parse_str($query); $q['ttp'][10] = 'two'; function my_http_build_query($query_array, $array_key = null) { $chunk = ''; if(is_array($query_array)) { foreach ($query_array as $key => $value) { if(is_array($value)) { $chunk .= my_http_build_query($value, $key); } else if($array_key) { $chunk .= '&'.urlencode($array_key.'['.$key.']').'='.urlencode($value); } else { $chunk .= '&'.urlencode($key).'='.($value); } } } return $chunk; } var_export(my_http_build_query($q)); на PHP 4.4.9 проверил, примерно в этом направлении.
denis01 святой человек! нянчится с вами как с собственными детьми. так, на всякий случай: PHP 4 давно умер, лучше его не используйте. и если в книжке упоминается, что примеры должны выполняться в PHP 4, это значит что книжка сильно старая и пора искать свежую редакцию.
artoodetoo пытаюсь чтобы люди поняли как себя вести, чтобы им помогали. У него там много legacy code как я понял, который уже работает и переписывать нет смысла или бюджета.
Я уже об этом говорил, что перейти на php5 нет возможности - сайт большой (CRM) и много кода надо переделывать а я не программист - я системщик, которому "в наследство" достался этот CRM с корявым кодом. Добавлено спустя 5 минут 51 секунду: Спасибо. Попробую ваш код, если получится....
Я пока не прикручивал. Завтра попробую. Но уже видно, что Вы сильно помогли - код работает. Осталось только "прикрутить" его к нашему CRMу. Ещё раз спасибо большое! Вы добрый человек
Ваш код работает, но я нашел попроще. Прочитал про php переменную, которая извлекает строковый http запрос. Вот как я решил эту задачу: