2012-08-12 12 views
7

Tengo una aplicación que estoy construyendo, y estoy atascado en un cierto punto.Cómo pasar múltiples valores de una variable a través de una URL

Estoy tratando de pasar una variable que tiene varios valores. Así que mi URL se verá así:

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

El problema es que no estoy seguro de cómo puedo hacer esto. Las variables se deben usar para recuperar datos de una base de datos. Estoy usando PHP y no tengo Javascript.

¡Cualquier ayuda sería genial!

EDIT:
Aquí está el código HTML que tengo en la página donde se seleccionan las variables:

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

Así, un usuario podría seleccionar libros y CD, y yo tendría que pasar estos dos valores en la variable "tipos".

+1

¿qué tal una matriz serializada? –

+0

¿Estás usando un para enviar esto? si es así, php debería obtenerlo como una matriz en $ _POST ['types']? – wgcrouch

+0

@wgcrouch Estoy usando un formulario para enviarlo. Pero cuando lo envío, la URL termina como 'report.php? Variable = value1 & variable = value2' – mickburkejnr

Respuesta

5

Como se indica en https://stackoverflow.com/a/2407401/1265817, puede utilizar este método.

Si desea PHP para tratar $ _GET [ 'select2'] como una serie de opciones sólo tiene que añadir corchetes al nombre del elemento de selección de la siguiente manera: <select name="select2[]" multiple …

A continuación, puede acces la matriz en su PHP secuencia de comandos

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

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

Uso &

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

es eso lo que está después?

+3

que son variables múltiples, ninguna variable con valores múltiples –

+0

Más o menos, lo que realmente necesito es agregar todos los valores a esa variable. Entonces en el código PHP puedo usar '$ variable = $ _GET ['variable']', entonces puedo usar $ variable en la consulta. – mickburkejnr

+0

Si ambas páginas están en el mismo dominio, puede usar las variables 'Session'? 'Session [" myStringName "] = someObject' luego simplemente léelo devolviéndolo al contenido que necesites. Lo siento, pero mi PHP no es tan bueno, sin embargo. – jp2code

2

tratar localhost/report.php?variable[]=value1&variable[]=value2 le dará una matriz en PHP

4

Hay una manera simple de hacer esto en PHP llamando http_build_query() y transmitir sus valores en forma de matriz. Se podría hacer algo como:

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

Luego genere la URL usando $query.

2

creo que tienes la URL correcta

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

Entonces usar PHP para obtener todos los valores de la página report.php

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

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

Se puede utilizar como serialize:

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

y obtener datos usando unserialize como:

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

serialize función que le da la versión almacenable (cadena) del tipo de matriz, y se puede restaurar mediante la función unserialize.

+0

Interesante idea. Si tuviera que marcar o copiar un enlace 'index.php? Var = '. Serialize ($ array).'', ¿Podría volver a cargarlo más tarde o se perderán los datos serializados en la sesión? – jp2code

Cuestiones relacionadas