Foros del Web » Programando para Internet » PHP »

Pasar un mysql_fetch_array como variable de sesion

Estas en el tema de Pasar un mysql_fetch_array como variable de sesion en el foro de PHP en Foros del Web. Buenas a todos Tengo una duda, que no he sabido resolver yo solo, ya que llevo poco tiempo con php, y voy un poco a ...
  #1 (permalink)  
Antiguo 20/11/2006, 14:18
 
Fecha de Ingreso: noviembre-2006
Mensajes: 102
Antigüedad: 17 años, 4 meses
Puntos: 1
Pregunta Pasar un mysql_fetch_array como variable de sesion

Buenas a todos

Tengo una duda, que no he sabido resolver yo solo, ya que llevo poco tiempo con php, y voy un poco a trancas y barrancas.

En un archivo .php hago algo parecido a esto:

Archivo1.php
Código:
<?php
session_start();
session_register('registros');
session_register('count');

$link=mysql_pconnect(host,"name","pwd") or die('Error conectando a la bbdd'.mysql_error());
mysql_select_db("Database") or die ('Error seleccionando la bbdd'.mysql_error());

$dato=$_SESSION['dato'];
$registros=mysql_query("select * from tabla where campo='$dato'", $link);
$_SESSION['count']=mysql_num_rows($registros);
$_SESSION['registros']=$registros;
?>
Ok, y ahora tengo otro archivo que rescata dicha variable $_SESSION['registros'].

Archivo2.php:
Código:
<?php
session_start();

for ($i=1; $i<=$_SESSION['count']; $i++){
        $reg=mysql_fetch_array($_SESSION['registros']);
	echo $reg['nombre'].'<br>';
{
?>
Basicamente un archivo selecciona los datos, y el otro los imprime en pantalla.
El problema es que, al ejecutarse el segundo archivo, me da como resultado el siguiente error:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\dominio\archivo2.php on line 5.

Y no he tenido webs de resolverlo A ver si alguno me podeis echar un cable, y soluciono esto.

Gracias de antemano y un saludo.
  #2 (permalink)  
Antiguo 20/11/2006, 15:12
Avatar de jmqc  
Fecha de Ingreso: noviembre-2004
Ubicación: Venezuela
Mensajes: 353
Antigüedad: 19 años, 4 meses
Puntos: 1
Que tal por que no le asignas a la variable de sesion la cadena de consulta y en la otra página mandas a ejecutar tu consulta... Algo asi:
Archivo1.php
$registros="select * from tabla where campo='$dato'", $link;
$_SESSION['registros']=$registros;

Archivo2.php
mysql_query($_SESSION['registros']);

Creo que asi te puede funcionar. Espero te sirva... Saludos
__________________
Ante el desconocimiento ni entendimiento de las cosas decimos que los demás estan locos.

José Quintero. Saludos.
:adios:
  #3 (permalink)  
Antiguo 20/11/2006, 15:25
 
Fecha de Ingreso: noviembre-2006
Mensajes: 102
Antigüedad: 17 años, 4 meses
Puntos: 1
Efectivamente he pensado en esa posibilidad, aunque la veo redundante, y te explico por qué.

El primer archivo busca en la tabla las coincidencias, calcula el total de las mismas y manda esa cifra a la pagina principal, que se autorrecarga con esa cantidad, de manera que, si es 0 (ninguna coincidencia) escribe que no hay coincidencias, y si las hay, salta una ventana en la que deben aparecer los registros con dichas coincidencias. Es en esta ventana donde se carga el archivo2.php. Podría nuevamente mandar desde la pagina principal las variables que se usan en la busqueda ($_SESSION['dato']) y realizar nuevamente la busqueda, pero lo veo bastante engorroso, un poco cutre, la verdad. Más que nada, porque supongo que debe haber una solucion simple al problema.

Espero encontrarla, sigo dandole vueltas

Un saludo
  #4 (permalink)  
Antiguo 20/11/2006, 18:19
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Lo que obtienes de un mysql_query() no es más que un "resource" o recurso de la consulta SQL ejecutada .. No es bueno que lo propagues en una sesión.

Es cierto que tu defines una conexión persistente (pconnect ...) no sé si eso ya lo consideras o no .. Una conexión persistente ya se encarga de mantener el vinculo (conexión) establecida entre cliente y servidor para agilizar las consultas SQL generadas. Además no es un recurso -ilimitado- así que cuidado con el abuso de ese tipo de conexiones.


Realmente si quisieras hacer lo que pretendes .. no sé para que almacenas en una variable de sesión el "total de registros" que pueda arrojarte la consulta SQL .. aplica un bucle while() simplemente:

Código PHP:
<?php
session_start
();

while (
$row=mysql_fetch_array($_SESSION['registros']){
    echo 
$reg['nombre'].'<br>';
}
?>
De todas formas .. no sé hasta que punto eso funcionará .. por qué en la sesión tus datos de tu consulta SQL quedarían "serializados" (puedes ir a ver tu sesión generada como archivo y editar dicho archivo a ver que ves en el ..). Y lo que necesitan tus funciones mysql_xxx_xxx() es un "resorce" que es justamente lo que te está alegando en el mensaje de error PHP.

Realmente lo que estás haciendo se resuelve simplemente haciendo la consulta SQL bajo el criterio que tu decides en el scritp que tenga que hacer el "detalle" de ese registro con el resto de campos de registro aislado y referenciado.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 16:27.