Foros del Web » Programando para Internet » PHP »

paginacion, odbc access, funcion limit

Estas en el tema de paginacion, odbc access, funcion limit en el foro de PHP en Foros del Web. hola gente si, yo denuevo, disculpen tengo un problema, estoy tratando de paginar el resultado de una consulta a una db en access el problema ...
  #1 (permalink)  
Antiguo 21/08/2006, 16:23
 
Fecha de Ingreso: agosto-2006
Mensajes: 22
Antigüedad: 17 años, 8 meses
Puntos: 0
paginacion, odbc access, funcion limit

hola gente
si, yo denuevo, disculpen

tengo un problema, estoy tratando
de paginar el resultado de una consulta
a una db en access

el problema que tengo es que todos
los metodos que encontre para paginar
la mayoria para db mysql

usan la funcion limit, que creo que access
no la acepta porque me tira error de que la
sintaxis es incorrecta


si alguien sabe alguna otra forma para paginar
el resultado de una db access sin necesitar de
la funcion limit


o

si alguien sabe como se debe usar la funcion limit correctamente
para que funciones


agradeceria su ayuda

gracias

------------------------------------------------------------------------
PD: para lo que no recuerdan la sintaxis de la funcion limit
es la siguiente

SELECT * FROM users LIMIT 10,50

osea, solo va a devolver las filas de la posicion 10
hasta el 50
  #2 (permalink)  
Antiguo 21/08/2006, 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
Desgraciadamente Access no soporta Limit :(

Tienes que hacer algo mas complejo como:
Código:
SELECT  * FROM (
     SELECT TOP 10 * FROM (
           SELECT TOP 50 * FROM users
     )
)
  #3 (permalink)  
Antiguo 21/08/2006, 16:57
 
Fecha de Ingreso: agosto-2006
Mensajes: 22
Antigüedad: 17 años, 8 meses
Puntos: 0
T_T

bueno, abra que pensar un poco mas
gracias

PD: me dijeron tambien que pruebe aplicando
pear, existe una funcion que se llama limitquery()
que hace lo mismo
lo intente, pero la verdad que era chino basico asi
que no segui
  #4 (permalink)  
Antiguo 21/08/2006, 17:39
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Deberías implementar la solución SQL (con subconsultas y el "top") que te propone GatorV

De todas formas tienes una implementación en PHP a base de consultas SQL ejecutadas en:
http://www.forosdelweb.com/showpost....33&postcount=4

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 22/08/2006, 20:34
 
Fecha de Ingreso: agosto-2006
Mensajes: 22
Antigüedad: 17 años, 8 meses
Puntos: 0
la verdad que estuve pensando mucho
y lo mas facil y rapido que se me ocurrio
es agregar un autonumerico en la tabla
entonces puede hacer una consulta
donde uso el between

todo bien

el problema es si quiero darle algun criterio
de ordenamiento que no sea el autonumerico
por ejemplo orden alfabetico por nombre,
se va a paginar, pero no se va a mostrar
en orden alfabetico

voy a ver el enlace que me dejaste a ver como
hace, espero que funcione

gracias
  #6 (permalink)  
Antiguo 23/08/2006, 03:42
 
Fecha de Ingreso: agosto-2006
Mensajes: 26
Antigüedad: 17 años, 8 meses
Puntos: 0
Ayuda

hola ya se que no va referido a este tema pero como estas haciendo consultas con access pues haber si me puedes ayudar.
mi problema es que estoy haciendo una consulta a una base de datos en access, los campos a mostrar son los de una tabla personal que tengo todos los datos de los usuarios y también un numero de ID.

BUENO pues yo en mi pagina quisiera hacer una lista con el campo ID y que al seleccionar la ID que quiero me muestre todo los datos de ese campo.
por ahora tengo ya el campo que donde residen todas las ID de los usuarios pero el problema esta en que me muestre todos los datos de esa ID.
ESTE ES EL CODIGO:

<select name="ID"><option value="<?php
include_once("c:\adodb\adodb.inc.php");
$connexio = NewADOConnection("access");
$dsn = "Driver={Microsoft Access Driver (*.mdb)};Dbq=c:\RRHHprg.mdb;";
$sql ='select ID from Personal';
$connexio->Connect($dsn) or die ("No s'ha pogut connectar amb la BD");
$rs = $connexio->Execute($sql);
print $rs->fields['ID'].' '.$rs->fields['1'].'<BR>';
print $rs->GetMenu('ID',$rs,false);
?>"></option>
</select>

Aqui me muestra el la lista de ID que tengo para cada usuario y quisiera elegir un numero de dicha lista y que me muestre todos los datos del usuario incluyendo la ID.

Gracias de antemano,
  #7 (permalink)  
Antiguo 23/08/2006, 06:02
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por mistrafi Ver Mensaje
hola ya se que no va referido a este tema pero como estas haciendo consultas con access pues haber si me puedes ayudar.
mi problema es que estoy haciendo una consulta a una base de datos en access, los campos a mostrar son los de una tabla personal que tengo todos los datos de los usuarios y también un numero de ID.

BUENO pues yo en mi pagina quisiera hacer una lista con el campo ID y que al seleccionar la ID que quiero me muestre todo los datos de ese campo.
por ahora tengo ya el campo que donde residen todas las ID de los usuarios pero el problema esta en que me muestre todos los datos de esa ID.
ESTE ES EL CODIGO:

<select name="ID"><option value="<?php
include_once("c:\adodb\adodb.inc.php");
$connexio = NewADOConnection("access");
$dsn = "Driver={Microsoft Access Driver (*.mdb)};Dbq=c:\RRHHprg.mdb;";
$sql ='select ID from Personal';
$connexio->Connect($dsn) or die ("No s'ha pogut connectar amb la BD");
$rs = $connexio->Execute($sql);
print $rs->fields['ID'].' '.$rs->fields['1'].'<BR>';
print $rs->GetMenu('ID',$rs,false);
?>"></option>
</select>

Aqui me muestra el la lista de ID que tengo para cada usuario y quisiera elegir un numero de dicha lista y que me muestre todos los datos del usuario incluyendo la ID.

Gracias de antemano,
Realiza tu pregunta en un tema nuevo por favor.

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 24/08/2006, 00:56
 
Fecha de Ingreso: agosto-2006
Mensajes: 26
Antigüedad: 17 años, 8 meses
Puntos: 0
lo siento asi lo hare
  #9 (permalink)  
Antiguo 06/09/2006, 01:45
 
Fecha de Ingreso: enero-2004
Mensajes: 15
Antigüedad: 20 años, 3 meses
Puntos: 1
Hola mlegui21,

He probado la SQL que paso GatorV. Realmente no te sirve de gran ayuda, ya que, recoges los 10 primeros registro de la consulta que haces de los 50 primeros.

Código:
SELECT  * FROM (
     SELECT TOP 10 * FROM (
           SELECT TOP 50 * FROM users
     )
)
Si utilizas este código podrás paginar todo lo que quieras, con MS Access, claro está.

Código:
     SELECT TOP $NUMERO_REGISTROS_A_MOSTRAR * $FROM NOMBRE_TABLA WHERE $CAMPO_PK id not in (
           SELECT TOP $REGISTRO_INICIAL $CAMPO_PK FROM animales
     )


Para sacar $REGISTRO_INICIAL tienes que hacer los siguiente:
1. Dividir count(*) entre $NUMERO_REGISTROS_A_MOSTRAR, esto te dará el numero de paginas que tendrá tu consulta.
2. Para hacer la paginación solo tienes que enviar el numero de pagina al que quieres acceder y multiplicarlo por $NUMERO_REGISTROS_A_MOSTRAR.

Con este proceso obtendrás $REGISTRO_INICIAL.

Ejemplo:
count(*) = 200
$NUMERO_REGISTROS_A_MOSTRAR = 10
$NUMERO_PAGINAS = count(*) / $NUMERO_REGISTROS_A_MOSTRAR => 20
$PAGINA_ACTUAL = 12
$REGISTRO_INICIAL = $PAGINA_ACTUAL * $NUMERO_PAGINAS => 120

Ejemplo:

SELECT TOP 10 * FROM animales WHERE id not in (
SELECT TOP 120 id FROM animales
)


De esta forma excluyes los 120 registros iniciales ya visitados y recoges los 10 siguientes que todavía están por visitar.
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 16:51.