Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Wysyłanie tablicy metodą GET.
Forum PHP.pl > Forum > Przedszkole
Ashariel
Witam.
Czy jest możliwość wysyłania tablica poprzez motedę GET ?

Po wpisaniu następującego kodu :
index.php
Kod
if ($tablica1[2] == "rosliny")
     {
         header("Location: index2.php?tablica1=$tablica1");
     }


index2.php

Kod
$tablica = $_GET["tablica1"];
echo " var_dump('$tablica')";


var_dump pokazuje "Array" zamiast wyświetlić całą zawartość tablicy dry.gif

Da się coś z tym zrobić; czy wysyłanie tablic przez metodę GET jest nie możliwe ?
strife
Tak jest możliwe,

np. ?tablica[a]=wartosc&tablica[b]=wartosc2

da nam:

Kod
array (
  'tablica' =>
  array (
    'a' => 'wartosc',
    'b' => 'wartosc2',
  ),
)


Więc jeśli masz sobie jakąś tablicę to musisz ja wpisać w $_GET w sposób, który wyżej Ci zaprezentowałem.

PS. Prosze zmień nazwę tematu na bardziej opisującą Twój problem smile.gif
Ashariel
Ok dzięki za odpowiedź.
Niestety problem jest gdy w tablicy jest dużo elementów.
Jak na to zaradzić ?
strife
Cytat(Ashariel @ 12.12.2007, 22:03:28 ) *
Ok dzięki za odpowiedź.
Niestety problem jest gdy w tablicy jest dużo elementów.
Jak na to zaradzić ?


A co dokładnie chcesz uzyskać? Zawsze dane możesz przesyłać POST'em, bądź w sesjach czy ciastkach. Nie mniej jednak najlepiej by było jakbyś opisał dokładniej problem, może uda nam się to rozwiązać inaczej niż Ty wymyśliłeś.

PS. Jeśli mimo wszystko chcesz wysłać tablicę GET'em to podaj przykład takiej tablicy, może coś poradzimy.

Pozdrawiam serdecznie.
Ashariel
Może zapytam inaczej:
Mam tablicę z dużą ilością elementów w pliku index.php i chciałbym jej zawartość wysłać do wielu plików, a jeśli to nie możliwe to tylko do pliku index2.php.

Czego najlepiej użyć ?
$_GET a może sesji ?
Widzę że napisałeś że można to wysłać metodą POST.
Jestem początkujący jeśli chodzi o programowanie i myślałem że metody POST używa się tylko przy formularzach ?

Proszę o opisanie jakiejś możliwości.
strife
Nie napisałeś czy dotyczy to formularzy czy też nie, metody GET i POST można używać przy formularzach, jest dowolność, jednak różnica polega na ilości wysyłanych danych i metodzie (GET pasek przeglądarki) [więcej google wikipedia], Zbierzmy to do kupy, masz sobie w pliku index.php jakąś tablicę:

  1. <?php
  2. $array = array('jeden' => 'bla bla', 'dwa' => 'sia lala'); // itp.
  3. ?>


I teraz zawartość tej tablicy chcesz wysłać do pliku index2.php. Żeby tego dokonać musisz stwierdzić czy, dane w tablicy są stałe czy będą często zmieniane, jeśli są to jakieś stałe dane to możesz stworzyć kolejny plik, który będziesz include" title="Zobacz w manualu PHP" target="_manual'ował do plików, do których będziesz chciał, aby została przekazana.

Natomiast, w przypadku gdy tablica jest dynamiczna (np. dane pobierane z bazy, id użytkownika, itp), możesz je trzymać w sesji, wtedy w każdym pliku będziesz widział te dane (poczytaj o sesjach w manualu i na forum). Pytałem Cię o dokładne opisanie problemu, po to aby stwierdzić, do czego Ci to jest potrzebne, nie wiem rejestracja/logowanie, koszyk itp. Jeśli będziemy to wiedzieć, to łatwiej Cię nakierujemy.

Pozdrawiam.
Ashariel
Tablica będzie miała charakter dynamiczny.
Wiele elementów tej tablicy będzie zmiennymi.

Ta tablica ma mi służyć jako logowanie użytkownika.
Muszę jeszcze wiele poczytać o sesjach bo niestety nie mam o nich bladego pojęcia.

PS. A czy to zadziała :
ZAPIS :
Kod
$array = $_POST[array]


To chyba było by zbyt piękne.
Pozdrawiam
1010
Kod
$array=$_POST[array]

zadziała, pod warunkiem że $_POST[array] to nie tablica winksmiley.jpg
pest
Najlepszym rozwiązaniem jest sesja.

Jeśli chodzi o użycie sesji to podstawa jest prosta.
1. Na początku każdego przetwarzanego skryptu piszesz
session_start();

2. W skrypcie w którym chcesz przypisać wartości piszesz
$_SESSION['array'] = $twoja_tablica;

W pozostałych skryptach się możesz odwoływać do tablicy $_SESSION, czyli również do elementu $_SESSION['array'] np.

$twoja_tablica = $_SESSION['array'];


Ale to jest napisane na pierwszej stronie tutoriala do sesji winksmiley.jpg
Ashariel
Wielkie dzięki rolleyes.gif
Pozdrawiam
1010
Sesje to najprawdopodobniej najlepsze rozwiązanie, kodu mało, czytelny, wszędzie masz dostęp do tych danych, nie musisz się o to martwić przy linkach i wszystko ładnie działa smile.gif
Pozdro
Ashariel
Dzisiaj sprawdziłem.
Całej tablicy w sesji mi nie chce wysłać tylko elementy dry.gif
Sprawdzałem kilka razy i nie mogę się doszukać błędu.
pest
Wklej tu to pomyślimy.


Pozatym jak mowa o sesji to ona cala nie jest wysylana do przegladarki, tylko jej identyfikator. Wszystkie dane sa przechowywane na serwerze, ale w tym przypadku to chyba i tak nie ma znaczenia.
Ashariel
O przepraszam za wprowadzenie w błąd.
Wszystko działa. Wtedy nie działało, ponieważ była nieprawidłowa nazwa stałej.

Jest już ok.
Pozdrawiam
Maciej Sprada
Witam, wlasnie rozwiazalem ten problem.. mam nadzieje ze to sie komus przyda na przyszlosc bo stracilem mase zdrowia przy tym
tam jest takie cos jak stripslashes na niektorych serwerach moze byc to wylaczone wiec poprosu nie uzwyac tej funkcji, ale ogolnie powinno dzialac czarodziej.gif guitar.gif party.gif


CODE

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>






<body>
<? $dataArray=array(0=>array('costam'=>'jest','costam2'=>'jest2'),1=>array('costam'=>'dwa1','costam2'=>'dwa2'));


$costam2=serialize($dataArray);

echo $costam2;

echo '<br>'.$_GET['wynik'];

$wynik3=unserialize(stripslashes($_GET['wynik']));

echo '<br>-->'.$wynik3[0]['costam'];

?>

<br /><br /><br /><br />



<a href='index.php?wynik=<?php echo $costam2 ?>'>dadsdadadsa</a>
</body>
</html>
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.