Foros del Web » Programando para Internet » PHP »

serializar array multidimensional

Estas en el tema de serializar array multidimensional en el foro de PHP en Foros del Web. alguien sabe como puedo serializar un array multidimensional para pasar por una url y luego poder recibirlo en otra para poder mostrar un menu? Gracias...
  #1 (permalink)  
Antiguo 29/03/2007, 01:33
 
Fecha de Ingreso: mayo-2004
Mensajes: 180
Antigüedad: 20 años, 5 meses
Puntos: 2
serializar array multidimensional

alguien sabe como puedo serializar un array multidimensional para pasar por una url y luego poder recibirlo en otra para poder mostrar un menu? Gracias
  #2 (permalink)  
Antiguo 30/03/2007, 09:55
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 11 meses
Puntos: 17
Re: serializar array multidimensional

Si vas a trabajar en el mismo Server, puedes hacer el array una variable de session o agregarlo a una cookie (aunq la cookie tiene un limite de tamaño, creo q un 1kb, corrinjame, metodo no recomendado) usa la variable de session mejor.

Si de todas formas, quieres pasar los datos atravez de GET via la URL, lo que puedes hacer es concatenar los datos del array en un string, ejemplo

Código PHP:
<?


$array 
= array("gato","perro",1,3,4,5,6,"miau","logo","juanito","deerme.org");

$i=0;
foreach ( 
$array as $valor )
{
     
$string .= 'array['.$i.']='.$valor.'&';
     
$i++;
}


echo 
'<a href="recibe.php?'.$string.'">Link</a>';



?>
y recibe.php
Código PHP:
<?
echo print_r($_REQUEST)
?>
imprime
Código:
Array
(
    [array] => Array
        (
            [0] => gato
            [1] => perro
            [2] => 1
            [3] => 3
            [4] => 4
            [5] => 5
            [6] => 6
            [7] => miau
            [8] => logo
            [9] => juanito
            [10] => deerme.org
        )

)
Como puedes ver el array fue pasado atravez de la url al otro php, pero te repido, esto es muy cutre, y lo mejor para pasar datos entre scripts (en el mismo servidor) es usar variables de sessiones, cookies (y si las variables son muy grandes, la metes en una bd)

Saludos
  #3 (permalink)  
Antiguo 30/03/2007, 13:58
Avatar de oso96_2000  
Fecha de Ingreso: junio-2002
Ubicación: Distrito Federal
Mensajes: 558
Antigüedad: 22 años, 5 meses
Puntos: 35
Re: serializar array multidimensional

Y has probado usar serialize y unserialize?
__________________
Sin Ideas
  #4 (permalink)  
Antiguo 30/03/2007, 14:10
 
Fecha de Ingreso: agosto-2003
Ubicación: Guatemala
Mensajes: 94
Antigüedad: 21 años, 3 meses
Puntos: 0
Re: serializar array multidimensional

El array ( al igual que un objeto ) en php, se puede serializar, con esto lo que hacemos es convertir estos objetos en cadenas, para poder enviarlas a traves de get o post hacia otra pagina, o puede tambien guardarse en base de datos o en una cookie.

La forma de hacerlo es la siguiente:

Haciendo uso de la funcion $strTemp = serialize ( $array );
Luego codificamos la url, urlencode ( $strTemp );

Con esto ya tenemos serializado nuestro array, y listo para enviarlo por get o post.

En la pagina que recibimos este datos, debemos seguir lo siguiente:

Primero tenemos que eliminar los apostrofes, haciendo uso de stripslashes ()
Luego decodificamos la url con urldecode();
Y por ultimo deserializamos (?) el array, con unserialize().

Espero te sirva en algo.

Saludos.
__________________
Luis Pirir
Programador Web
Móvil: (502) 50623292
  #5 (permalink)  
Antiguo 06/01/2008, 20:43
 
Fecha de Ingreso: enero-2008
Ubicación: Mexico, D.F.
Mensajes: 4
Antigüedad: 16 años, 10 meses
Puntos: 0
Exclamación Re: serializar array multidimensional

Hola, estoy tratando de hacerlo como lo comentan en la pagina a.php serializo, codifico y mando por url a la pagina b.php, en la pagina b.php cacho, decodifico, un unserializo.....

El problema es que en la pagina b.php si recibo el valor serrealizado....pero no puedo deserealizarlo.

cuando es en la misma pagina si puedo deserializar....pero cuando pasa a la pagina b.php no se puede. sin ningun error, solo no muetra datos.

este es mi codigo:


-------a.php------------
<?php
$array = array("A"=>1,"B"=>2,"C"=>3);
$array_serializado = serialize($array);
$array_codificado = urlencode($array_serializado);
?>

<?php
echo "muestra array serializada </br>";
print_r($array_serializado);
echo "</br>";
echo "</br>";
echo "</br>";
echo "muestra array serializado y codificado </br>";
print_r($array_codificado);
echo "</br>";
echo "</br>";
echo "muestra array decodificado y serializado </br>";
$array_decodificado = urldecode($array_codificado) ;
print_r($array_decodificado);
echo "</br>";

echo "<a href=b.php?data='" . $array_codificado . "'>pagina b</a>";
?>

--------------------------

-------b.php------------
<?php
$array= $_GET[data];

echo "</br>Array talcual</br>";
print_r($array);
echo "</br>Arrary decodificado</br>";
$array_decodificado = urldecode($array);
print_r($array_decodificado);
echo "</br>Array deserealizado</br>";
$array_deserailizado = unserialize($array_decodificado);
print_r($array_deserailizado);

?>
--------------------------
  #6 (permalink)  
Antiguo 06/01/2008, 21:54
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Re: serializar array multidimensional

Si trabajas con PHP5 puedes usar http_build_query para codificar tu array en un query string y posteriormente recibirlo sin problemas en tu otra pagina.

Saludos.
  #7 (permalink)  
Antiguo 06/01/2008, 22:16
 
Fecha de Ingreso: enero-2008
Ubicación: Mexico, D.F.
Mensajes: 4
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: serializar array multidimensional

Muchas gracias, parece que esta es la forma indicada para eso.....

Con esto no ya no tendria que usar stripslashes correcto?
tampoco tendria que usar urlencode, correcto?

Muchas Gracias
  #8 (permalink)  
Antiguo 06/01/2008, 22:21
 
Fecha de Ingreso: enero-2008
Ubicación: Mexico, D.F.
Mensajes: 4
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: serializar array multidimensional

Perdon....

ya vi como lo envia...en una cadena separada dpo & , como recupero el array en la otra pagina? algo asi como "de_http_build_query" ó "un_http_build_query"???
  #9 (permalink)  
Antiguo 06/01/2008, 22:21
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Re: serializar array multidimensional

Asi es, ya que la funcion se encarga automaticamente de escapar los datos.

Saludos.
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 12:54.