Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-06-2005
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
Se Puede Trabajar FireBird con PHP????

Quiero hacer mi primera programa en PHP haciendo una consulta a una tabla de una base de datos, ya instale el Apache 2.054 y el PHP 4 ya realize las configuraciones pertinentes para PHP y el Apache, tengo el siguiente Código que uso para conectarme a la BD y hacer la consulta a una tabla:
Código PHP:
<?php    
$path 
'c:/Ejemplo/datos/MiBD.gdb';    
$usuario 'SYSDBA';    
$password 'masterkey';    
$dbhd ibase_connect ($path$usuario$password);    
$sql 'SELECT * FROM clientes';    
$consulta ibase_query ($dbhd$sql);    
while (
$fila ibase_fetch_object ($consulta)) 
{        
print 
$fila->email "\n";    
}    
ibase_close ($dbhd);?>
Y me lanza en el Internet Explorer los siguientes errores:
Warning: ibase_connect(): unavailable database in C:\Servidor\php\Paginas\QryFireBird1.php on line 5

Warning: ibase_query(): no InterBase link resource supplied in C:\Servidor\php\Paginas\QryFireBird1.php on line 7

Warning: ibase_fetch_object(): supplied argument is not a valid InterBase result resource in C:\Servidor\php\Paginas\QryFireBird1.php on line 8

Warning: ibase_close(): 0 is not a valid InterBase link resource in C:\Servidor\php\Paginas\QryFireBird1.php on line 12

Este ejemplo lo tome de este club....

Que estare haciendo mal????

Agradezco cualquier sugerencia al respecto....

Última edición por AGAG4 fecha: 21-06-2005 a las 02:53:04. Razón: Corrección
Responder Con Cita
  #2  
Antiguo 21-06-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cita:
Empezado por AGAG4
Que estare haciendo mal????
Cita:
Empezado por AGAG4
Warning: ibase_connect(): unavailable database in C:\Servidor\php\Paginas\QryFireBird1.php on line 5
Hola.

Sugiero que el servidor de interbase sea arrancado antes de intentar de nuevo acceder a esta página.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #3  
Antiguo 21-06-2005
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
????

Cita:
Empezado por jachguate
Hola.

Sugiero que el servidor de interbase sea arrancado antes de intentar de nuevo acceder a esta página.

Hasta luego.

Juan Antonio si te refieres de que debe de estar abierto el Guardian de FireBird antes de acceder a la consulta por php por medio del internet explorer te informo que si siempre tengo abierto el FireBird, he escarbado un poco en el google y veo la misma instrucción para conectarme a una base de datos de INTERBASE por eso pregunto si se puede conectar a FireBird ya se que este úlimo es hijo de Interbase pero como es la primera vez que intento hacer consultas por medio de PHP ando viendo cual es la causa de los errores que me muestra, ya revise el php.ini que tengo en c:\windows y tengo habilitado el dll del interbase.... Gracias por su respuesta.
Responder Con Cita
  #4  
Antiguo 21-06-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
El mensaje de error es típico de cuando el servidor no está levantado. Si no es eso, pues francamente no tengo idea por ahora.
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #5  
Antiguo 22-06-2005
Mick Mick is offline
Miembro
 
Registrado: may 2003
Posts: 405
Poder: 21
Mick Va por buen camino
Prueba a indicar el nombre de la computadora, ejemplo:

$path = 'localhost:c:\Ejemplo\datos\MiBD.gdb';

Otra cosa, los nombres de los campos debes indicarlos en mayusculas, porque asi los devuelve el modulo de interbase, sino php no los encontrará (php es case-sensitive en los nombres de las variables como C) ejemplo:

print $fila->EMAIL . "\n";

Si tienes dudas sobre lo que contiene $fila, puedes probar a hacer un:

print_r($fila);

Que te imprimira todo el contenido del registro $fila incluidos nombres de campos y valores , indicando tambien si la variable se trata de un objeto o un array, etc, bastante util para debugear.

Otra cosa, es aconsejable utilizar ibase_pconnect en lugar de ibase_connect, ya que es muchisimo mas rapido mantener la conexion entre peticiones de paginas, que reconectar en cada peticion.

Mas cosas, es aconsejable que indiques el charset en el ibase_connect,
si tus paginas web van en iso normal:

$ibase_charset = 'ISO8859_1';

Si tus paginas van en UTF-8 (formato que cada vez se utiliza mas sobre todo en paginas que deben poder internacionalizarse ya que permite mostrar los caracteres de cualquier idioma):

$ibase_charset= 'UNICODE_FSS';

Usando firebird esta ultima opcion es muy util, ya que aunque la base de datos originalmente este guardada en ISO8859_1 firebird hace la conversion de forma automatica, devoviendo la informacion directamente en UTF-8.

Saludos
Responder Con Cita
  #6  
Antiguo 22-06-2005
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
Ahora....

Cita:
Empezado por Mick
Prueba a indicar el nombre de la computadora, ejemplo:

$path = 'localhost:c:\Ejemplo\datos\MiBD.gdb';

Otra cosa, los nombres de los campos debes indicarlos en mayusculas, porque asi los devuelve el modulo de interbase, sino php no los encontrará (php es case-sensitive en los nombres de las variables como C) ejemplo:

print $fila->EMAIL . "\n";

Si tienes dudas sobre lo que contiene $fila, puedes probar a hacer un:

print_r($fila);

Que te imprimira todo el contenido del registro $fila incluidos nombres de campos y valores , indicando tambien si la variable se trata de un objeto o un array, etc, bastante util para debugear.

Otra cosa, es aconsejable utilizar ibase_pconnect en lugar de ibase_connect, ya que es muchisimo mas rapido mantener la conexion entre peticiones de paginas, que reconectar en cada peticion.

Mas cosas, es aconsejable que indiques el charset en el ibase_connect,
si tus paginas web van en iso normal:

$ibase_charset = 'ISO8859_1';

Si tus paginas van en UTF-8 (formato que cada vez se utiliza mas sobre todo en paginas que deben poder internacionalizarse ya que permite mostrar los caracteres de cualquier idioma):

$ibase_charset= 'UNICODE_FSS';

Usando firebird esta ultima opcion es muy util, ya que aunque la base de datos originalmente este guardada en ISO8859_1 firebird hace la conversion de forma automatica, devoviendo la informacion directamente en UTF-8.

Saludos
Ya puse el nombre de la PC antes dela Ruta de la BD (NombrePc:c:\PHP\BD.gdb), cambie ibase_connect por ibase_pconnect, añadí
$ibase_charset= 'UNICODE_FSS'; en la Ruta de la Base de Datos Probe usando las 2 Diagonales (/ \), pero ahora me pone la Página en BLANCO ni siquiera me pone ningún Error, Ahora que estará pasando????

Gracias por sus Respuestas....

Última edición por AGAG4 fecha: 22-06-2005 a las 01:54:04. Razón: Corrección
Responder Con Cita
  #7  
Antiguo 22-06-2005
Mick Mick is offline
Miembro
 
Registrado: may 2003
Posts: 405
Poder: 21
Mick Va por buen camino
Si te sale una pagina en blanco, no hay errores y el script se ha ejecutado correctamente.
Simplemente el resultado de la query no ha devuelto datos, por eso no hay nada que mostrar.
Prueba a debugear un poco poniendo echo(s) y print_r(s) para ver
por donde va el fllujo del programa.

Saludos
Miguel
Responder Con Cita
  #8  
Antiguo 22-06-2005
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
ok

Voy a investigar un poco en debugear con echo(s) y print_r(s)...

Gracias

Que Tenga Buen Día....
Responder Con Cita
  #9  
Antiguo 22-06-2005
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
ya quedo

Asi es, como me lo menciono Mick, estaba bien las instrucciones pero sólo me faltaba mandar a imprimirlo por pantalla, quedo de la siguiente manera con echo:
Código PHP:
....
while (
$fila ibase_fetch_object ($sth)) 
{        
echo 
$fila->CAMPO1 " " $fila->CAMPO2 "<br>";
}    
.... 
Muchas Gracias Mick....

Que Tengan Buen Día....

Última edición por AGAG4 fecha: 22-06-2005 a las 21:43:48. Razón: Corrección
Responder Con Cita
  #10  
Antiguo 15-10-2005
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 21
JXJ Va por buen camino
AGAG4

¿Puedes poner el codigo completo corregido. ?

no encuentro donde insertaste el codigo que muestras.
imprimiendo con echo

vale gracias
Responder Con Cita
  #11  
Antiguo 16-10-2005
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 21
JXJ Va por buen camino
Hice pruebas. por que tengo interes en usar
firebird, php y apache juntos

Tome tu codigo y le cambien unas cosas.
Esto es la direccion deonde tengo la base de datos y nombre
$path = 'C:\EMPLOYEE.FDB';
La tabla se llama EMPLOYEE
$sql = 'SELECT * FROM EMPLOYEE';
y la fila
print $fila->EMP_NO . "\n";
solo cambien los datos y funcionara.

-------------------------
Código PHP:
<?php    
$path 
'C:\EMPLOYEE.FDB';    
$usuario 'SYSDBA';    
$password 'masterkey';    
$dbhd ibase_connect ($path$usuario$password);    
$sql 'SELECT * FROM EMPLOYEE';    
$consulta ibase_query ($dbhd$sql);    
while (
$fila ibase_fetch_object ($consulta)) 
{        
print 
$fila->EMP_NO "\n";    

}    
ibase_close ($dbhd);?>
-----------
Otra cosa a mi me funciono bien. con print y con echo
con print se mostraban los datos
en una sola linea asi
2458911
usando echo se mostraron asi
2
4
5
8
9
11
-----------
Alo mejor a ti te dio error AGAG4, por que no habias
registrado la base de datos.
yo la registre.
Esto para que si a alguien le interesa. lo pongo.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 04:58:13.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi