Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Przekazanie zmiennej typu Array., Jak przekazać zmienną typu Array pomiędzy dwoma dokumentami PHP?
leniu
post
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 2
Dołączył: 6.02.2008

Ostrzeżenie: (0%)
-----


Hej,

Przeszukałem forum i niestety nie znalazłem odpowiedzi na dręczące mnie pytanie, które brzmi identycznie jak w temacie.

Pozwolę sobie jednak sprawę rozwinąć i przedstawić po raz wtóry:

Wynikiem pewnego zapytania zrealizowanego na bazie MySQL jest $tablica (naturalnie Array). Jest u mnie koniecznie konieczne, aby w jakiś sposób przekazać ową zmienną do drugiego okna przeglądarki, czyli:

na stronie A mam hiperłącze o nazwie KLIKU-KLIKU -> klikam -> otwiera się strona B jako pop-up i co więcej kod już ma zainicjiwaną zmienną typu Array o nazwie $tablica

Na pierwszy rzut oka GET raczej odpada, COOKIE z serialize ma problemy z długimi zserializowanymi tablicami (a moje mogą być bardzo bardzo długie).

Czy istnieje jakiś pewny sposób na rozwiązanie tego problemu? Jest może zaimplementowany standardowy mechanizm przekazywania między dokumentami PHP zmiennych typu Array? Proszę o odpowiedź.

Pozdrawiam.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
Mlodycompany
post
Post #2





Grupa: Zarejestrowani
Postów: 910
Pomógł: 44
Dołączył: 20.02.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


albo sesje albo w pop-upie zrobic to samo zapytanie
Go to the top of the page
+Quote Post
Piotrwusek
post
Post #3





Grupa: Zarejestrowani
Postów: 399
Pomógł: 7
Dołączył: 11.06.2007
Skąd: Poznan

Ostrzeżenie: (20%)
X----


jak te tablice maja być bardzo długi to po prostu w tym drugim pliku też zrób zapytanie do MYSQL tylko może przekazuj zwykła zmienną id rekordu czy co tam chcesz
Go to the top of the page
+Quote Post
leniu
post
Post #4





Grupa: Zarejestrowani
Postów: 17
Pomógł: 2
Dołączył: 6.02.2008

Ostrzeżenie: (0%)
-----


Dokładnie Panowie!

Wróciłem właśnie z papieroska z tarasu i wpadłem na to samo - przecież mogę GET'em przekazać zapytanie, a wykonać je w oknie POP-UP!!! (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) A idę spać, bo dzisiaj juz nie myślę...

A co do SESSION, nie pomyślałem o tym, ale pomyśle jutro. Zastanowię się, co mi bardziej się przyda i zobaczymy.

Dobrej nocy wszystkim i dzięki za pomoc!
Go to the top of the page
+Quote Post
km66
post
Post #5





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 24.10.2009

Ostrzeżenie: (0%)
-----


Te funkcje napisalem juz pare lat temu (rekurencyjnie wola sama siebie w taki sposob, ze poradzi sobie z dowolnie zagniezdzona tablica), od tego czasu pewnie zmienil sie php i takie rzeczy mozna pewnie osiagac prosciej, ale moze komus sie przyda.
Nie bardzo juz pamietam jak ja wywolywalem, ale zdaje sie, ze pod jakims przyciskiem, ktory najpierw ja wolal a potem przenosil na docelowa strone. Albo cos (IMG:style_emoticons/default/smile.gif)
A funkcja wyglada tak (pierwsza zmienna, to oczywiscie array do przekazania a druga to nazwa, pod jaka cala jego struktura oddtwarza sie na docelowej stronie):

f
  1. unction export($tablica, $nazwa_wynikowa)
  2. {
  3. global $dalej;
  4.  
  5. while ($v = each($tablica))
  6. {
  7. $klucz=$v['key'];
  8. $wartosc=$v['value'];
  9. if (is_array($v['value']))
  10. {
  11. $cofnij=$dalej;
  12. $dalej.="[$klucz]";
  13. export($v['value'],$nazwa_wynikowa);
  14. $dalej=$cofnij;
  15. }
  16. else {
  17. $name="$nazwa_wynikowa".$dalej."[$klucz]";
  18. echo "<INPUT TYPE=\"hidden\" NAME= \"$name\" VALUE=\"$wartosc\">";
  19. }
  20. }
  21. }

Dajcie znac czy sie przydaje.
Powód edycji: [Ociu]: Dodałem bbCode
Go to the top of the page
+Quote Post
mrooczilla
post
Post #6





Grupa: Zarejestrowani
Postów: 11
Pomógł: 1
Dołączył: 6.07.2009

Ostrzeżenie: (0%)
-----


jak zapytanie będzie w zmiennej przechodzącej przez ręce usera to wydaje mi się że nie będzie to bezpieczne,
ja bym zrobił tak, (nie wiem skąd pochodzi owa tablica, ale załóżmy że po prostu ją zkeszujemy)

1. pobieram tablicę do przekazania i serializuję ją
2. robię $hash=md5(rand(0,1000)); i zapisuję do tabelki (lub do pliku) jako id uzywająć $hash
3. wywołuję stronę docelową i przekazuję jej $hash (w $_GET lub $_SESSION)
4. strona docelowa odczytuje z tabelki (lub z pliku) rekord gdzie id=$hash
5. i to tyle, w zasadzie można by po prostu użyć sesji, ale one 1.wygasaj kiedyś, a 2. mają ograniczoną wielkość
Go to the top of the page
+Quote Post
Fifi209
post
Post #7





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Najlepiej moim zdaniem używać sesji, do tego zostały stworzone.

@up
Cytat
1.wygasaj kiedyś, a 2. mają ograniczoną wielkość

Masło maślane.

Ten post edytował fifi209 25.10.2009, 12:44:42
Go to the top of the page
+Quote Post
mrooczilla
post
Post #8





Grupa: Zarejestrowani
Postów: 11
Pomógł: 1
Dołączył: 6.07.2009

Ostrzeżenie: (0%)
-----


w sumie racja, ale co jeżeli tablica po serialize bedzie miala 10M? do sesji?
Go to the top of the page
+Quote Post
Fifi209
post
Post #9





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Cytat(mrooczilla @ 25.10.2009, 14:53:04 ) *
w sumie racja, ale co jeżeli tablica po serialize bedzie miala 10M? do sesji?


Żeby otrzymać 10MB to na prawdę trzeba się postarać i wyciągnąć chyba całą bazę. Jeżeli w wyniku masz 10MB danych oznacza to, że jest coś nie tak - pomyśl jak długo użyszkodnik odbierałby to. To co wysyłasz do użyszkodnika musi być jak najmniejsze.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 25.08.2025 - 11:28