Foros del Web » Programando para Internet » PHP »

Paginador para busqueda en múltiples tablas

Estas en el tema de Paginador para busqueda en múltiples tablas en el foro de PHP en Foros del Web. Hola a todos, Estoy haciendo un buscador dinámico a partir de multiples tablas en una BD. Todos los paginadores que he visto y he hecho ...
  #1 (permalink)  
Antiguo 04/07/2006, 06:10
 
Fecha de Ingreso: abril-2006
Mensajes: 131
Antigüedad: 11 años, 8 meses
Puntos: 1
Paginador para busqueda en múltiples tablas

Hola a todos,

Estoy haciendo un buscador dinámico a partir de multiples tablas en una BD. Todos los paginadores que he visto y he hecho hasta ahora siempre han sido sobre una única tabla (la tabla sobre la que se hace la búsqueda).

Pero en este momento necesito un paginador para una consulta donde intervienen múltiples tablas. Tengo algunas ideas, pero no muy claras. A ver si es posible que me ayuden en este asunto y aportar alguna idea para empezar en el tema.

Gracias a todos,

Un saludo.
  #2 (permalink)  
Antiguo 04/07/2006, 06:24
 
Fecha de Ingreso: abril-2006
Mensajes: 131
Antigüedad: 11 años, 8 meses
Puntos: 1
paginador de busqueda multiple

No puedo hacer una paginación individual para cada tabla de la BD. Sino que, debo paginar las tuplas resultantes de hacer la búsqueda en todas las tablas de la BD.

Había pensado en insertar en una tabla auxiliar, el id, nombre y link de cada tupla del resultado. Y a partir de ahi, pues aplicar un paginador convencional a la tabla auxiliar. Pero no sé si tiene mucho sentido hacerlo así y tampoco si es rentable.

A ver si me pueden ayudar.

Un saludo.
  #3 (permalink)  
Antiguo 04/07/2006, 14:08
 
Fecha de Ingreso: abril-2006
Mensajes: 131
Antigüedad: 11 años, 8 meses
Puntos: 1
nadie me puede ayudar??

Acepto alguna idea sugerente .... jeje

Gracias
  #4 (permalink)  
Antiguo 04/07/2006, 14:35
 
Fecha de Ingreso: julio-2006
Mensajes: 45
Antigüedad: 11 años, 5 meses
Puntos: 0
por ejemplo tenemos:

table1:
field1 - id
field1 - textsearch
table2:
field1 - id_table1
field2 - textsearch

No se que estructura tienes a tu mysql database ...
entonses

SELECT t1.textsearch as searchedtext1,
t2.textsearch as searchedtext2
FROM table1 as t1
LEFT JOIN table2 as t2 ON t1.id = t2.id_table1
WHERE t1.textsearch LIKE '%$text%'...........

LIMIT x,y

Última edición por exist; 04/07/2006 a las 15:07
  #5 (permalink)  
Antiguo 05/07/2006, 01:11
 
Fecha de Ingreso: abril-2006
Mensajes: 131
Antigüedad: 11 años, 8 meses
Puntos: 1
Buena idea

Gracias exist,

Esta posibilidad es una idea que habia pensado. Pero el problema es que la aplicación sobre la que estoy trabajando, digamos que tiene una BD sin apenas claves ajenas (ese trabajo ya venia hecho cuando yo llegué, sin juzgar si es correcto o no). Entonces, tampoco puedo ir cambiando mucho la estructura de la BD.

A parte de la opción que indiqué en el post anterior no se me ocurre mucho más sin tener que modificar a fondo la BD.

A ver si alguien tiene alguna alternativa que no sea muy costosa.

Gracias de nuevo!!!
  #6 (permalink)  
Antiguo 05/07/2006, 08:13
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Deberías exponer el modelo de datos que trabajas .. sobre todo cuando haces mención a que tiene muchos "detallitos" sobre el diseño de esta ..

Así te aconsejaran la mejor consulta SQL para tal fin .. una vez tengas tus datos (todos) obtenidos .. ahí podrías usar scripts de paginado genéricos como:

Paginator (de Jpinedo)
http://jpinedo.webcindario.com/scripts/paginator/

Para un sistema de paginado como el que te comento .. lo "único" que tienes que tener claro es tu sentencia SQL que te tome los registros de las N tablas implicadas a base de las relaciones entre ellas. Si bien los ejemplos suelen aplicarse por "sencillez" a una sóla tabla .. te puedo asegurar que si tu compones tu sentencia SQL compleja (donde intervengan N tablas relacionadas) y obtienes tu resultado (total) esperado .. usar scripts como "Paginator" este ya se encarga de añadir a tu sentencia SQL el "LIMIT" como corresponda y gestionar la generación de los links para el paginado.

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 06:46.