Paso de vectores

Hola, quisiera saber como puedo hacer para enviar un vector... El problema es tengo una funcion1 que me pinta una forma (llemémosla Forma1) en la que recojo unos datos, el dato que me interesa es un campo tipo select múltiple al que llamé "ESTACOMP[]", como puedes ver, es un arreglo. Cuando doy submit a esta forma1, envío todos los campos a otra función (Funcion2) que me recibe por parámetro todos los campos de la forma1, al dar submit a mi forma2, necesito enviar además de los campos de dicha forma mi vector "ESTACOMP[]", por lo que en el action de mi forma2 puse:
action="index.php&ESTACOMP=<?=urlencode(serialize($ESTACOMP));?>"
Tengo una funcion3 que me recibe estos datos, en ella si imprimo el vector ESTACOMP, lo imprime pero obviamente serializado... Para unserializarlo, utilizo la función unserialize de la siguiente manera:
$x=unserialize(ESTACOMP),
Pero al imprimir POR, este no tiene ningún valor.
¿Podrías darme una forma de reenviar satisfactoriamente mi vector a través de las funciones?

4 respuestas

Respuesta
1
Yo sinceramente no lo haría así, lo que si haría por ej seria esto:
Voy a armarte a modo de ejemplo 3 páginas, que las voy a llamar index.php, pagina2.php y pagina3.php respectivamente.
// Empezamos por index.php.
<form method="POST" action="pagina2.php">
<p><select size="3" name="variable[]" multiple>
<option value="Campo1">Campo1</option>
<option value="Campo2">Campo2</option>
<option value="Campo3">Campo3</option>
<option value="Campo4">Campo4</option>
<option value="Campo5">Campo5</option>
<option value="Campo6">Campo6</option>
</select></p>
<p><input type="submit" value="Enviar" name="Boton"></p>
</form>
// Ahora te armo pagina2.php
<form method="POST" action="pagina3.php">
<p><input type="text" name="variable2" size="20"></p>
<?
$variablex = $variable[0];
if ($variablex != "") {
while(list($key,$value) = each($variable)) {
?>
<input type="hidden" name="variable[]" value="<?=$value?>">
<?
}
}
?>
<p><input type="submit" value="Enviar" name="Boton"></p>
</form>
// y por ultimo pagina3
<?
$variablex = $variable[0];
if ($variablex != "") {
while(list($key,$value) = each($variable)) {
echo "$value<br>";
}
}
echo $variable2;
echo "<br>";
?>
// Ahora te explico lo que hize
en el index.php un simple pulldown con múltiple select al que lo llame variable[]
hice que todo ese contenido variable[] pase al archivo pagina2.php por medio de POST
En pagina2.php le digo que lea ese array y si tiene algún valor lo que hice fue separarlo tomando los valores y a estos valores asignarles un campo oculto nuevamente con el nombre del array variable[]
entonces supongamos que en el index.php yo seleccione las opciones Campo1, Campo2, Campo3
el form de pagina2.php tendria estos valores ocultos
<input type="hidden" name="variable[]" value="Campo1">
<input type="hidden" name="variable[]" value="Campo2">
<input type="hidden" name="variable[]" value="Campo3">
Estos valores los paso a pagina3.php y lo que hago es leer ese contenido e imprimirlo en pantalla, nada más.
Si no es lo que estas buscando ampliamen un poquito más tu pregunta.
Sds. Pablo
Lo voy a mirar detalladamente y vuelvo a preguntarte... gracias
¿Te salio al final?
Respuesta
1
usa esto
action="index.php?arreglo=".urlencode(serialize($ESTACOMP))."
>
> Y recuperas los valores
> $resultado = unserialize(urldecode($arreglo));
>
Imprimes $resultado y funciona yo lo probé y corrió bien...
Leíste mal el mensaje, pues ahí decía que tenia que reenviarlo (osea por segunda vez), la respuesta que me diste, yo misma la escribí en el mensaje. El problema se soluciona reconstruyendo el vector antes de reenviarlo... con each(). Gracias de todos modos.
Respuesta
1
Puedes ponerlo como hidden el la forma
<input type='hidden' name='ESTACOMP' value='<?echo urlencode(serialize($ESTACOMP))?>'>
Eso lo intenté también, pero no funciona
Me parece raro que no funcione, tal vez si le llamas como $_REQUEST['ESTACOMP']
Para poder encontrar un posible error en el código, bien podrías enviarlo para su revisión
Respuesta
-1
En PHP se puede pasar argumentos a una función, por valor o por referencia.
Si quieres modificar el contenido de la variable en la function y guardar dichos cambios después de la llamada a la función debes pasar la variable por referencia, utilizando el carácter "&" en la definición de la función.
<?php
function laFuncion(&$elArgumento)
{
...
}
?>
Además, esto evita la copia de la variable ya que se trabaja con la misma dentro del cuerpo de la función.
Esto vale para arrays también.
Pruébalo.
Makkina.
Tu respuesta está mal orientada, yo no te pedí teoría de funciones, quería que me ayudaras a solucionar el problema que tenia con un vector que al ser reenviado perdía su valor... Gracias de todos modos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas