Foros del Web » Programando para Internet » PHP »

Obtener el registro mas reciente

Estas en el tema de Obtener el registro mas reciente en el foro de PHP en Foros del Web. Hola!! tengo un pequeño problema, espero que me puedan ayudar. Necesito obtener el registro mas reciente que se haya puesto en una tabla de mysql ...
  #1 (permalink)  
Antiguo 09/09/2006, 18:51
Avatar de dplweb  
Fecha de Ingreso: enero-2002
Mensajes: 74
Antigüedad: 22 años, 4 meses
Puntos: 0
Obtener el registro mas reciente

Hola!!

tengo un pequeño problema, espero que me puedan ayudar.
Necesito obtener el registro mas reciente que se haya puesto en una tabla de mysql

Tengo un ciclo while para extraer todas las filas y listar los datos, mediante una orden SELECT.
No encuentro la forma de obtener el campo id (autonumerico) del ultimo registro que se ingresó en la tabla.

Se trata de una lista de datos de un boletin electrónico, entonces yo quiero que al cargar la pagina se lance el ultimo boletin publicado (cuyos datos estan en la tabla de la BD).

No se si me di a entender bien.

Muchas gracias de antemano y saludos.
__________________
...webmastereando por la vida...
  #2 (permalink)  
Antiguo 09/09/2006, 18:58
 
Fecha de Ingreso: agosto-2006
Mensajes: 121
Antigüedad: 17 años, 9 meses
Puntos: 0
Si el id es un autonumérico no deberías tener problema. Basta con que hagas un select del autonumérico más grande, y ése seguro que es el Id del último registro

select max(id) from tabla

Luego coges los campos que quieras teniendo el id...
  #3 (permalink)  
Antiguo 10/09/2006, 13:29
Avatar de dplweb  
Fecha de Ingreso: enero-2002
Mensajes: 74
Antigüedad: 22 años, 4 meses
Puntos: 0
Hola

Muchas gracias. Parece que tendre que aprender a manejar mejor las sentencias MySQL para resolver algunos problemas.
Saludos.
__________________
...webmastereando por la vida...
  #4 (permalink)  
Antiguo 10/09/2006, 15:05
Avatar de pato_volador  
Fecha de Ingreso: octubre-2005
Ubicación: Planeta tierra
Mensajes: 254
Antigüedad: 18 años, 6 meses
Puntos: 0
no se si sea lo que andas buscando pero alguna vez tuve algo similar, te paso el link, a ver si te sirve.
saludos.

http://www.forosdelweb.com/f18/devolver-id-generado-momento-insertar-registro-399097/
__________________
De todas las cosas que queria ser... :-D acabe siendo un pato volador... :risa:
http://patovolador.wordpress.com
  #5 (permalink)  
Antiguo 10/09/2006, 19:29
Avatar de dplweb  
Fecha de Ingreso: enero-2002
Mensajes: 74
Antigüedad: 22 años, 4 meses
Puntos: 0
Hola
Gracias "pato_volador", pero esa funcion ya la conozco y no es lo que me aqueja.

"GikaJavi":
Estuve intentando con tu sugerencia, pero no me resulta.
Si hago:
Código PHP:
$S_ultimo "SELECT max(id) FROM boletin";
$R_ultimo mysql_query($S_ultimo$conexion) or die(mysql_error());
$filas_ultimo mysql_num_rows($R_ultimo); 
el valor de $filas_ultimo es 1, o sea obtengo una fila, pero al hacer:
Código PHP:
if ($filas_ultimo == 1) {
  
$ultimo mysql_fetch_array($R_ultimo);
  print 
$ultimo[edicion_mes];

No me devuelve nada, o sea, no extrae ningún dato.
¿Qué hice mal?
$ultimo[edicion_mes] deberia devolver en este momento 8 (agosto)

Gracias.
__________________
...webmastereando por la vida...
  #6 (permalink)  
Antiguo 10/09/2006, 20:03
Avatar de dplweb  
Fecha de Ingreso: enero-2002
Mensajes: 74
Antigüedad: 22 años, 4 meses
Puntos: 0
Sonrisa

Hola!!!!
Encontré una solución en:
http://lists.evolt.org/archive/Week-...30/123933.html

Aunque ahi dice que no funcionariaen MySQL pero a mi me resultan ambas opciones que entrega.
Dice que no resultaría por que mysql no soporta "subqueries". O dependerá de la versión?
¿Cuál de las será mejor en cuanto a rendimiento?
Por ahi lei que max() es lento cuando hay muchos registros (miles de ellos) pero aqui solo tengo menos de 30 por el momento.
Al parecer ordenar en forma descendente y limitar a 1 seria lo mas simple ¿o no?

Saludos
__________________
...webmastereando por la vida...
  #7 (permalink)  
Antiguo 11/09/2006, 15:52
 
Fecha de Ingreso: agosto-2006
Mensajes: 121
Antigüedad: 17 años, 9 meses
Puntos: 0
Ambas son formas de obtener el último valor de un id incremental. Desconocía que la técnica del order by descendente fuera mejor que el max(). Lo de que MySQL no soporta subconsultas es sólo cierto para versiones anteriores a la 4 (y van por la 5 y pico).

El ejemplo que te ponía al principio te ha fallado porque utilizas una sola consulta. Lo que obtenías en esa consulta es el número del último id insertado en la tabla, que es por lo que preguntabas al principio. Luego necesitas otra consulta, que puedes hacer directamente con SQL o usar PHP si usas MySQL < 4.x. Aunque sabiendo que con order by y limit es más rápido, casi me decantaría por esta última opción.

saludos
  #8 (permalink)  
Antiguo 11/09/2006, 15:58
 
Fecha de Ingreso: agosto-2006
Mensajes: 121
Antigüedad: 17 años, 9 meses
Puntos: 0
Acabo de probarlo en una tabla con miles de filas y efectivamente la opción del order by con limit 1 es signficativamente más rápida. Así que me lo apunto.
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.