| |||
Enviar un arreglo de una pagina php a otra Hola a todos, recien soy nuevo en este maravilloso muindo de la programacion web en php, mi duda es como enviar un arreglo q cargo en una pagina php y mandarlo y recibirlo en otra pagina php, es decir q desde otra pagina php pueda tener acceso a mi arreglo. Si hay alguna manera, muchas gracias. Última edición por Jose_Luis; 03/12/2004 a las 17:28 |
| ||||
Lo puedes pasar por cualquier medio... Si necesitas que esté disponible en varias páginas... lo mejor sería que lo guardes en una variable de sesión... Pero si simplemente lo quieres pasar de un script a otro... lo debes serializar... lo envías como cualquier variable y luego al recibirlo en el otro script, lo desserializas.... y lo tienes igual. Función serialize(): http://www.php.net/serialize Función unserialize: http://www.php.net/unserialize Saludos ![]() |
| |||
Hola , estuve intentando pero no puedo, el codigo q intente es mas o menos asi , En la pagina donde lleno de datos mi arreglo: $contador=0; while($resultadoVector=mysql_fetch_array($resultad oQuery)) { $arreglo[contador]=$resultadoVector["campo2"]; echo $arreglo[contador]; $contador=$contador+1; } $serializado=serialize($arreglo);//aca serializo el arreglo con todos los datos(esta bien? $instanciaConexion->closeConexion(); header ("Location: maestro.php"); //mando a la otra pagina llamada maestro.php como ven lo unico q hago es guardar en un arreglo los resulktados de un Select a una bD. Y ahora en la pagina maestro.php, como haria para deserializarla??? yo he puesto asi: $unserialcad=unserialize($serializado); ahi me quedo, no se como hacer , tengo q hacer algun casteo???? Muchas gracias por su ayuda. |
| |||
Revisa esta FAQ para propagar tu array entre scripts (una vez que lo obtengas en un array como te comenta Reynier en su primera parte de sus ejemplos si es que procede en tu caso): http://www.forosdelweb.com/f18/faqs-php-530600-post262072/ Un saludo, |
| |||
Hola, gracias por sus mensajes, realmente me ayudan mucho en lo q es PHP, pero ahora tengo otra duda y para explicarlo mejor voy a agregar el codigo: Este es parte del codigo de la primera pagina php q va a mandar el arreglo while($resultadoVector=mysql_fetch_array($resultad oQuery)) { array_push($arreglo,$resultadoVector["campo2"]); } echo "Este es el primer valor del arreglo ".$arreglo[0]."<br>"; $cadenaserial=serialize($arreglo); $instanciaConexion->closeConexion(); header("Location:maestro.php?variable=".$cadenaser ial); como pueden ver el arreglo ha sido mandado; esta listo para ser recibido , pero no quiero que salga nada en la URL, por q ahi sale una cadena super larga. Hay alguna manera de evitar que el arreglo que mando salga en la direccion URL?? Muchas Gracias.. |
| |||
Otra duda, la unica manera de serializar y unserialize es habiendolo mandado por la URL verdad??? no puedo hacerle de frente el unserialize en la otra pagina??? POr ahi lei q serialize() te guarda la variable en disco y x lo tanto puedes acceder a ella. Muchas gracias por su tiempo |
| |||
Si , me fue de gran ayuda, pero lo q me dijo Cluster, aun tengo q hacerle un click en un boton o en un link para q lo mande. Pero yo quiero que la llamada sea automatica por eso utilizo el header() Lo que no quiero es qe todo esa cadena , se muestre en la url. Muchas Gracias |
| ||||
Pues veamos Cita: A que te refieres cuando dices que la llamada sea automática, a que te redireccione de esta forma:Pero yo quiero que la llamada sea automatica por eso utilizo el header() Código HTML: recibe_array.php ? array = a:3:{i:0;s:4: Cita: La cadena esa se muestra de una forma grande porque la misma a sido codificada para navegar por la URL sin ningún problema (creo). Yo le he hecho algunas modificaciones al código de las FAQ's y aqui te lo dejo:Lo que no quiero es qe todo esa cadena , se muestre en la url. envia_array.php Código PHP: Código PHP: Salu2 ![]()
__________________ Ing. Reynier Pérez Mira |
| |||
Para ser mas explicito en mi duda las doy el codigo completo. Como pueden ver en esta pagina llamada SoloLogica.php , no tengo nada de codigo html , ya que lo unico que hace es recibir la accion enviada de una pagina y si esta acccion es "VerTodos" , crea un arreglo, lo llena y manda este arreglo hacia otra pagina llamada Maestro.php A esto me refiero que la llamada a la pagina Maestro.php sea automatica ( al igual que con el gotoPage en java) Código PHP: Ahora en Maestro.php tengo lo siguiente que si funciona ya que logro capturar el arreglo pero de las dos maneras ya sea comentando o descomentando el urlencode y urldecode me sale en la url algo asi: Sin comentar: http://localhost/maestro.php?variable=a:10:{i:0;s:4:"dssd";i:1;s:4: "assa";i:2;s:0:"";i:3;s:4:"assa";i:4;s:3:"ass";i:5 ;s:0:"";i:6;s:0:"";i:7;s:3:"asa";i:8;s:4:"sdds";i: 9;s:4:"dssd";} y Comentando http://localhost/maestro.php?variabl...2dssd%22%3B%7D Código PHP: Existe alguna manera de que este arreglo se envie y se reciba serializado sin que se muestre en la url?? Muchas Gracias. |
| |||
Entonces .. no propages el Array en el URL .. usa una sesión para almacenar esos datos en el servidor y los lees en la pàgina/script que redirecciones. www.php.net/session (en las FAQ's de este foro PHP tienes ejemplos de uso y algo de explicaciòn teórica al respecto). Si usas sesiones, no es necesario ni serializar ni des-serializar los arrays .. Hasta objetos puedes propagar en sesiones, salvo el detalle que los mètodos se pierden; sólo se conservan las propiedades del objeto (variables). Pero eso tiene solución .. se incluye tu objeto (include("tu_classe.php")) antes de inciar el uso de sesiones (session_start()) y listo. Pero .. te hago un comentario al hilo del tema que abristes: http://www.forosdelweb.com/f18/arquitectura-elaboracion-paginas-php-252026/#post889207 Estudia sobre "motores de templates" .. por qué no se trata de "pasar" tus variables al script que componga la salida (digamos: "vista") sino de que PHP bajo ese "motor" de gestiòn de "plantillas" .. "parsee" tu plantilla y haga las operaciones que tengan que hacerse en funciòn de tus datos y como tengas que componerla dinàmicamente para obtener su "salida". Hasta PHP hace de "parseador" . si tu no quieres tener en un mismo script el còdigo de la "lógica de negocios" (PHP procesos) y lo que corresponde a la "vista" .. no es necesario que "redirecciones" pues iguamente puedes tenerlo "separado" pero llamando a tu "vista" (plantilla) bajo un include().. Ejemplo proceso_vista.php <? // tus procesos PHP include ("vista.php"); ?> y vista PHP .. algo tipo <html> <head> </head> <body> <? echo $variable ?> </body> </html> Pero .. como la mayorìa de casos esto no es tan "simple" .. pues hay zonas de tu "vista" que son variables en funciòn de los datos que obtienes de una consulta a tu BD por ejemplo .. para eso estàn los "motores de templates" que gestionan a modo de "buffer" la generaciòn de tu salida completa para luego entregarlo a la "salida" .. por lo menos asì tienes separado e identificado tus "plantillas" (ese HTML con sus zonas que pueden ser repetidas .. etc). Un saludo, Última edición por Cluster; 05/12/2004 a las 09:13 |