Foros del Web » Programando para Internet » PHP »

problema: busqueda y registros recientes

Estas en el tema de problema: busqueda y registros recientes en el foro de PHP en Foros del Web. Esta es una duda general, pero la consulto aca porque la estoy implementando en PHP. Se me acaba de ocurrir: - Supongamos que tengo un ...
  #1 (permalink)  
Antiguo 12/11/2002, 23:49
 
Fecha de Ingreso: junio-2002
Ubicación: Buenos Aires, Argentina
Mensajes: 876
Antigüedad: 15 años, 6 meses
Puntos: 0
problema: busqueda y registros recientes

Esta es una duda general, pero la consulto aca porque la estoy implementando en PHP.
Se me acaba de ocurrir:
- Supongamos que tengo un buscador de registros.
- Estamos por la mitad de la busqueda, en base al total calculado.
- Se insertan nuevos registros que segun el criterio de busqueda van antes de los que estamos consultando actualmente.
- Entonces, en la proxima busqueda podrian aparecer registros ya consultados verdad? O por lo menos eso me pasaria a mi que uso LIMIT (a,cant).

Una solucion que se me ocurre es guardar durante toda la busqueda el horario de la primer consulta. Luego agregar un campo a la bd que tenga la fecha de creacion del registro. Y en la SQL buscar siempre registros de fecha de creacion menor a la actual, que es propagada durante toda la busqueda

Pero como solucionan ustedes este problema?
  #2 (permalink)  
Antiguo 13/11/2002, 02:15
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 15 años, 11 meses
Puntos: 17
Yo no lo soluciono, creo que si el usuario se da cuenta que se repiten registros deduce que cuando acabe tiene que volver a empezar porque hay registros nuevos.
__________________
M a l d i t o F r i k i
  #3 (permalink)  
Antiguo 13/11/2002, 11:55
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
mm Suponemos q hablas de Mysql?

Bueno .. Mysql tiene funciones para "bloquear" una tabla y q durante ese instante no se pueda alterar .. Pero en tu caso no le veo utilidad . .mas bien se usa a la hora de modificar un registro en el que se bloquea la tabla (Mysql 3.x no soporta bloqueo de registros) para q dos o mas usuarios no estén actuando sobre el mismo registro/tabla ...

Si por un lado entran registros .. y por otro se hace consultas a la BD .. tendras q dejarlo así .. No puedes bloquear la tabla cuando se hacen consultas (no deberias).

La consulta la realizas en SQL y se procesa en ese instante con el total a presentar de registros ..

Si tu antes de esa consulta has realizado un por jemplo COUNT(*) para contar los registros para usarlo en tus rutinas de paginacion por ejemplo .. Podria ser q en la primera página (ejecución) te diese esas "ambigüedades" en la consulta .. pero si el Usuario pasa de página .. suponemos q calcularas el total otra vez de registros y recalcularas páginas? .. o te guardas el total de registros en alguna parte para usarlo en todas las páginas q se calculen para esa consulta? .. Yo siempre calculo el total de la consulta para hacer esos reajustes; osese, ejecuto la rutina de generación de paginación ...

Un saludo,
  #4 (permalink)  
Antiguo 13/11/2002, 14:59
 
Fecha de Ingreso: junio-2002
Ubicación: Buenos Aires, Argentina
Mensajes: 876
Antigüedad: 15 años, 6 meses
Puntos: 0
Si Cluster, yo venia calculando el total una sola vez, porque no le veo la mejora al problema si lo hago siempre. O sea, si en la primer pagina tengo como total 50 registros, y muestro 10 por pagina, al pasar a la siguiente, si el total fuese de 60, y segun los criterios de busqueda los nuevos se acomodaran antes de los 10 ya vistos, volveria a ver los 10 de la primera pagina, ya que estaria usando LIMIT 10,10.
Se entiende lo que digo? me parece que no queda otra que hacer como digo.
Talvez sea una tonteria, pero estoy haciendo a mi sitio "a prueba de tontos". No espero que ante ese problema el usuario diga "ah claro, se deben haber agrefado registros mientras yo buscaba", lo que espero (que ya me ha pasado) es que el usuario diga "otra vez los mismos? esto anda mal".
  #5 (permalink)  
Antiguo 13/11/2002, 15:05
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Ok, .. cuando tengas algo claro .. te pasas por aquí y nos explicas la solución final q le distes así tomaremos nota.

Un saludo,
  #6 (permalink)  
Antiguo 13/11/2002, 15:20
 
Fecha de Ingreso: junio-2002
Ubicación: Buenos Aires, Argentina
Mensajes: 876
Antigüedad: 15 años, 6 meses
Puntos: 0
Bueno, voy a implementar lo que habia comentado antes, me parece que es la unica forma de hacerlo. Por si a alguien le interesa, la solucion es esta:
- se agrega un campo "fechadealta" en la bd con la fecha y hora de creacion (o alta) del registro.
- El total ya no es necesario calcularlo siempre, basta con hacerlo la primera vez y luego propagarlo.
- en la primer busqueda, se guarda la fecha y hora actual y se propaga al igual que el total, ya sea por url o por post.
- en la SQL le agrego WHERE fechadealta<$fecha.

De esa manera la busqueda siempre contendra resultados de registros con fecha de creacion siempre menor a la fecha en que se comenzo la busqueda. Para ver los nuevos registros agregados habra que volver a buscar desde cero para usar otra fecha actual en la sql.

Si alguien conoce algo mejor, escucho atento.
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 04:47.