Foros del Web » Programando para Internet » PHP »

Pasar array multidimensional por parámetro entre PHPs

Estas en el tema de Pasar array multidimensional por parámetro entre PHPs en el foro de PHP en Foros del Web. Buenas. Estoy intentando pasar un array multidimensional de un php a otro y no me pasa nada. El array que quiero pasar es una select ...
  #1 (permalink)  
Antiguo 29/07/2011, 05:52
 
Fecha de Ingreso: julio-2011
Mensajes: 91
Antigüedad: 13 años, 3 meses
Puntos: 2
Pasar array multidimensional por parámetro entre PHPs

Buenas.
Estoy intentando pasar un array multidimensional de un php a otro y no me pasa nada.
El array que quiero pasar es una select de una tabla de bbdd (mysql).
¿Hay que utilizar alguna función especial para pasarla?. He intentado utilizar serialize() y unserialize() y también explode() e implode() pero no he conseguido nada. Es bastante probable que esté dando palos de ciego.
Saludos.
  #2 (permalink)  
Antiguo 29/07/2011, 06:00
Avatar de NUCKLEAR
Moderador radioactivo
 
Fecha de Ingreso: octubre-2005
Ubicación: Cordoba-Argentina
Mensajes: 5.688
Antigüedad: 19 años
Puntos: 890
Respuesta: Pasar array multidimensional por parámetro entre PHPs

Si no pones el codigo no se puede hacer nada....
__________________
Drupal Argentina
  #3 (permalink)  
Antiguo 29/07/2011, 06:01
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 8 meses
Puntos: 253
Respuesta: Pasar array multidimensional por parámetro entre PHPs

Quieres hacer una copia de un array a otro exactamente idéntico? Explícate mejor.

Por cierto, qué consulta SQL te da un array multidimensional?

Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #4 (permalink)  
Antiguo 29/07/2011, 09:54
 
Fecha de Ingreso: julio-2011
Mensajes: 91
Antigüedad: 13 años, 3 meses
Puntos: 2
Respuesta: Pasar array multidimensional por parámetro entre PHPs

Buuuuf, ya veo que estoy muy verde.
Lo que estoy haciendo es una consulta sql que devuelve una una colección de filas o registros y cada uno de estos registros tienen sus correspondientes campos o valores. ¿No devuelve la select un array de filas y cada una de ellas contiene un array con los valores del registro?, seguramente y por como me lo preguntas debe de ser que no.
Mi problema es que necesito pasar esta colección de filas de un php a otro php y no consigo hacerlo. Es decir, en el php origen si existe esta colección pero al intentar pasarlo está vacio en el destino.
He leido por ahí (cosa distinta es que lo haya interpretado correctamente) la posibilidad de serializar esta colección para pasarlo y posteriormente desserializarlo (seguro que esta palabrota tampoco existe pero nos entendemos), y también he probado con explode e implode, pero tampoco he tenido exito, aunque bien es cierto que estoy dando palos de ciego porque no tengo claro que estoy haciendo.
Pego el código de los dos php´s a ver si me podéis ayudar.

Cita:
// Obtener las preguntas relacionadas con el tema seleccionado
$preguntas = get_preguntas($idtema);
$num_preguntas = @mysql_num_rows($preguntas);

if ($num_preguntas > 0){
display_repaso($num_preguntas);
} else {
echo "<p>Este tema actualmente no tiene preguntas/respuestas a realizar</p>";
}
display_button($target, "continue", "Continuar");

Cita:
function display_button($target, $image, $alt)
{
echo "<center><a href=\"$target\"><img src=\"images/$image".".jpg\"
alt=\"$alt\" border=0 height = 25 width = 97></a></center>";
}
Cita:
$curso = get_curso_name($idcurso);
$asignatura = get_asignatura_name($idasignatura);
$tema = get_tema_name($idtema);

do_html_header($curso." - ".$asignatura." - ".$tema);

$fila = mysql_fetch_array($preguntas);

display_pregunta($fila);
No se si con esto expongo de forma correcta la incidencia.

Muchas gracias por la pronta contestación por vuestra parte.
Saludos.
  #5 (permalink)  
Antiguo 29/07/2011, 10:10
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 8 meses
Puntos: 253
Respuesta: Pasar array multidimensional por parámetro entre PHPs

Buenas,

Deduzco (y ya es mucho deducir) que lo que necesitas es pasar $preguntas de aquí:
$preguntas = get_preguntas($idtema);
A aquí:
$fila = mysql_fetch_array($preguntas);
Que estarán en ficheros diferentes.

Ese código no vale de mucho, ya que casi todo son llamadas a funciones, pero yo te pregunto, es que no puedes hacer en el segundo fichero esto:
$preguntas = get_preguntas($idtema);
$fila = mysql_fetch_array($preguntas);

Es decir, puedes acceder desde el segundo fichero a get_preguntas()? Si es que sí, no te compliques la vida, lo que tienes que pasar no es el array completo, pasas únicamente $idtema y vuelves a obtener las preguntas.

Cómo pasar $idtema? Eso depende de cómo funcione tu aplicación. Si son dos formularios, puedes poner un campo oculto en el segundo para pasar datos del primero. Si no son formularios, puedes pasarlo a través de variables de sesión ($_SESSION), si son códigos php que se incluyen uno en el otro, puedes pasarlo directamente como variable, si son diferentes funciones de un mismo fichero, puedes poner variables globales... Como ves, las soluciones son muchas, tienes que explicar un poco más, porque si no, no te vamos a poder ayudar.

Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #6 (permalink)  
Antiguo 29/07/2011, 10:28
 
Fecha de Ingreso: julio-2011
Mensajes: 91
Antigüedad: 13 años, 3 meses
Puntos: 2
Respuesta: Pasar array multidimensional por parámetro entre PHPs

De antemano muchas gracias por las rapídisimas respuestas que me estáis dando.
A ver si consigo explicarme....
No meto todo en el mismo php porque no quiero que esté accediendo a bbdd cada vez que presento una pregunta.
Como bien dices es una web de preguntas y respuestas y lo que pretendo hacer es lo siguiente:
Selecciono un tema sobre el que quiero que me realice una prueba o repaso de preguntas. Las preguntas las presenta de forma aleatoria, para que no les presente el mismo orden cada vez que vuelvo a entrar. Posteriormente una vez realizada la consulta presento una ventana en la que informo de cual es el número de preguntas para completar el repaso a ese tema, invitando a pulsar un botón para iniciar el repaso. Es aquí donde pretendo pasar la colección de filas correspondientes a cada pregunta/respuestas al php que se encargará de procesarlas una a una, informando con cada respuesta del progreso del repaso.
Como te comento al inicio, entiendo que el coste de acceder a la bbdd cada vez que se hace una pregunta es alto y es por esto por lo que no lo pongo todo en el mismo php, pero te aseguro que lo he pensado.
Como bien puedes o podéis comprobar, tengo mucho que aprender. Quiero decir con esto que es posible que diga mas de una chorrada pero estoy en proceso de distinguir la chorrada de lo realmente correcto en php.
Un saludo y de nuevo gracias por vuestro tiempo.
  #7 (permalink)  
Antiguo 02/08/2011, 02:07
 
Fecha de Ingreso: julio-2011
Mensajes: 91
Antigüedad: 13 años, 3 meses
Puntos: 2
Respuesta: Pasar array multidimensional por parámetro entre PHPs

Buenos días.
¿Alguien me puede ayudar sobre este tema?
Gracias.
  #8 (permalink)  
Antiguo 02/08/2011, 02:15
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 8 meses
Puntos: 253
Respuesta: Pasar array multidimensional por parámetro entre PHPs

Buenas,

Sigo diciéndote que el problema del código que muestras es que es todo llamadas a funciones y no podemos adivinar lo que hacen por dentro esas funciones.

De todas formas, te doy la idea para pasar variables entre diferentes páginas PHP. Échale un ojo a SESSION, con esa estructura puedes pasar lo que quieras entre variables.

Espero que te sirva, un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #9 (permalink)  
Antiguo 02/08/2011, 03:16
 
Fecha de Ingreso: julio-2011
Mensajes: 91
Antigüedad: 13 años, 3 meses
Puntos: 2
Respuesta: Pasar array multidimensional por parámetro entre PHPs

Hola.
Me voy a patear el tema sesiones.
El que ponga las llamadas a funciones y no el código es porque no tiene nada relevante para el tema. Son funciones con presentación de datos o con mensajes para el usuario.
He visto que me comentastes el anteriormente la opción con sesiones.
Gracias.
  #10 (permalink)  
Antiguo 02/08/2011, 03:21
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 8 meses
Puntos: 253
Respuesta: Pasar array multidimensional por parámetro entre PHPs

La idea básica de las sesiones es que es una estructura que se comparte desde que se accede a una página hasta que se sale (cierra el navegador o se cierra manualmente la sesión). Con esta estructura, que es un simple array con índices string se puede pasar de unas páginas a otras la info que desees.

Creo que es la mejor solución para tu problemilla. Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #11 (permalink)  
Antiguo 02/08/2011, 05:04
 
Fecha de Ingreso: julio-2011
Mensajes: 91
Antigüedad: 13 años, 3 meses
Puntos: 2
Respuesta: Pasar array multidimensional por parámetro entre PHPs

Gracias una vez mas.
He estado comprobando el tema sesiones (recuerda que soy muy nuevo en esto) y parece bastante sencillo. Entiendo que solo hay que iniciar cada php con session_start() y registrar las variables que quiera utilizar en el php que vaya a llamar, iniciando igualmente este php destino con el session_start().
Mi pregunta es si existe algún tipo de restricción para el tipo de variable. Concretamente si hay alguna limitación para declarar una variable que contenga simplemente un valor de retorno de una select:

Código:
  $query = "select *
             from preguntas
             where idtema = $idtema";

   $result = @mysql_query($query);
...previa comprobación de que exista alguna fila en esta select.
  #12 (permalink)  
Antiguo 02/08/2011, 05:28
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 8 meses
Puntos: 253
Respuesta: Pasar array multidimensional por parámetro entre PHPs

En principio, puedes guardar lo que quieras.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #13 (permalink)  
Antiguo 02/08/2011, 07:43
 
Fecha de Ingreso: julio-2011
Mensajes: 91
Antigüedad: 13 años, 3 meses
Puntos: 2
Respuesta: Pasar array multidimensional por parámetro entre PHPs

Buenas.
Ya lo he hecho pero en ningun caso me permite pasar como parámetro la salida de la consulta select, es decir:

Código:
$query = "select *
             from preguntas
             where idtema = $idtema
             order by rand()limit $num_preguntas";
   $result = @mysql_query($query);
No es un problema de la select puesto que de este $result extraigo valores como el número de filas y vuelco toda esta salida a un array que es el que si que me permite pasar como parámetro de forma exitosa.

Código:
$array_de_preguntas = array();
    while($r = mysql_fetch_assoc($preguntas)) {
        // Agregamos la fila entera al array.
        $array_de_preguntas[] = $r; 
    }
Tanto el número de filas, como el array y el resultado de la select los registro como variables de sesión, pero el resultado de la select no lo pasa.
Gracias y saludos.
  #14 (permalink)  
Antiguo 02/08/2011, 07:55
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años, 6 meses
Puntos: 394
Respuesta: Pasar array multidimensional por parámetro entre PHPs

Tienes un problema de logica amigo, mira como lo haria yo respecto a lo que tu tienes:

Código PHP:
Ver original
  1. $query = "select * from preguntas where idtema = $idtema order by rand() limit $num_preguntas";
  2. $result = @mysql_query($query);
  3. $array_de_preguntas = array();
  4.     while($r = mysql_fetch_assoc($result)) { // mira que el fetch_assoc se le hace a los resultados del query
  5.         // Agregamos la fila entera al array.
  6.         $array_de_preguntas[] = $r;
  7.     }
  8. // Despues guado el array en una variable de sesion asi:
  9. $_SESSION['unNombre'] = $array_de_preguntas;
  10. // despues en otra pagina tomo los resultados
  11. print_r($_SESSION['unNombre']);

Espero te sirva.
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #15 (permalink)  
Antiguo 02/08/2011, 08:23
 
Fecha de Ingreso: julio-2011
Mensajes: 91
Antigüedad: 13 años, 3 meses
Puntos: 2
Respuesta: Pasar array multidimensional por parámetro entre PHPs

Hola.
Solo con ánimo de aprender... ¿por qué un problema de lógica?
Yo al principio del script registro las variables...

Código:
session_start();
                   session_register("array_de_preguntas");
........... y la utilizo en el script de destino.
  #16 (permalink)  
Antiguo 02/08/2011, 10:07
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años, 6 meses
Puntos: 394
Respuesta: Pasar array multidimensional por parámetro entre PHPs

por que esto NO ES LOGICO:

while($r = mysql_fetch_assoc($preguntas))

Como le vas a hacer un FETCH_ASSOC a $preguntas si el resultado del query lo guardas en $result ?

mysql_fetch_assoc se usa para manejar los resultados que entrega MySql entonces no encuentro lógico que hagas un ASSOC a $preguntas cuando debería ser a $result...

No te parece ?

Ademas no debes usar SESSION_REGISTER ya que muy clarito lo dice el manual de PHP:

Código PHP:
Ver original
  1. Esta función ha sido declarada OBSOLETA desde PHP 5.3.0. Su uso está totalmente desaconsejado.

Entonces solo necesitas $_SESSION['unNombre'] = $array_de_preguntas; y con eso es mas que suficiente para que tu variable de sesión quede declarada sin ningún problema.

Espero que esto te de un norte para lo que quieres hacer.
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #17 (permalink)  
Antiguo 02/08/2011, 12:23
 
Fecha de Ingreso: julio-2011
Mensajes: 91
Antigüedad: 13 años, 3 meses
Puntos: 2
Respuesta: Pasar array multidimensional por parámetro entre PHPs

Bueno, entiendo que puedes tener una función que te devuelve un valor y que luego tu a su vez puedas llamar de la manera que mas te interese al valor devuelto.
Respecto a que se desaconseja utilizar SESSION_REGISTER y que está muy clarito en el manual de php, de verdad que te lo agradezco y seguiré los pasos que me comentas, pero por eso repito una y otra vez que soy muy nuevo en esto y que tengo todo que aprender. Como he comenzado siguiendo unos videotutoriales de Illasaron pues es cierto que son un poco antiguos y es por esto.que utilizo estas cosillas un poco prehistóricas.
Jotaincubus, gracias por tus respuestas y consejos. De verdad que hacéis que esto resulte menos complicado de lo que ya es, y estoy no quiere decir que me esté resultando fácil.
Un saludo.

Etiquetas: multidimensional, mysql, pasar, tabla
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 13:44.