2012-08-12 15 views
7

Mam aplikację, którą buduję i utknąłem w pewnym momencie.Jak przekazywać wiele wartości zmiennej za pomocą adresu URL

Próbuję przekazać zmienną, która ma wiele wartości. Mój adres URL będzie wyglądał następująco:

localhost/report.php?variable=value1, value2, value3 

Problem polega na tym, że nie jestem pewien, w jaki sposób mogę to zrobić. Zmienne mają być używane do pobierania danych z bazy danych. Używam PHP i nie używam Javascript.

Każda pomoc będzie świetna!

EDIT:
Oto HTML Mam na mojej stronie, gdzie są wybrane zmienne:

<select name="types" size="19" multiple> 
    <option value="all" selected>All Types</option> 
    <option value="book" selected>Books</option> 
    <option value="cd" selected>CD</option> 
</select> 

więc użytkownik może wybrać Książki i płyty CD, i muszę przekazać te dwie wartości w zmiennej "types".

+1

co z serializowaną tablicą? –

+0

Czy używasz od, aby wysłać to? jeśli tak, php powinien po prostu pobrać go jako tablicę w $ _POST ['types']? – wgcrouch

+0

@wgcrouch Używam formularza do wysłania. Ale kiedy to wyślę, adres URL kończy się jak: 'report.php? Variable = value1 & variable = value2' – mickburkejnr

Odpowiedz

5

Jak wspomniano pod numerem https://stackoverflow.com/a/2407401/1265817, możesz użyć tej metody.

Jeśli chcesz PHP traktować $ _GET [ „select2”] jako tablica opcji wystarczy dodać nawiasy kwadratowe do nazwy elementu select tak: <select name="select2[]" multiple …

Następnie można acces tablicę w swoim PHP skrypt

<?php 
header("Content-Type: text/plain"); 

foreach ($_GET['select2'] as $selectedOption) 
    echo $selectedOption."\n"; 
7

Zastosowanie &

localhost/report.php?variable=value1&val2=value2&val3=value3 

Czy to jest to, czego po?

+3

to wiele zmiennych, a nie jedna zmienna o wielu wartościach. –

+0

Sortowanie tego, czego naprawdę potrzebuję, to dodanie wszystkich wartości do tej zmiennej. Więc w kodzie PHP mogę po prostu użyć '$ variable = $ _GET ['variable']', więc mogę użyć zmiennej $ w zapytaniu. – mickburkejnr

+0

Jeśli obie strony są w tej samej domenie, możesz użyć zmiennych 'Session'? 'Session [" myStringName "] = someObject' po prostu odczytaj go ponownie, przesyłając to, czego potrzebujesz. Przepraszam, ale mój PHP nie jest tak dobry. – jp2code

2

spróbować localhost/report.php?variable[]=value1&variable[]=value2 daje tablicę w PHP

4

Istnieje prosty sposób to zrobić w PHP wywołując http_build_query() i przekazać swoje wartości w tablicy indeksowanej. Zrobiłbyś coś takiego:

$value_array = array('types' => array('book', 'cd')); 
$query = http_build_query($value_array); 

Następnie wygeneruj adres URL, używając $query.

2

myślę, że masz prawidłowy adres URL

localhost/report.php?variable=value1,value2,value3 

Następnie za pomocą PHP, aby uzyskać wszystkie wartości na stronie report.php

$variable = explode(",", $_GET["variable"]); 

// Output 
$variable[0] = "value1"; 
$variable[1] = "value2"; 
$variable[2] = "value3"; 
0

Można użyć serialize jak:

echo '<a href="index.php?var='.serialize($array).'"> Link </a>'; 

i pobierz dane za pomocą unserialize, takich jak:

$array= unserialize($_GET['var']); 

serializacja funkcji umożliwiającej zapisanie (łańcuch) wersji typu tablicowego i może być przywrócona przez funkcję unserialize.

+0

Interesujący pomysł. Gdybym miał utworzyć zakładkę lub skopiować łącze "index.php? Var =". Serialize ($ array). ", Czy mógłbym załadować to później, czy też serializowane dane utracone w sesji? – jp2code

Powiązane problemy