Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: przekazywanie elementow tablicy w urlu
Forum PHP.pl > Forum > PHP
Rafix24
Witam
Wysylam za pomoca $_GET zmienna (tablice) ud[] z formularza a nastepnie chcialbym przekazac ta zmienna (i elementy tej tablicy) w urlu na inna strone.
Jak robie tak : szukaj.php?ud=$_GET['ud'] to po wejsciu w ten url mam : szukaj.php?ud=array i elementy z tablicy ud nie sa widoczne :?
Jak zrobic by to dzialalo questionmark.gif?
FiDO
Radze przekazywac to za pomoca sesji, za pomoca URL'a od biedy sie da, ale to nie jest dobry pomysl.
scanner
[manual:8f9e94393a]serialize[/manual:8f9e94393a]
[manual:8f9e94393a]unserialize[/manual:8f9e94393a]
kszychu
Cytat
Witam
Wysylam za pomoca $_GET zmienna (tablice) ud[] z formularza a nastepnie chcialbym przekazac ta zmienna (i elementy tej tablicy) w urlu na inna strone.
Jak robie tak : szukaj.php?ud=$_GET['ud'] to po wejsciu w ten url mam : szukaj.php?ud=array i elementy z tablicy ud nie sa widoczne :?
Jak zrobic by to dzialalo questionmark.gif?

[php:1:c82d15d150]<?php
$link = "szukaj.php?";
for($i = 0, $max = count($_GET['ud']); $i < $max; $i++) {
$link .= "ud[]=".$_GET['ud'][$i];
$i == $max - 1 ? '' : $link .= "&";
}
echo $link;
?>[/php:1:c82d15d150]
Rafix24
Dziekuje za szybka odpowiedz smile.gif

Krzychu> Twoj kod nie dziala tzn. po przekazaniu w ten sposob ud[] na inna strone nie mozna pozniej korzystac z niej tak jak korzysta sie z tablicy html; poza tym przy echo zmiennej nie pokazuje nawet ze to tablica. sad.gif

Scanner> Probuje uzyc serialize() i unserialize() ale cos mi nie idzie...
Robie tak
[php:1:c1238b0d55]<?php
$tab=serialize($_GET['ud'];
echo"<a href='strona.php?ud=$tab>strona</a>";
?>[/php:1:c1238b0d55]
i ladnie mi to przekazuje w urlu w formacie : ud=a:2:{i:0;s:1:%222%22;i:1;s:1:%223%22;}
Chcialbym zeby ta zmienna wrocila, po przekazaniu w urlu, do wczesniejszej postaci czyli ud[] i robie tak :
[php:1:c1238b0d55]<?php
$ud1=unserialize($_GET['ud']);
echo $ud1;
?>[/php:1:c1238b0d55]
Niestety nie zamienia to na wczesniejszy format zmiennej i nie moge z tej zmiennej korzystac. Echo nie pokazuje nic.
Co robie zle questionmark.gif? smile.gif
kszychu
Wydaje mi się, że wszystkie %22 musisz wcześniej zamienić na " a później unserialize. Jest taka funkcja rawurldecode().
Rafix24
Niestety jeszcze nie dziala
Podam moze co mi pokazuje w echo po zastosowaniu kazdej funkcji:
[php:1:8b8263b9c6]<?php
echo"ud1 = ".$_GET['ud'].; // wyswietla ud1 = a:2:{i:0;s:1:"2";i:1;s:1:"3";}
$ud1= rawurldecode($_GET['ud']);
echo"ud1 = $ud1"; // wyswietla ud1 = a:2:{i:0;s:1:"2";i:1;s:1:"3";}
$ud1 = unserialize($ud1);
echo"ud1 = $ud1"; // wyswietla ud1 =
?>[/php:1:8b8263b9c6]
FiDO
Bo najpierw musisz to zakodowac:

[php:1:c12a2f2ba6]<?php
$tab=rawurlencode(serialize($_GET['ud']));
echo"<a href='strona.php?ud=$tab>strona</a>";
?>[/php:1:c12a2f2ba6]
I dopiero przy odczycie to co robisz.
Rafix24
Po zakodowaniu jest to samo...
noose
sprawdz tablice print_r (po unserialize) i bedziesz wiedzial, czy masz tablice czy co
Rafix24
Nie wyswietla mi print_r($ud) po unserlialize :!: :?:
Tak jakby w ogole tej zmiennej nie bylo. Tak jakby unserialize kasowal zmienna...
FiDO
Przeanalizuj to:
[php:1:dc5097c374]<?php
$arr = array(1,"2","3");

printf("<a href='?v=%s'>klik</a>", urlencode(serialize($arr)));

if (!empty($_GET['v']))
{
$a = unserialize(urldecode($_GET['v']));
var_dump($a);
}

>?[/php:1:dc5097c374]
Rafix24
W koncu dziala. Rozwiazalem to podobnie do propozycji krzycha.
Moze sie to komus kiedys przyda biggrin.gif
[php:1:2d3188cf7b]<?php
$link="szukaj.php";
if (!empty($_GET('ud')){
for ($i=0; $i < count($_GET['ud']); $i++)
{
$udo=$_GET['ud'][$i];
if ($i==0){
$link=."?ud[$i]=".$udo;
}else{
$link=."&ud[$i]=".$udo;
}
}// koniec for
}
?>[/php:1:2d3188cf7b]

Dziekuje za zainteresowanie
kszychu
Spoko, taka uwaga: pętlę for lepiej budować tak jak na moim przykładzie, gdzie tylko raz robisz count($tablica), zajmuje to mniej czasu, a przy dużych tablicah dochodzi to nawet do kilkudziesięciu procent czasu mniej. (thx Scanner)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.