Foros del Web » Programando para Internet » PHP »

Problema PHP ODBC... si alguien sabe...

Estas en el tema de Problema PHP ODBC... si alguien sabe... en el foro de PHP en Foros del Web. Bueno... el problema es simple... Al intentar enviar una consulta SQL a una Base de Datos ODBC, me arroja un error... La consulta SQL es... ...
  #1 (permalink)  
Antiguo 08/08/2006, 11:43
Avatar de DarkXNightmare  
Fecha de Ingreso: agosto-2005
Ubicación: Somewhere Over The Rainbo
Mensajes: 181
Antigüedad: 12 años, 3 meses
Puntos: 0
Problema PHP ODBC... si alguien sabe...

Bueno... el problema es simple...

Al intentar enviar una consulta SQL a una Base de Datos ODBC, me arroja un error...
La consulta SQL es...
Código PHP:
$result odbc_exec("SELECT * FROM some_table LIMIT 0, 5");
... 
El error esta en el LIMIT. Cuando agrego un LIMIT a una consulta SQL, me dice que hay un error de Sintaxis porque ODBC no soporta el LIMIT. La pregunta es...

¿Cómo pagino resultados de consultas SQL a una base de Datos ODBC?

No es urgente tener esta información pero si me gustaría saberlo como cultura general de PHP.
__________________
Cambiando mi Web... sean pacientes :P
  #2 (permalink)  
Antiguo 08/08/2006, 12:28
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
El detalle está que esto sería "cultura general" .. pero de SQL y del SQL própio de la BBDD que uses.

ODBC como bien conoces es un "standard" de comunicación para conectarte a tus BBDD que puedan ser accedidas por ese método, pero el "SQL" (Lenguaje Estructurado de Consultas") a emplear es el própio de la BBDD que te conectas.

LIMIT por ejemplo es própio de Mysql .. pero no de "Access" por ejemplo .. ni de "SQL Server" .. o de otras tantas ..

Es decir .. no te guies tanto en que te conectas por "ODBC" sino en la BBDD que realmente te conectas y su SQL particular.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 08/08/2006, 12:55
Avatar de DarkXNightmare  
Fecha de Ingreso: agosto-2005
Ubicación: Somewhere Over The Rainbo
Mensajes: 181
Antigüedad: 12 años, 3 meses
Puntos: 0
Si se que no es compatible pero si se puede...
Sino... explicame como puedes paginar resultados con phpBB instalado en una Base MS Access. Yo tengo instalado phpBB en una Base MS Access y me dá la opción para paginar resultados. :P.

Yo tengo una pequeña idea de como hacerlo... y es con la función preg_match para adivinar si se ingresa un la palabra LIMIT en el SQL.

Bueno... entonces... ¿Cómo puedo limitar los resultados con ODBC MS Access?... Ojalá me puedan ayudar ;D.
__________________
Cambiando mi Web... sean pacientes :P
  #4 (permalink)  
Antiguo 08/08/2006, 13:56
Avatar de DarkXNightmare  
Fecha de Ingreso: agosto-2005
Ubicación: Somewhere Over The Rainbo
Mensajes: 181
Antigüedad: 12 años, 3 meses
Puntos: 0
:D:D:D! Ya aprendí como crear las consultas SQL con LIMIT a ODBC. Ojo con este Script...

Código PHP:
<?php
$conn 
odbc_connect("mybase""xxxxx""xxxxx");
$sql "SELECT * FROM clients";
if (
preg_match("/LIMIT/"$sql))
{
    
preg_match("/^SELECT(.*?)(LIMIT ([0-9]+)[, ]*([0-9]+)*)?$/"$sql$limits);
    
$result odbc_exec($conn"SELECT" $limits[1]);
    
    
$show $limits[4] + $limits[3];
    
$limits[3]++;
    
    for (
$i $limits[3]; $i <= $show$i++)
    {
        
$row odbc_fetch_array($result$i);
        echo 
$row['nombre'] . "<br />\r\n";
    }    
}else{
    
$result odbc_exec($conn$sql);
    while (
$row odbc_fetch_array($result))
    {
        echo 
$row['nombre'] . "<br />\r\n";
    }
}
odbc_close($conn);
Ese es el Script y me funciona de maravilla ;D...
Espero que les ayude este Script a los que tienen mi duda ;)...
Atte... DarkXNightmare
__________________
Cambiando mi Web... sean pacientes :P
  #5 (permalink)  
Antiguo 08/08/2006, 13:59
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Sino... explicame como puedes paginar resultados con phpBB instalado en una Base MS Access. Yo tengo instalado phpBB en una Base MS Access y me dá la opción para paginar resultados. :P.
Se hace con "capas de abstracción de Base de datos" ... Por ejemplo phpBB usa ADOdb si mal no recuerdo o equivalente:

ADOdb
http://adodb.sourceforge.net/

Las "capas" de abstracción de BBDD están entre las funciones "básicas" del lenguaje PHP para conectarte a una BBDD (y no por ODBC precisamente en todos los casos ..) y tu "código" (o capa de "negocios") .. Ellas son las que se encagan de tener funciones tipo:

$capaBBDD->Selecciona_BBDD_que_usamos("Msyql"); // podría ser otras ...
$capaBBDD->ejecuta_consulta("consulta SQL simple .. sin LIMIT ni equivalente")
$capaBBDD->dame_Resultados_paginados();

Tú bajo este concepto nunca "ves" un mysql_xxx() .. o un obdc_xxx() .. o un mssql_xxx(). Sólo usas los métodos adecuados ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 08/08/2006, 14:01
Avatar de DarkXNightmare  
Fecha de Ingreso: agosto-2005
Ubicación: Somewhere Over The Rainbo
Mensajes: 181
Antigüedad: 12 años, 3 meses
Puntos: 0
Naaahh..... Detesto ocupar cosas hechas por otros... prefiero crear mis propias herramientas para programar... ;D. Además, ya solucioné el problema y lo dejo arriba ;D.
Atte... DarkXNightmare ;D.

PD: Perdoname pero phpBB usa herramientas creadas por ellos mismos... por eso me llamaba la atención como paginar con ODBC. Si deseas, chequea el Script de Bases de Datos de phpBB2 y me das tu opición ;D.
__________________
Cambiando mi Web... sean pacientes :P
  #7 (permalink)  
Antiguo 08/08/2006, 14:03
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por DarkXNightmare Ver Mensaje
:D:D:D! Ya aprendí como crear las consultas SQL con LIMIT a ODBC. Ojo con este Script...

Código PHP:
<?php
$conn 
odbc_connect("mybase""xxxxx""xxxxx");
$sql "SELECT * FROM clients";
if (
preg_match("/LIMIT/"$sql))
{
    
preg_match("/^SELECT(.*?)(LIMIT ([0-9]+)[, ]*([0-9]+)*)?$/"$sql$limits);
    
$result odbc_exec($conn"SELECT" $limits[1]);
    
    
$show $limits[4] + $limits[3];
    
$limits[3]++;
    
    for (
$i $limits[3]; $i <= $show$i++)
    {
        
$row odbc_fetch_array($result$i);
        echo 
$row['nombre'] . "<br />\r\n";
    }    
}else{
    
$result odbc_exec($conn$sql);
    while (
$row odbc_fetch_array($result))
    {
        echo 
$row['nombre'] . "<br />\r\n";
    }
}
odbc_close($conn);
Ese es el Script y me funciona de maravilla ;D...
Espero que les ayude este Script a los que tienen mi duda ;)...
Atte... DarkXNightmare
mmm .. Si bien "funciona" .. a mi en lo personal no me gusta para nada "mezclar" conceptos como así lo hace el código que propones.

Es decir, .. por un lado te deja "creer" que en el SQL para conexiones ODBC (de cualquier tipo) puedes usar LIMIT .. Pero, lo que hace realmente es buscar esa "frase" y quitarlo de la consulta SQL para ejecutar una más simple .. tomar los "parámetros" del "LIMIT" especificado y trabajar la consutla SQL con "código PHP" (ejecutando consultas SQL bajo ese bucle for ..)

Veo por mi parte más "claro" usa una capa de abstracción de BBDD y usar un SQL más básico (Si es que tu aplicación PHP va a tener que funcionar con vários motores de BBDD) o un SQL más concreto para el motor de BBDD que uses.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 08/08/2006, 14:09
Avatar de DarkXNightmare  
Fecha de Ingreso: agosto-2005
Ubicación: Somewhere Over The Rainbo
Mensajes: 181
Antigüedad: 12 años, 3 meses
Puntos: 0
Bueno... como te dije al principio... solo estoy haciendo una pequeña aplicación para aprender como crear SQL con consultas LIMIT...
Además, mi idea principal era crear Consultas SQL con LIMIT y bueno... voy a trabajar en el motor de bases de datos para todos los tipos de Base de Datos :P.

Me despido y hasta la proxima... atte... DarkXNightmare ;D.
__________________
Cambiando mi Web... sean pacientes :P
  #9 (permalink)  
Antiguo 08/08/2006, 14:20
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por DarkXNightmare Ver Mensaje
Naaahh..... Detesto ocupar cosas hechas por otros... prefiero crear mis propias herramientas para programar... ;D. Además, ya solucioné el problema y lo dejo arriba ;D.
Atte... DarkXNightmare ;D.
Bueno, es una opinión. Yo no suelo re-inventar la rueda, eso no quita que sea bien selectivo en lo que uso, e intento siempre -saber en que se basa- .

El día que tengas que generar un PDF por ejemplo .. o enviar un e-mail por sockets? .. o usar una capa de abstracción de BBDD bien definida y probada? .. Todo depende de que trabajos hablamos .. yo lo veo en el ambito profesional, donde -no- hay que perder el tiempo (pero si saber que haces o que usas)

Cita:
PD: Perdoname pero phpBB usa herramientas creadas por ellos mismos... por eso me llamaba la atención como paginar con ODBC. Si deseas, chequea el Script de Bases de Datos de phpBB2 y me das tu opición ;D.
No sé como trabaja phpBB .. he visto otro tipo de software como PHP-Nuke que si que usan ADOdb o classes de ese estilo bien comunes, con mucho soporte y no por ello "malas" ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #10 (permalink)  
Antiguo 08/08/2006, 14:31
Avatar de DarkXNightmare  
Fecha de Ingreso: agosto-2005
Ubicación: Somewhere Over The Rainbo
Mensajes: 181
Antigüedad: 12 años, 3 meses
Puntos: 0
Estoy 100% deacuerdo contigo... para trabajar no hay ue perder nada de tiempo... y es por lo mismo que estaba buscando como enviar las consultas LIMIT a ODBC. De hecho... crear esa herramienta es mi trabajo y por eso lo preguntaba... de antemano... muchas gracias por toda tu ayuda Cluster ;D.

Atte... DarkXNightmare.

PD: Cuando termine mi Script para conectarse a ODBC y que permita hacer consultas LIMIT, lo voy a postear para que ayude a otros ;D.
__________________
Cambiando mi Web... sean pacientes :P
  #11 (permalink)  
Antiguo 08/08/2006, 16:10
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
PD: Cuando termine mi Script para conectarse a ODBC y que permita hacer consultas LIMIT, lo voy a postear para que ayude a otros ;D.

Me parece muy bien ..

Sabes, .. te recomendaría luego hacer un pequeño analisis de rendimiento a tu sistema.

Usa la versión "SQL" de paginado puro según la BBDD que te conectes (un TOP de SQL Server .. y/o para Access .. etc) y comparala con la versión "PHP" que vas a desarrollar.

Normalmente el rendimiento "SQL" (puro o lo más posible) suele dar mejores resultados que procesos PHP y sentencias SQL más simples, pero eso es mejor si pudieras que lo evalues tu mismo y saques conclusiones .. tal vez es "despreciable" la diferencia usar uno u otro método .. o no tan así.

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 22:49.