Foros del Web » Programando para Internet » PHP »

Recordset en variable de sesion?

Estas en el tema de Recordset en variable de sesion? en el foro de PHP en Foros del Web. Hola a todos, estoy intentando meter un recordset en una variable de sesion, para que sea accesible desde distintas páginas. Sin embargo, cuando intento utilizarlo ...
  #1 (permalink)  
Antiguo 05/05/2004, 03:27
 
Fecha de Ingreso: noviembre-2003
Mensajes: 51
Antigüedad: 20 años, 5 meses
Puntos: 0
Recordset en variable de sesion?

Hola a todos,

estoy intentando meter un recordset en una variable de sesion, para que sea accesible desde distintas páginas.

Sin embargo, cuando intento utilizarlo me da un error bastate extraño:

Para crear el Recordset hago esto:

$cnx = ADONewConnection('mysql');
$cnx->connect($_SESSION["server_bd"], $_SESSION["login_bd"], $_SESSION["pwd_bd"], $_SESSION["name"]);
$_SESSION["search_result"] = $cnx->Execute($sql);

el contenido es una consulta SQL, y en otra página hago lo siguiente:

echo $_SESSION["search_result"]->RecordCount();

y me da el siguiente error:


Fatal error: Unknown(): The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition <b>adorecordset_mysql</b> of the object you are trying to operate on was loaded _before_ the session was started in

Alguien sabe que significa?

Muchas gracias.
  #2 (permalink)  
Antiguo 05/05/2004, 06:41
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Tendrias que hacer algo tipo:

Código PHP:
session_start();
$cnx ADONewConnection('mysql');
$cnx->connect($_SESSION["server_bd"], $_SESSION["login_bd"], $_SESSION["pwd_bd"], $_SESSION["name"]); 
$cnx->Execute($sql);
$_SESSION["cnx"] = $cnx
Es decir .. todo tu objeto (sus propiedades y variables en ese estado) hacia tu sesión.

Al propagar un objeto en una sesión .. los métodos se pierden así que es necesario incluir denuveo tu classe en el script sub-siguiente:

Código PHP:
<?
include ("adodb.php"); // o como se llame tu classe
session_start();
if (isset(
$_SESSION['cnxt'])){
$cnx=$_SESSION['cnx']
} else {
$cnx ADONewConnection('mysql');
}

echo 
$cnx->RecordCount();
?>
Por lo demás .. no está de más comprobar si tu variable de sesión que contiene tu objeto está definido o no como para instanciar el objeto nuevamente o continuar con las propiedades que propagastes en la variable de sesión.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 05/05/2004 a las 06:46
  #3 (permalink)  
Antiguo 05/05/2004, 06:49
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

El error ese que te da es por no definir antes la clase al que pertenece el objeto. Haz lo que dice Cluster, antes de todos los session_start() de todas tus paginas debes incluir la definicion de la clase.

Y luego puede que siga sin funcionar, ya que puede ser que tu objeto recordset no sea mas que una variable que almacena el id de resutado de consulta de MySQL, que se cierra y borra una vez que finaliza el script donde se creo.

¿Tiene esa clase una funcion serialize()? Si la tiene, esta diseñada para estos menesteres.

Saludos.

PD: ADOdb no es un standard de PHP, es una liberia mas. Asi que siempre menciona que librerias ajenas a PHP usas (a ser posible con un link a la home).
__________________
Josemi

Aprendiz de mucho, maestro de poco.
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:41.