Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] arreglos

Estas en el tema de arreglos en el foro de PHP en Foros del Web. Hola buenos dias, aqui de nuevo molestando, tengo una duda acerca de por que un arreglo que tengo no es recibido en otra pagina. tengo ...
  #1 (permalink)  
Antiguo 21/10/2013, 09:22
 
Fecha de Ingreso: agosto-2013
Ubicación: queretaro
Mensajes: 78
Antigüedad: 10 años, 8 meses
Puntos: 1
arreglos

Hola buenos dias, aqui de nuevo molestando, tengo una duda acerca de por que un arreglo que tengo no es recibido en otra pagina.

tengo 2 paginas en la cual en una lleno mi arreglo y en otra lo recibo para hacer una grafica ahora el arreglo lo tengo asi;

1.- hoja
$array1[] = $row[0];
(arriba lo tengo declarado)
en donde ago una prueba y lo recorro con foreach en donde si me devuelve mis resultados

ahora lo envio mediante un form a la hoja2 de la siguiente manera:

<form id="form" name="form" method="post" action="prueba.php">
<input type="hidden" name="hortalizas" value='<?php echo $tiempo ?>'></input>
<input type="hidden" name="hortalizas1" value='<?php echo serialize($array1)?>'></input>

<input type="submit" value="Enviar">
</form>


hoja 2


lo recibo de la siguiente forma;

$hortalizas1 = unserialize($_POST['hortalizas1']);
foreach ($hortalizas1 as $a) ;
echo $a;}


pero ya no me imprime nada, con for me manda un Array PERO NOMAS UNO

alguna idea de por que pasa esto???
  #2 (permalink)  
Antiguo 21/10/2013, 09:41
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: arreglos

Cita:
alguna idea de por que pasa esto???
No muchas, adivinar es imposible.

¿Pero qué te parece si nos ayudas a depurar?

Cuando recibas el formulario has lo siguiente:
Código PHP:
Ver original
  1. $hortalizas1 = unserialize($_POST['hortalizas1']);
  2. var_dump($hortalizas1);

¿Eso qué muestra?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 21/10/2013, 09:58
 
Fecha de Ingreso: agosto-2013
Ubicación: queretaro
Mensajes: 78
Antigüedad: 10 años, 8 meses
Puntos: 1
Respuesta: arreglos

Cita:
Iniciado por pateketrueke Ver Mensaje
No muchas, adivinar es imposible.

¿Pero qué te parece si nos ayudas a depurar?

Cuando recibas el formulario has lo siguiente:
Código PHP:
Ver original
  1. $hortalizas1 = unserialize($_POST['hortalizas1']);
  2. var_dump($hortalizas1);

¿Eso qué muestra?
me mando lo siguiente

bool (false) Warning : Invalid argument supplied for foreach ()
  #4 (permalink)  
Antiguo 21/10/2013, 10:02
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: arreglos

Eso significa que no estás deserializando un valor adecuado, y si haces esto:
Código PHP:
Ver original
  1. var_dump($_POST);

¿Qué muestra?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 21/10/2013, 10:11
 
Fecha de Ingreso: agosto-2013
Ubicación: queretaro
Mensajes: 78
Antigüedad: 10 años, 8 meses
Puntos: 1
Respuesta: arreglos

Cita:
Iniciado por pateketrueke Ver Mensaje
Eso significa que no estás deserializando un valor adecuado, y si haces esto:
Código PHP:
Ver original
  1. var_dump($_POST);

¿Qué muestra?

array (2) {["hortalizas"] => string (1) "3" ["hortalizas1"] => string (49) "a: 3: {i: 0; s: 2: \" 16 \ "; i: 1; s: 1: \ "1 \"; i: 2; s: 1: \ "0 \";} "}
  #6 (permalink)  
Antiguo 21/10/2013, 10:19
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: arreglos

Ya veo, pues acabo de copiar y pegar dicho fragmento serializado y me funciona bien:
Código PHP:
Ver original
  1. $s="a:3:{i:0;s:2:\"16\";i:1;s:1:\"1\";i:2;s:1:\"0\";}";
  2.  

¿Qué muestra si haces esto?
Código PHP:
Ver original
  1. $hortalizas1 = $_POST['hortalizas1'];
  2. var_dump($hortalizas1);
  3. var_dump(unserialize($hortalizas1));
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 21/10/2013, 10:24
 
Fecha de Ingreso: agosto-2013
Ubicación: queretaro
Mensajes: 78
Antigüedad: 10 años, 8 meses
Puntos: 1
Respuesta: arreglos

Cita:
Iniciado por pateketrueke Ver Mensaje
Ya veo, pues acabo de copiar y pegar dicho fragmento serializado y me funciona bien:
Código PHP:
Ver original
  1. $s="a:3:{i:0;s:2:\"16\";i:1;s:1:\"1\";i:2;s:1:\"0\";}";
  2.  

¿Qué muestra si haces esto?
Código PHP:
Ver original
  1. $hortalizas1 = $_POST['hortalizas1'];
  2. var_dump($hortalizas1);
  3. var_dump(unserialize($hortalizas1));
string (49) "a: 3: {i: 0; s: 2: \" 16 \ "; i: 1; s: 1: \" 1 \ "; i: 2; s: 1: \" 0 \ ";}" bool (false) array (3) {[0] => string (2) "16" [1] => string (1) "1" [2] => string (1) "0"}

MUESTRA ESO
  #8 (permalink)  
Antiguo 21/10/2013, 10: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: arreglos

Excelente, como puedes ver, la tercer forma fue la que funcionó.

Al parecer tienes habilitadas magic_quotes en tu configuración de PHP y eso agrega los escapes de comilla automáticamente, lo cual también estropea unserialize() de primera mano.

Por eso utilizo stripslashes() para eliminar dichos escapes antes.

Te sugiero corrijas tu configuración.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 21/10/2013, 10:40
 
Fecha de Ingreso: agosto-2013
Ubicación: queretaro
Mensajes: 78
Antigüedad: 10 años, 8 meses
Puntos: 1
Respuesta: arreglos

Cita:
Iniciado por pateketrueke Ver Mensaje
Excelente, como puedes ver, la tercer forma fue la que funcionó.

Al parecer tienes habilitadas magic_quotes en tu configuración de PHP y eso agrega los escapes de comilla automáticamente, lo cual también estropea unserialize() de primera mano.

Por eso utilizo stripslashes() para eliminar dichos escapes antes.

Te sugiero corrijas tu configuración.
ok, me parece la solucion, ahora no se de ese tema :p trabajo en un cpanel como lo haria,
se que se puede hacer en tiempo de ejecucion,
  #10 (permalink)  
Antiguo 21/10/2013, 10:41
 
Fecha de Ingreso: agosto-2013
Ubicación: queretaro
Mensajes: 78
Antigüedad: 10 años, 8 meses
Puntos: 1
Respuesta: arreglos

tiempo de ejecucion

if (get_magic_quotes_gpc()) {
$process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST);
while (list($key, $val) = each($process)) {
foreach ($val as $k => $v) {
unset($process[$key][$k]);
if (is_array($v)) {
$process[$key][stripslashes($k)] = $v;
$process[] = &$process[$key][stripslashes($k)];
} else {
$process[$key][stripslashes($k)] = stripslashes($v);
}
}
}
unset($process);
}
  #11 (permalink)  
Antiguo 21/10/2013, 10:53
 
Fecha de Ingreso: agosto-2013
Ubicación: queretaro
Mensajes: 78
Antigüedad: 10 años, 8 meses
Puntos: 1
Respuesta: arreglos

gracias compañero ya me muestra los datos

Etiquetas: arreglos
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 11:53.