Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/05/2006, 07:33
yartax
 
Fecha de Ingreso: abril-2006
Mensajes: 76
Antigüedad: 18 años
Puntos: 0
Conexión Interbase con objetos

Hola estoy inciandome en el mundillo php. Quiero realizar una aplicación que maneja datos de una BBDD de interbase. Estoy utilizando clases para encapsular el acceso a la base de datos y registrarla dentro de una session (para poder acceder durante toda una session).

Mi problema es que la conexión se realiza con exito y ibase_connect me devuelve un interbase link resource válido. Pero al utilizarlo en otro mètodo de la clase el resource se ha perdido. Puede ser que las propiedades de una clase no quedan registradas dentro de una session?!?!?

Primero registro en la session los objetos aplicacion y bbdd. Luego utilizo bbdd->Conecta para crear una conexión persistente. El resultado es OK me devuelve un resource link que la guardo dentro de la misma clase. Luego llamo a app->Valida_usuario() que llama a bbdd->Sql() y aqui es donde no dispone del resource link!!!!!

Si alguien me puede dar una manita encantado de la vida.!!!!

PD: Utilizo PHP4 en un linux con Apache2 con register_globals OFF.

Grácias.


----------------------------- INDEX.PHP
<?php
include_once ("app.php");
include_once ("bbdd.php");
session_start();
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">

<%@ language=PHP%>
<html>

<head>
<title>BLABLABLA</title>
<meta http-equiv="generator" content="e-Hipotels" />
</head>

<body bgcolor="#FFF8FF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
<p>Bienvenido al portal BLABLABLA</p>
<?
if ( ! isset ( $_SESSION['aplicacion']) )
$_SESSION['aplicacion'] = new app;
if ( ! isset($_SESSION['bbdd']) )
$_SESSION['bbdd'] = new bbdd;
$_SESSION['bbdd']->Conecta();
$_SESSION['aplicacion']->login();
?>
</body>
</html>

----------------------- MAIN.PHP
<?php
include_once ("app.php");
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<%@ language=PHP%>
<html>

<head>
<title><u>Menú principal</u></title>
<meta http-equiv="generator" content="e-Hipotels" />
</head>

<body bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
<?
$aplicacion = $_SESSION['aplicacion'];
if ( ! $aplicacion->valida_usuario() )
$aplicacion->loginKO();
else
$aplicacion->menu();
?>
</body>
</html>

-------------------------------APP.PHP
<?php
include ("bbdd.php");
session_start();
?>
<?php

class app
{
var $usuario;
var $clave;
var $user_id;

function login()
{
include ( "login.inc" );
}
function valida_usuario()
{
$this->usuario = $_POST['login_usuario'];
$this->clave = $_POST['login_clave'];
$bbdd = $_SESSION['bbdd'];
echo $bbdd->conexion;
$texto_sql = "Select * from usuario";
$regs = $bbdd->Sql( $texto_sql );

}
function loginKO()
{
include ( "loginKO.inc");
}
function info_usuario()
{

echo "Usuario conectado: ";
echo ($this->clave);
}
function menu()
{

}
}
?>

----------------------------- BBDD.PHP
<?php
session_start();
?>

<?php
class bbdd
{
var $user;
var $pass;
var $server;
var $conexion;

function Conecta()
{
$this->server = "10.11.3.2:d:/TEST.gdb";
$this->user = "SYSDBA";
$this->pass = "test";
$this->conexion = ibase_pconnect( $this->server, $this->user , $this->pass );
echo "Conectado a ibase cnx:";
echo $this->conexion ;
}
function Sql( $comando )
{
echo $this->user . " conexion: ";
echo $this->conexion;
$qry = ibase_query( $this->conexion, $comando );

while ($R = ibase_fetch_object($qry))
{
echo $R->USUARIO;
}
}

}
?>