Foros del Web » Programando para Internet » PHP »

como enviar yrecibir un array con un header location

Estas en el tema de como enviar yrecibir un array con un header location en el foro de PHP en Foros del Web. Hola les explico mi proble, tengo un combo box de seleccion multiple, al seleccionarlo se almanece en un array y lo envio a un php ...
  #1 (permalink)  
Antiguo 14/04/2009, 13:31
Avatar de asassa  
Fecha de Ingreso: julio-2008
Ubicación: En el DF ectuoso
Mensajes: 240
Antigüedad: 15 años, 9 meses
Puntos: 0
como enviar yrecibir un array con un header location

Hola les explico mi proble, tengo un combo box de seleccion multiple, al seleccionarlo se almanece en un array y lo envio a un php el cual redirije a otro que hace una serie de procesos.

En total en un html que envia a un php, y este envia a un php que ejecuta un proceso.

Pero al recibirlo en el tercer php el array llega como cadena con el contenido Array.

este es mi ejemplo:

archivo HTML
<form action="arrayp1.php" method="GET">
<select name="mytextarea[]" size=10 multiple >
<OPTION value="agua" selected >agua
<OPTION value="azucar" >azucar
<OPTION value="pan">pan
</select>
<input type="submit" name="Submit" value="BUSCAR" />
</form>
el php que compara arrayp1.php

<?php
$v='1';
$array=$_GET['mytextarea'];
if ($v='1' ){
header ("Location: arrayf.php?array=$array&v=$v" );
}
?>

y el ultimo php que ejecuta o parte el array. arrayf.php

$trozos = $_GET['array'];
echo $trozos[0];
echo $trozos[1];
echo $trozos[2];
echo $trozos[3];
echo $trozos[4];
echo $trozos[5];

¿Ahora, como les decia creo que el envio desde el 1 php lo estoy haciendo mal, como puedo enviar array como variables desde un header location?
  #2 (permalink)  
Antiguo 14/04/2009, 13:33
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: como enviar yrecibir un array con un header location

pues tienes de dos...

usar sesiones, o usar http_build_query()

http://php.net/http_build_query


recuerda que el array() es un tipo interno de PHP, el cual no puede ser pasado por URL, etc...


suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 14/04/2009, 13:35
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: como enviar yrecibir un array con un header location

Tienes que serializar el array, o usar SESSIONES/COOKIES.

Ah, tienes un error aqui:
Cita:
if ($v='1' ){
Para comparar se utiliza ==, de lo contrario siempre se va ejecutar tu condicional (porque asignas).

Para serializar un array, usa serialize():
http://www.php.net/manual/es/function.serialize.php

Y para recibirlo, tienes que deserializarlo():
http://www.php.net/manual/es/function.unserialize.php

PD: Tienes que pasar el array por urlencode() luego de serializarlo.
PD2: xD La opcion de pateketrueke es aun mejor.
  #4 (permalink)  
Antiguo 14/04/2009, 13:39
Avatar de asassa  
Fecha de Ingreso: julio-2008
Ubicación: En el DF ectuoso
Mensajes: 240
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: como enviar yrecibir un array con un header location

encontre una solucion para el primer php el qeu recibe y direcciona al tercer php

$v='1';
if (is_array($_POST["mytextarea"]))
{ $trozos=array(); //abre XXXX
foreach($_POST["mytextarea"] as $valor){
$trozos[] = $valor;
}
header ("Location: arrayf.php?array=$valor&v=$v" );
}

bueno creo que ese era el problema. ahora parte el contenido del array y lo envia, como puedo recibir el dato en el tercero php, como array?
  #5 (permalink)  
Antiguo 14/04/2009, 13:45
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: como enviar yrecibir un array con un header location

para ser honestos tu código no hace nada de lo que dices....

lo mejor es que hagas lo que te sugieren, RonRuby tiene mas razón!

1.php
Código PHP:
$a serialize(array(1,2,3));
header("Location: 2.php?b=$a"); 
2.php
Código PHP:
$c unserialize($_GET['b']);
var_dump($c); 
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 14/04/2009, 13:46
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: como enviar yrecibir un array con un header location

Es mas facil con http_build_query(), te evitas tener que escribir tanto código. O usar SESSIONES, que es una solución aun mas facil de implementar.
  #7 (permalink)  
Antiguo 14/04/2009, 16:04
Avatar de asassa  
Fecha de Ingreso: julio-2008
Ubicación: En el DF ectuoso
Mensajes: 240
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: como enviar yrecibir un array con un header location

Hola a todos bueno mi solucion la hice de esta manera no se si estoy bien o me quebre mucho la cabeza...pero bueno se las paso
el primer php hace esto

session_start();
if (is_array($_POST["mytextarea"]))
{
$trozos=array();
foreach($_POST["mytextarea"] as $valor){
$trozos[] = $valor;
$_SESSION[base]=$trozos;
}
header ("Location: arrayf.php?array=$_SESSION[base]" );

}

y el segundo lo parto en varios. ya como array...

session_start();
if (is_array($_SESSION[base]))
{
$trozos=array();
foreach($_SESSION[base] as $valor){
$trozos[] = $valor;
}
echo "$trozos[0]<br>";
echo "$trozos[1]<br>";
echo "$trozos[2]<br>";
}


bueno muchas gracias por la ayuda a todas
  #8 (permalink)  
Antiguo 14/04/2009, 16:08
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: como enviar yrecibir un array con un header location

Código php:
Ver original
  1. if (is_array($_POST["mytextarea"]))
  2. {
  3. $trozos=array();
  4. foreach($_POST["mytextarea"] as $valor){
  5. $trozos[] = $valor;
  6. $_SESSION[base]=$trozos;
  7. }
  8. header ("Location: arrayf.php?array=$_SESSION[base]" );
  9.  
  10. }

Las variables de SESSION no se pasan por URL. Con esto basta:

$_SESSION['foo'] = $_POST['mytextarea'];

  #9 (permalink)  
Antiguo 14/04/2009, 16:09
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: como enviar yrecibir un array con un header location

pues si, es un quebradero de cabeza...

das vueltas a todo, y no hace nada.... osea, si.... pero no como "crees" hacerlo...

mira, usando sesiones...

1.php
Código PHP:
session_start();
$_SESSION['algo'] = $_POST['algo_mas'];
header("Location: 2.php"); //ya no es necesario el GET 
2.php
Código PHP:
session_start();
var_dump($_SESSION['algo']); 
y si, para que tanto foreach() y la cosa....

es mejor que te pongas a estudiar algo de esto, de veras!

suerte...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:10.