2012-08-12 19 views
7

Ho un'applicazione che sto creando e sono bloccato a un certo punto.Come passare più valori di una variabile attraverso un URL

Sto provando a passare una variabile che ha più valori. Quindi il mio URL sarà:

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

Il problema è che non sono sicuro di come posso farlo. Le variabili devono essere utilizzate per recuperare i dati da un database. Sto usando PHP e non Javascript.

Qualsiasi aiuto sarebbe fantastico!

EDIT:
Ecco il codice HTML che ho nella mia pagina in cui vengono selezionate le variabili:

<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> 

Quindi, un utente potrebbe selezionare i libri ei CD, e avrei bisogno di passare questi due valori nella variabile "tipi".

+1

come su un array serializzato? –

+0

Stai usando un da per inviare questo? se è così php dovrebbe semplicemente prenderlo come array in $ _POST ['types']? – wgcrouch

+0

@wgcrouch Sto usando un modulo per inviarlo. Ma quando lo invio l'URL finisce come 'report.php? Variable = value1 & variable = value2' – mickburkejnr

risposta

5

Come indicato allo https://stackoverflow.com/a/2407401/1265817, è possibile utilizzare questo metodo.

Se si vuole che PHP per il trattamento di $ _GET [ 'select2'] come una serie di opzioni è sufficiente aggiungere le parentesi quadre al nome dell'elemento selezionare in questo modo: <select name="select2[]" multiple …

Poi si può acces l'array in PHP script

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

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

Usa &

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

è quello che siete dopo?

+3

cioè più variabili, non una variabile con più valori –

+0

Ordinamento di, quello di cui ho veramente bisogno è aggiungere tutti i valori a quella variabile. Quindi nel codice PHP posso semplicemente usare '$ variable = $ _GET ['variable']', quindi posso usare $ variable nella query. – mickburkejnr

+0

Se entrambe le pagine si trovano nello stesso dominio, è possibile utilizzare le variabili 'Session'? 'Session [" myStringName "] = someObject', quindi rileggilo semplicemente eseguendo il casting su ciò che ti serve. Ci dispiace, ma il mio PHP non è così buono, però. – jp2code

2

provare localhost/report.php?variable[]=value1&variable[]=value2 vi darà un array in php

4

C'è un modo semplice per farlo in PHP chiamando http_build_query() e trasmettere i propri valori come un array indicizzato. Si potrebbe fare qualcosa di simile:

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

quindi generare l'URL utilizzando $query.

2

Penso che tu abbia l'URL corretto

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

Quindi utilizzare PHP per ottenere tutti i valori nella pagina report.php

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

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

È possibile utilizzare serialize come:

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

e ottenere dati utilizzando unserialize come:

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

serializza la funzione fornendo la versione (stringa) memorizzabile del tipo di matrice e può essere ripristinata mediante la funzione di unserializzazione.

+0

Idea interessante. Se dovessi aggiungere un segnalibro o copiare un link index.php? Var = '. Serialize ($ array).' ', Sarei in grado di ricaricarlo più tardi o i dati serializzati saranno persi nella sessione? – jp2code

Problemi correlati