[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Передача массива по ссылке
Strannik
Здравствуйте. Подскажите, как передать массив по ссылке.

массив
metro[] имеет значения знач1, знач2,знач3,...,знач4
$pmetro=metro[];

написал таким образом

$nextpage = '<a href= ./index.php?type=rent&rooms='.$prooms.'&metro='.http_build_query($pmetro).'&pr='.$pprice_one.'&pr2='.$pprice_to.'&page='. ($page + 1) .'>Следущая</a>

но тогда параметр metro имеет вид metro=0=знач1

А мне нужно чтобы в ссылке передался такой же массив metro[], как и он и был вначале

Подскажите как это можно сделать?



Спустя 20 минут, 18 секунд (19.06.2011 - 23:30) Игорь_Vasinsky написал(а):
чёт, я не совсем понял твою конструкцию.
может:
$metro = array("знач1","знач2","знач3");

и выходит, что
$metro[0] = знач1 

и т.д

Спустя 9 минут, 1 секунда (19.06.2011 - 23:39) Strannik написал(а):
именно так. но по ссылке передать не могу корректно.

Спустя 8 минут, 55 секунд (19.06.2011 - 23:48) Игорь_Vasinsky написал(а):
так может покажешь по секрету http_build_query() - чё она у тя за массив возращает wink.gif

Или стой, у тя это массив "несколько разных опций возращает" - чего то одного ? так?

если так - то из массива нужно сформировать строку типа:

знач1,знач2,знач3

Потом считывать GET , разбирать - и работать.

Спустя 3 минуты, 34 секунды (19.06.2011 - 23:51) Strannik написал(а):
конечно
если одно значение передать, то выходит
metro=0=вднх
а мне нужен такой же массив $metro = array("знач1")

Спустя 56 секунд (19.06.2011 - 23:52) Игорь_Vasinsky написал(а):
запутал, покажи весь урл, каким он должен быть

Спустя 4 минуты, 34 секунды (19.06.2011 - 23:57) Strannik написал(а):
$pervpage = '<a href= ./index.php?type=rent&rooms='.$prooms.'&metro='.http_build_query($pmetro).'&pr='.$pprice_one.'&pr2='.$pprice_to.'&page=1>Начало</a>

и на выходе я должен из параметра metro получить массив вида array("знач1","знач2","знач3")

Спустя 13 минут, 53 секунды (20.06.2011 - 00:11) Renden написал(а):
Strannik
Покажи код функции http_build_query();

Спустя 46 секунд (20.06.2011 - 00:11) Игорь_Vasinsky написал(а):
echo массив даст - array, что то я не въезжаю...
какты в урл с array("знач1","знач2","знач3") будешь работать.

Ты покажи без php - на чистом html какая ссылка должна быть.

Спустя 2 минуты, 36 секунд (20.06.2011 - 00:14) Игорь_Vasinsky написал(а):
типа:

./index.php?type=rent&rooms=что то&metro=раз, два, три ....


Тогда:

Цитата
Или стой, у тя это массив "несколько разных опций возращает" - чего то одного ? так?

если так - то из массива нужно сформировать строку типа:

знач1,знач2,знач3

Потом считывать GET , разбирать - и работать.

Спустя 5 минут, 43 секунды (20.06.2011 - 00:20) Renden написал(а):
Игорь_Vasinsky, я тоже так понял.

Strannik Ну получаешь гет и бьешь его.

$metro = explode(",", $_GET['metro']);
print_r($metro);

Спустя 6 минут, 32 секунды (20.06.2011 - 00:26) Игорь_Vasinsky написал(а):
Renden
В том то и дело, у него функция возращает массив, а надо чтоб строку.

т.е. либо вместо формирования массива - создавать строку, либо делать это после создания массива (implode()), не знай как у него там удобней.

Спустя 7 часов, 40 минут, 46 секунд (20.06.2011 - 08:07) linker написал(а):
Ссылка тут нафиг не нужна, если я правильно понял
$metro = array(1, 2, 3, 4);
$nextpage = '<a href= ./index.php?type=rent&rooms='.$prooms.'&metro[]='.implode('&metro[]=', $metro).'&pr='.$pprice_one.'&pr2='.$pprice_to.'&page='. ($page + 1) .'>Следущая</a>';

Спустя 1 день, 2 часа, 47 минут, 5 секунд (21.06.2011 - 10:54) Strannik написал(а):
linker
возникает ошибка implode(): Invalid arguments passed in ...........

Спустя 1 минута (21.06.2011 - 10:55) linker написал(а):
$metro должно быть массивом.

Спустя 50 секунд (21.06.2011 - 10:56) Adil написал(а):
А что нельзя сериализовать массив и передать?

Спустя 4 минуты, 13 секунд (21.06.2011 - 11:00) linker написал(а):
А зачем лишняя работа по сериализации/десериализации?

Спустя 1 час, 27 минут, 37 секунд (21.06.2011 - 12:28) Strannik написал(а):
проблема еще в том, что у меня значения могут быть
$array=('библиотека имени Горьького', 'бульвар имени толстого')


и когда я делаю

$nextpage = '<a href= ./index.php?type=rent&rooms='.$prooms.'&metro[]='.implode('&metro[]=', $metro).'&pr='.$pprice_one.'&pr2='.$pprice_to.'&page='. ($page + 1) .'>Следущая</a>';


Получаю строку вида
......metro[]=библиотека 


а дальше строка обрезана, почему так?

и как можно решить проблему?

Спустя 19 минут, 46 секунд (21.06.2011 - 12:48) linker написал(а):
Strannik
Для каждого значения используй urlencode()

Спустя 14 минут, 33 секунды (21.06.2011 - 13:02) Strannik написал(а):
если я правильно понимаю, нужно сделать так:
$metro=(urlencode('библиотека имени Горьького'), urlencode('бульвар имени толстого'));


но есть проблема:

у меня значения на страницу формирования строки передаются методом $_POST
т.е.
$metro=$_POST["metro"]

и поэтому применять urlencode к каждому элементу массива я не могу.

а если сделать:

$nextpage = '<a href= ./index.php?type=rent&rooms='.$prooms.'&metro[]='.implode('&metro[]=', urlencode($metro)).'&pr='.$pprice_one.'&pr2='.$pprice_to.'&page='. ($page + 1) .'>Следущая</a>';


то получим пустое значение, т.е. ссылку вида:

......metro[]=

Спустя 6 минут, 23 секунды (21.06.2011 - 13:09) Adil написал(а):
Да уж.. при всем этом сериализация реально выглядит лишней работой=)

Спустя 57 секунд (21.06.2011 - 13:10) linker написал(а):
Ну оберни urlencode($metro) в функцию какую
function arr_urlencode($arr)
{
foreach($arr as $key => $value)
$arr[$key] = urlencode($value);
}
implode('&metro[]=', arr_urlencode($metro))
а вообще считаю некультурным загонять целые текста в GET-запрос.

Спустя 28 минут, 6 секунд (21.06.2011 - 13:38) Strannik написал(а):
все равно получается пустое значение((

Спустя 8 минут, 23 секунды (21.06.2011 - 13:46) linker написал(а):
Внимательнее, я тоже могу опечатываться или забыть что-то дописать
function arr_urlencode($arr)
{
foreach($arr as $key => $value)
$arr[$key] = urlencode($value);
return $arr;
}

Спустя 4 минуты, 54 секунды (21.06.2011 - 13:51) Strannik написал(а):
все равно пустое значение может быть я что - то не так пишу?

function arr_urlencode($arr)
{
foreach($arr as $key => $value)
$arr[$key] = urlencode($value);
return $arr;
}
$nextpage = '<a href= ./index.php?type=rent&rooms='.$prooms.'&metro[]='.implode('&metro[]=', arr_urlencode($metro)).'&pr='.$pprice_one.'&pr2='.$pprice_to.'&page='. ($page + 1) .'>Следущая</a>


выдает пустое значение
....metro[]=

Спустя 6 минут, 22 секунды (21.06.2011 - 13:57) linker написал(а):
Strannik
Пустое будет если только ты передаешь пустой массив или вообще не массив.

Спустя 27 минут, 3 секунды (21.06.2011 - 14:24) linker написал(а):
function arr_urlencode($arr)
{
print_r($arr);
...
если тут будет пусто, значит отдаешь в функцию пустой массив или не массив.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.