Pasar un arreglo de un formulario a otro

Resulta que tengo tres formularios; en el primero lleno unos campos, en el segunda válido si se lleno primero primer formulario y entonces puedo insertar en el segundo, y en el tercer formulario debo guardar en la base de datos os datos que se introdujeron en el primer formulario y en segundo. Los dos primeros formularios los manejo mediante arreglos. Investigando encontré que se podía pasar arreglos a los formularios mediante serializacion o por sesiones. Estoy probando pasarlos por serializacion y
el código que manejo es el siguiente:
<?php // este es para enviarlos en el primer formulario
function array_envia($array) {
$tmp = serialize($array);
$tmp = urlencode($tmp);
return $tmp;
}
$array=array('$nombres','$apellidos','$sexo', '$edad' );
$array=array_envia($array);
?>
<form action="recibir_array.php" method="POST">
<input name="array" type="hidden" value="$array">
<input name="enviar" type="submit" value=" Enviar ">
</form>
<? // este es para recibirlos en el segundo formulario
function array_recibe($url_array) {
$tmp = stripslashes($url_array);
$tmp = urldecode($tmp);
$tmp = unserialize($tmp);
return $tmp;
}
$array=tiny_mce_markerPOST['array'];
$array=array_recibe($array);
foreach ($array as $indice => $valor){ // ESTA ES LA LINEA 54
echo $indice." = ".$valor."<br>";
}
?>
pero me aparece el siguiente error en el segundo formulario
Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\doc\accs.php on line 54

2 Respuestas

Respuesta
1
Lo que te recomiendo es que te olvides de la serialización.
El paso de valores por sesión es mucho más sencillo e intuitivo:
Sólo pon al principio de cada página:
session_start();
y después asigna variables a la matriz de sesión:
$_SESSION["tuvariable"] = "Tu valor";
$_SESSION["otra"] = "otro valor";
$_SESSION["tuarray"][2] = "un valor mas";
que podrán ser leídas y escritas en cualquier otra página:
echo $_SESSION["tuvariable];
echo $_SESSION["tuarray"][2];
Hola:
Pues ya he resuelto ese problema con sesiones como me recomendaste pero ahora tengo otro problema, resulta que necesito que una tabla contenga el mismo numero de registro de las variables que paso por medio de sesiones y que es un arreglo. Por ejemplo si pasan 3 variables que la tabla solo aparezca con tres filas para llenar en base a las tres variables anteriores, y si pasa con 6 pues que solo aparezcan 6 filas en la tabla, así sucesivamente.
No se si esto sea posible y gracias de antemano.
Sólo tienes que contar las variables que llegan. La función count() cuenta el número de valores en una matriz:
echo count($_SESSION);
echo count($_SESSION["tuarray"]);
Respuesta
1
Intenta usar palabras no reservadas como nombres de variables, allí estás usando $array, la cual es una palabra reservada.
revisa  http://th.php.net/manual/es/reserved.keywords.php
Gracias, he resuelto ese problema con sesiones, pero ahora tengo otro relacionado con lo mismo y en verdad espero y me puedas ayudar; resulta que necesito que una tabla contenga el mismo numero de registro de las variables que paso por medio de sesiones. Por ejemplo si pasan 3 variables que la tabla solo aparezca con tres filas para llenar en base a las tres variables anteriores, y si pasa con 6 pues que solo aparezcan 6 filas en la tabla, así sucesivamente.
No se si esto sea posible pero cualquier ayuda o recomendación te lo agradecería muchísimo.
Haz un bucle para cada una de las sesiones con foreach, por ejemplo:
Echo "
<table>
";
foreach ($_SESSION as $campo=>$valor )
{
   echo "
<tr>
<td>$campo</td>
<td>$valor</td>
</tr>
";
}
echo "
</table>
";
Lo puedes modificar de acuerdo a lo que necesitas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas