Foros del Web » Programando para Internet » PHP »

enviar array

Estas en el tema de enviar array en el foro de PHP en Foros del Web. Hola, tengo una página donde en un array guardo diferentes datos que recojo de la base datos, de esta forma: $preg=array(); $preg=$_POST["preguntas"]; ?> <? for($n=1;$n<=$numpruebas;$n++){ ...
  #1 (permalink)  
Antiguo 10/01/2008, 04:33
 
Fecha de Ingreso: diciembre-2007
Mensajes: 140
Antigüedad: 16 años, 4 meses
Puntos: 0
enviar array

Hola,
tengo una página donde en un array guardo diferentes datos que recojo de la base datos, de esta forma:

$preg=array();
$preg=$_POST["preguntas"]; ?>

<? for($n=1;$n<=$numpruebas;$n++){
echo "EXAMEN".$n."<br/>";
$s=1;
foreach($preg as $x => $pregunta){
?>
<input name="preguntas[]" type="hidden" value="<? echo $pregunta;?>" id="preguntas[]"/>
<?
$sqlpreg="SELECT * FROM actividad WHERE cod_act=$pregunta";
$resulpreg=mysql_query($sqlpreg);
while($filapreg=mysql_fetch_array($resulpreg)){
//echo $filapreg["nom_act"]."<br/>";
//echo $filapreg["respuesta"]."<br/>";
$examen[$n][$s]=$filapreg["nom_act"]."//".$filapreg["respuesta"]."<br/>";

$s=$s+1;
}
}
print_r($examen[$n]); ?>


al hacer el print_r, me muestra bien todo el array, pero al querer enviarlo a otra página, no consigo que me envie bien el array, no me hace el print_R. Lo envio de esta forma:

<a href="propias.php?examen=<? echo $examen;?>" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage('propias','','imagenes/propias2.jpg',1)"><img src="imagenes/propias1.jpg" alt="Añadir preguntas propias" name="propias" width="31" height="31" border="0" id="propias" /></a>

y lo recojo en otra página así:

<?
$examen=array();
$examen=$_GET["examen"];
print_r($examen);
?>



Gracias
  #2 (permalink)  
Antiguo 10/01/2008, 05:53
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 19 años, 6 meses
Puntos: 48
Re: enviar array

Puedes usar una combinacion de serialize y base64_encode para crear el parametro, y luego base64_decode y unserialize para recoger el parametro.
  #3 (permalink)  
Antiguo 11/01/2008, 03:32
 
Fecha de Ingreso: diciembre-2007
Mensajes: 140
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: enviar array

Lo estoy probamdo pero no me funciona

Código de la página con la que envío

$preg=array();
$preg=$_POST["preguntas"]; ?>

<? for($n=1;$n<=$numpruebas;$n++){
echo "EXAMEN".$n."<br/>";
$s=1;
foreach($preg as $x => $pregunta){
$sqlpreg="SELECT * FROM actividad WHERE cod_act=$pregunta";
$resulpreg=mysql_query($sqlpreg);
while($filapreg=mysql_fetch_array($resulpreg)){
$examen[$n][$s]=$filapreg["nom_act"]."//".$filapreg["respuesta"]."<br/>";
$s=$s+1;
}
}
print_r($examen[$n]);
$examen=array_envia($examen);

function array_envia($examen) {
$tmp = serialize($examen);
$tmp = urlencode($tmp);
return $tmp;
}



}



Código de la página con la que recibo

function array_recibe($examen) {
$tmp = stripslashes($examen);
$tmp = urldecode($tmp);
$tmp = unserialize($tmp);

return $tmp;
}

$examen=array();
$examen=$_GET["examen"];
$examen=array_recibe($examen);
foreach ($examen as $indice => $valor){
foreach ($examen[$indice] as $subIndice=> $subValor) {
echo "[$indice][$subIndice]=$subValor<br>";
}
}


error que me da:

Notice: unserialize(): Error at offset 0 of 5 bytes in c:\archivos de programa\easyphp1-8\www\generador2\propias.php on line 46

Warning: Invalid argument supplied for foreach() in c:\archivos de programa\easyphp1-8\www\generador2\propias.php on line 54
  #4 (permalink)  
Antiguo 11/01/2008, 03:57
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 19 años, 6 meses
Puntos: 48
Re: enviar array

Haz un echo $examen al principio de array_recibe() para ver que valor es el que recibe. Quizas te sobra el stripslashes().
  #5 (permalink)  
Antiguo 11/01/2008, 04:51
 
Fecha de Ingreso: diciembre-2007
Mensajes: 140
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: enviar array

Ya lo he solucionado, no me enviaba bien el array.
gracias
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 21:13.