Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

php5, objetos, ajax y pear... base de datos..

Estas en el tema de php5, objetos, ajax y pear... base de datos.. en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola, estoy desarrollando un proyecto y para ello intento mesclar tanto ajax como php5 y pear... pear con php5 funciona excelente.. xajax con php5 funciona ...
  #1 (permalink)  
Antiguo 21/03/2007, 11:29
 
Fecha de Ingreso: mayo-2006
Mensajes: 17
Antigüedad: 17 años, 11 meses
Puntos: 0
php5, objetos, ajax y pear... base de datos..

Hola, estoy desarrollando un proyecto y para ello intento mesclar tanto
ajax como php5 y pear...

pear con php5 funciona excelente..
xajax con php5 funciona excelente..

pero pear con xajax al parecer no funciona...

les explico el problema en concreto.

tengo una funcion que crea la conexion a la base de datos
Cita:
$db=Conectarse()
esa funcion utilzia pear y todo bien hasta ahi..
tengo un archivo php con funciones para xajax.. y a el accedo con formularios y "onclicks.."
resulta que una de las funciones debe validar formularios con la base de datos
y no hay caso de conseguir el $db desde esa funcion...

intente guardar el $db en un objeto
Cita:
$usuario->$db
pero la funcion no lo reconoce...
luego intente guardar el usuario en session para luego llamarlo desde la funcion
Cita:
$_SESSION["usuario"]=$usuario y luego $_SESSION["usuario"]->db
pero tampoco lo reconoce...

no se como solucionarlo, el punto en concreto es que no quiero tener que crear una nueva conexion en cada una de las funciones... ya que el sistema se basa en la conexion a base de datos y formularios...

no seria correcto ni optimo que para cada formulario tenga que crear una nueva conexion... alguien sabe como puedo hacerlo?

como puedo enviar el $db o el $usuario o el $_SESSION["usuario"] a la funcion?


muchas gracias y espero puedan ayudarme, ya que es indispensable para seguir en el desarrollo...

Daniel Aldea
  #2 (permalink)  
Antiguo 21/03/2007, 16:53
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: php5, objetos, ajax y pear... base de datos..

Deberias de postear todo tu codigo completo ya que no veo bien donde tienes el error, en si no hay ninguna incompatibilidad entre PEAR y xAjax, ya que son paquetes diferentes, es como si me dijieras que hay un error entre round() y strtoupper(), son funciones diferentes.

Si lo quieres guardar en una variable de una clase esta mal tu planteamiento:
Código PHP:
$usuario->$db // Esto esta mal
$usuario->db // Esto es correcto, solo hay que ver si realmente estas almacenando ahi una instancia de tu conexion. 
  #3 (permalink)  
Antiguo 22/03/2007, 08:05
 
Fecha de Ingreso: mayo-2006
Mensajes: 17
Antigüedad: 17 años, 11 meses
Puntos: 0
Re: php5, objetos, ajax y pear... base de datos..

Gracias por tu respuesta, tienes razon con respecto a $usuario->$db... me conundi al escribirlo, pero en mi desarrollo lo escribi bien (el eclipse muestra todos los errores jaja)

Explico mas claro todo:

Como funciona XAJAX? debes crear funciones, luego registrar dichas funciones en xajax y luego cargarlas con los "onclick" en los formularios...

Yo hice una conexion con pear, y la guardo en $db.

Cita:
function Conectarse()
{

$DB_host = "xxx";
$DB_user = "xxx";
$DB_pass = "xxx";
$DB_dbName = "xxx";
$DB_dbType = "pgsql";

$conexion =$DB_dbType . "://"
. $DB_user . ":"
. $DB_pass . "@"
. $DB_host . "/"
. $DB_dbName;


$db = DB::connect($conexion, TRUE);

if (DB::isError($db))
{

die($db->getMessage());
}


return($db);
}
mi funcion para xajax sirve para verificar el usuario y la contraseña en la base de datos...

Cita:
function ingreso($aFormValues)
{
$objResponse = new xajaxResponse();
$rut = $aFormValues['rut'];
$password = $aFormValues['password'];
$usuario=$_SESSION["usuario"]; // <- ahi intente ver si logro obtener la conexion desde la session
$db=$usuario->db; // y luego guardarla en $db ...

// ese fue uno de mis tantos intentos por obtener el $db dentro de la funcion


$objResponse->addAlert("Formulario: $rut - $password ");
$objResponse->addAlert("db: $usuario->db ");
ese objeto response solo me miestra lo primero:
Formulario : rut - password .. .por lo que funciona bien
lo segundo no me aparece ... db:


intente enviarndo el $db como parametro.. pero en ese caso simplemente no funcionaba el "objresponse" ... no me devolvia nada.. no hacia nada..

intente enviando un objeto $usuario... que contuviera el $db..
como lo comente en el mensaje anterior $usuario->db

finamente intente eso de la session... guardando en session el objeto usuario...
y nada


el formulario es:

Cita:
<form method="post" id="form_login" name="form_login" onsubmit="return false;">
<input class="inputTextLog" name="rut" type="text" id="nombre" maxlength="8">
<input class="inputTextLog" name="password" type="password" id="password" maxlength="10">
<input class="boton" name="Submit" type="submit" value="Entrar" onclick="xajax_ingreso(xajax.getFormValues('form_l ogin'));">
</form>
por cierto, en la pagina del formulario fui probando si mis ocurrencias funcionaban y efectivamente, cada una de mis pruebas resultaba bien:

Cita:


echo '<br/>db: '.$db; // el db original
echo '<br/>Usuario->db: '.$usuario->db; // el db guardado en el objeto usuario
echo '<br/>db2: '.$db2; //guarde en db2 $usuario->db (para ver si dentro de la funcion resultaria asi
echo '<br/>Session_usuario db: '.$_SESSION["usuario"]->db; // finalmente muestro la session que es copia del objeto usuario
todo eso funciona.. y en cada uno de ellos la conexion esta activa:
Cita:
usuario-> db:
db_pgsql: (phptype=pgsql, dbsyntax=pgsql) [connected]

db:
db_pgsql: (phptype=pgsql, dbsyntax=pgsql) [connected]

db2:
db_pgsql: (phptype=pgsql, dbsyntax=pgsql) [connected]

Session_usuario db:
db_pgsql: (phptype=pgsql, dbsyntax=pgsql) [connected]

no se de que manera puedo enviarle la conexion a la funcion, para no tener que conectarme en cada funcion

alguien podria ayudarme o corregir algun error?

gracias
Daniel
  #4 (permalink)  
Antiguo 22/03/2007, 08:52
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: php5, objetos, ajax y pear... base de datos..

Recuerda que cada que tu llamas a un request (ya sea via AJAX, GET, o POST) se crea una nueva instancia de tu script.

Ahora si lees el manual, explicitamente dice que no se deben de pasar recursos (como conexiones a una bd) via sesiones.

A que me refiero con esto? a que cada que hagas una llamada a tu script, es una nueva instancia, por consiguiente necesitas volver a conectarte a la base de datos por cada request que hagas, o en su caso usar conexiones persitentes para que no se cierren al final de que ejecutas tu script.
  #5 (permalink)  
Antiguo 22/03/2007, 09:51
 
Fecha de Ingreso: mayo-2006
Mensajes: 17
Antigüedad: 17 años, 11 meses
Puntos: 0
Re: php5, objetos, ajax y pear... base de datos..

Muchas gracias por tu respuesta, pero que significa eso?, si el sistema que estoy desarrollando se basa en formularios y validaciones de estos...
cada una de las validaciones debe crear una nueva conexion?

si es asi... y muchas personas utilizan el mismo sistema, a la vez... entonces el servidor va a quedar saturado...

No existe ninguna solucion a eso? o yo entendi mal y no significa eso?

muchas gracias nuevamente
Daniel desde Chile
  #6 (permalink)  
Antiguo 22/03/2007, 18:00
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: php5, objetos, ajax y pear... base de datos..

la unica solucion es usar alguna otra forma en lugar de AJAX (google por COMET), o en dado caso usar conexiones persistentes a tu base de datos para aligerar la carga al servidor.
  #7 (permalink)  
Antiguo 23/03/2007, 09:30
 
Fecha de Ingreso: mayo-2006
Mensajes: 17
Antigüedad: 17 años, 11 meses
Puntos: 0
Re: php5, objetos, ajax y pear... base de datos..

Que interesante lo que me comentas, no tenia idea que existia comet...
ahora esoty investigando un poco y es justamente lo que necesito.
Voy a seguir leyendo pero desde ya te agradezco enormemente por la gran ayuda que me diste al "abrirme los ojos"


De casualidad no habra alguna otra cosa que pueda necesitar para no llegar a este punto nuevamente?

El sistema es para gestion de un colegio, parte administrativa y financiera.
El sistema ya esta implementado con visual basic 6 y sql server...
pero se esta migrando a la web.

Cita:
Las tencologias propuestas fueron:
- PHP.. facilidad y rapidez para programar... servidores linux
- PEAR ... para abstraccion de base de datos
- AJAX ... para interactividad y darle un enfoque de sistema mas que de web
- CSS ... para los estilos graficos
ahora ese AJAX creo que sebe ser cambiado por COMET... que otra cosa crees que me podria ayudar o faltar mas adelante?

muchisimas gracias!
Daniel Aldea desde Chile.
  #8 (permalink)  
Antiguo 23/03/2007, 09:38
 
Fecha de Ingreso: marzo-2007
Mensajes: 5
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: php5, objetos, ajax y pear... base de datos..

Leyendo un poco lo que pusiste supongo que utilizas XAJAX para devolver el Object Response. Si es asi, donde persistis los datos de conexion? si los persistis en session, primero tenes que utilizar serialize antes de ponerlo en session y luego unserialize para convertilo de nuevo en un objeto.

por ejemplo

$_SESSION['usuario'] = serialize($usuario);
...............

function ingreso($aFormValues)
{
$objResponse = new xajaxResponse();
$rut = $aFormValues['rut'];
$password = $aFormValues['password'];
$usuario= unserialize($_SESSION["usuario"]); // <- ahi intente ver si logro obtener la conexion desde la session
$db=$usuario->db; // y luego guardarla en $db ...

// ese fue uno de mis tantos intentos por obtener el $db dentro de la funcion


$objResponse->addAlert("Formulario: $rut - $password ");
$objResponse->addAlert("db: $usuario->db ");
  #9 (permalink)  
Antiguo 23/03/2007, 10:33
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: php5, objetos, ajax y pear... base de datos..

Estimado GastonRobledo:

Cita:
Iniciado por PHP Manual
Nota: Actualmente es imposible registrar variables de recurso en una sesión. Por ejemplo, no puede crear una conexión a una base de datos y almacenar la id de conexión como una variable de sesión y esperar que la conexión aun sea válida la próxima vez que la sesión sea restaurada. Las funciones PHP que devuelven un recurso se identifican por tener un tipo de retorno de resource en su definicón de función. Una lista de funciones que devuelven recursos está disponible en el apéndice tipos de recurso.
http://www.php.net/manual/es/functio...n-register.php
  #10 (permalink)  
Antiguo 23/03/2007, 10:36
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: php5, objetos, ajax y pear... base de datos..

Comet es un proyecto muy interesante para aplicaciones web que no persisten las instancias como JSP o .NET, ya que puedes tener una instancia de tu programa corriendo y sabiendo que esa instancia se va a mantener mientras el usuario este "loggeado"
  #11 (permalink)  
Antiguo 23/03/2007, 10:39
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: php5, objetos, ajax y pear... base de datos..

Respecto a lo que comentas de no llegar a este punto, te recomiendo que primero le heches una buena leida a los conceptos basicos del transporte HTTP, AJAX es un request HTTP, asi que teniendo los conceptos en claro puedes saber que necesitas crear una instancia nueva de tu php script.

Lo que necesitas es definir muy bien tu diagrama de tu programa ya una vez bien diagramado sabes que parte debe ir en donde y ya no tendras mas problemas en un futuro.
  #12 (permalink)  
Antiguo 23/03/2007, 11:53
 
Fecha de Ingreso: marzo-2007
Mensajes: 5
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: php5, objetos, ajax y pear... base de datos..

GATORV - Tienes razon, no lei que lo queria almacenar era el id de conexion, luego leyendo mas detenidamente, entiendo tu punto.

Saludos
  #13 (permalink)  
Antiguo 28/06/2007, 01:35
Avatar de jorjo  
Fecha de Ingreso: abril-2007
Ubicación: España
Mensajes: 90
Antigüedad: 17 años
Puntos: 1
Re: php5, objetos, ajax y pear... base de datos..

Hola, aprovechando el tema, estoy desarrollando una web con php, ajax y xajax.

Mi pregunta es si se pueden implementar funciones php o javascript desde xajax, ya que al parecer no funciona de la forma "tradicional"...

Los botones en xajax no realizan ninguna función, es decir, se hace clic encima y no hacen nada, cuando en el "onclick" se llama a una función.

un saludo y gracias.
  #14 (permalink)  
Antiguo 28/06/2007, 08:04
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: php5, objetos, ajax y pear... base de datos..

Si se puede mezclar php y javascript y la mezcla es xajax, te invito a que leas el wiki de xajax en su pagina podras ver varios ejemplos de como se pueden mezclar ambos proyectos.

Saludos.
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 10:13.