Foros del Web » Programando para Internet » PHP »

Obtener el penúltimo registro de una BBDD

Estas en el tema de Obtener el penúltimo registro de una BBDD en el foro de PHP en Foros del Web. Hola amigos, En pos de un programa "chorra" para el aprobado, me he topado con otra dificultad. Necesito sacar el penúltimo registro de una base ...
  #1 (permalink)  
Antiguo 16/06/2010, 05:35
 
Fecha de Ingreso: junio-2010
Mensajes: 25
Antigüedad: 14 años, 5 meses
Puntos: 1
Obtener el penúltimo registro de una BBDD

Hola amigos,

En pos de un programa "chorra" para el aprobado, me he topado con otra dificultad.
Necesito sacar el penúltimo registro de una base de datos, pero con 2 condiciones.
Planteo el problema:

El registro que necesito sacar va en función de un WHERE (un móvil), y la clave principal de la tabla seria COD_REGISTRO (un autonumérico). Entonces, leyendo por ahí usé esta consulta:

Código:
SELECT coord2 FROM registro_sucesos2 WHERE movil='$movil' ORDER BY cod_registro DESC LIMIT 2,1
Donde se supone que el DESC LIMIT hace que se ordene "cod_registro" descendentemente, y que seleccione la fila 2, y 1 solo registro (al menos eso entendí yo).

El problema está en que no me está dando resultados, me muestra datos que no tienen nada que ver con la consulta (por ejemplo, me muestra 1 registro más arriba del que yo quiero, o más abajo).

¿Alguien sabe como extraer el penúltimo registro de la base de datos?

Saludos.
  #2 (permalink)  
Antiguo 16/06/2010, 07:42
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 16 años, 3 meses
Puntos: 87
Respuesta: Obtener el penúltimo registro de una BBDD

si pones LIMIT 1,1 que va a sacar el penúltimo

Código:
SELECT coord2 FROM registro_sucesos2 WHERE movil='$movil' 
ORDER BY cod_registro DESC LIMIT 1,1
  #3 (permalink)  
Antiguo 16/06/2010, 14:01
 
Fecha de Ingreso: junio-2010
Mensajes: 25
Antigüedad: 14 años, 5 meses
Puntos: 1
Respuesta: Obtener el penúltimo registro de una BBDD

Cita:
Iniciado por quike88 Ver Mensaje
si pones LIMIT 1,1 que va a sacar el penúltimo

Código:
SELECT coord2 FROM registro_sucesos2 WHERE movil='$movil' 
ORDER BY cod_registro DESC LIMIT 1,1
Perdona pero no te entendí, se supone que si pongo 1,1 me va a seleccionar el último registro ¿no?

Saludos.
  #4 (permalink)  
Antiguo 16/06/2010, 18:37
Avatar de el_gustavo  
Fecha de Ingreso: mayo-2009
Mensajes: 117
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Obtener el penúltimo registro de una BBDD

SELECT coord2 FROM registro_sucesos2 WHERE movil='$movil' ORDER BY cod_registro DESC LIMIT 1 OFFSET 1

Con offset determinas a partir de que registro quieres obtener (Los registros empiezan con 0).
Por ejemplo, si quisieras obtener el cuarto:
SELECT coord2 FROM registro_sucesos2 WHERE movil='$movil' ORDER BY cod_registro DESC LIMIT 1 OFFSET 3

Quizas me equivoca, lo podes probar de todas formas.
  #5 (permalink)  
Antiguo 16/06/2010, 19:21
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 8 meses
Puntos: 10
Respuesta: Obtener el penúltimo registro de una BBDD

Asi lo podrias hacer dinamico.

Código PHP:

//contamos las filas de la tabla
$registro=mysql_query("select count(*) from TABLA");
$r=mysql_fetch_array($registro);
//$r['count(*)'] contendra el numeto de filas


$registro=mysql_query("select * from 
                                TABLA  
                                LIMIT 1 
                                OFFSET "
.($r['count(*)'] - 1)."
                      "
);


while(
$r=mysql_fetch_array($registro)){
echo 
$r['CAMPO'];
}

//el ultimo elemento menos 1 es el anteultimo elemento
//($r['count(*)'] - 1) 
  #6 (permalink)  
Antiguo 17/06/2010, 03:23
 
Fecha de Ingreso: junio-2010
Mensajes: 25
Antigüedad: 14 años, 5 meses
Puntos: 1
Respuesta: Obtener el penúltimo registro de una BBDD

Cita:
Iniciado por el_gustavo Ver Mensaje
SELECT coord2 FROM registro_sucesos2 WHERE movil='$movil' ORDER BY cod_registro DESC LIMIT 1 OFFSET 1

Con offset determinas a partir de que registro quieres obtener (Los registros empiezan con 0).
Por ejemplo, si quisieras obtener el cuarto:
SELECT coord2 FROM registro_sucesos2 WHERE movil='$movil' ORDER BY cod_registro DESC LIMIT 1 OFFSET 3

Quizas me equivoca, lo podes probar de todas formas.
Muchísimas gracias Gustavo, creo que ya me extrae justo lo que quiero.

También, gracias a todo el que se molestó en responder, ya me salvaron el culo 2 veces xD!

Saludos.

PD: si no os importa, me gustaría aprovechar el tema para solucionar la última duda que tengo.

Eso sí, aún no la he pensado del todo, pero quiero ver si me podéis echar una mano porque tampoco tengo mucha idea.

Necesito hacer un bucle IF, con una variable centinela, para averiguar cuántos registros con un WHILE tengo dentro de la base de datos. Mejor os pongo un ejemplo:

Quiero averiguar cuantos registros tengo en la base de datos cuyos móviles sean 612345678. Pero claro, en vez de 612345678, llevaría una variable que contenga el móvil que yo quiera ('$movil').

Sin más, un saludo, y si podéis ayudarme, mejor :).

Última edición por nightmarex; 17/06/2010 a las 03:32
  #7 (permalink)  
Antiguo 17/06/2010, 03:36
 
Fecha de Ingreso: marzo-2010
Ubicación: Barcelona
Mensajes: 657
Antigüedad: 14 años, 8 meses
Puntos: 26
Respuesta: Obtener el penúltimo registro de una BBDD

Podrias hacer una consulta que directamente te mostrase cuantos mobiles hay:

SELECT count(*) FROM registro_sucesos2 WHERE movil='$movil'.

Prueba y dices algo.
  #8 (permalink)  
Antiguo 17/06/2010, 03:43
 
Fecha de Ingreso: junio-2010
Mensajes: 25
Antigüedad: 14 años, 5 meses
Puntos: 1
Respuesta: Obtener el penúltimo registro de una BBDD

Cita:
Iniciado por Vallu Ver Mensaje
Podrias hacer una consulta que directamente te mostrase cuantos mobiles hay:

SELECT count(*) FROM registro_sucesos2 WHERE movil='$movil'.

Prueba y dices algo.
No, no es eso. Necesito saber cuantos REGISTROS hay con determinado MOVIL xD, el número de móviles diferentes que haya no me importa :P.

Saludos.
  #9 (permalink)  
Antiguo 17/06/2010, 03:49
 
Fecha de Ingreso: marzo-2010
Ubicación: Barcelona
Mensajes: 657
Antigüedad: 14 años, 8 meses
Puntos: 26
Respuesta: Obtener el penúltimo registro de una BBDD

Lo que te he puesto devuelve el numero de móviles con numero $movil. No te he puesto nada de móviles diferentes. =O
  #10 (permalink)  
Antiguo 17/06/2010, 03:50
 
Fecha de Ingreso: junio-2010
Mensajes: 25
Antigüedad: 14 años, 5 meses
Puntos: 1
Respuesta: Obtener el penúltimo registro de una BBDD

Cita:
Iniciado por Vallu Ver Mensaje
Lo que te he puesto devuelve el numero de móviles con numero $movil. No te he puesto nada de móviles diferentes. =O
Ah perdona, lo interpreté mal xD, voy a probarlo ahora mismo :).

Saludos.
  #11 (permalink)  
Antiguo 17/06/2010, 03:53
 
Fecha de Ingreso: marzo-2010
Ubicación: Barcelona
Mensajes: 657
Antigüedad: 14 años, 8 meses
Puntos: 26
Respuesta: Obtener el penúltimo registro de una BBDD

Nada hombre, todo el mundo tenemos deslizes. En que mundo mas aburrido estaríamos si no pasaran!
  #12 (permalink)  
Antiguo 17/06/2010, 03:57
 
Fecha de Ingreso: junio-2010
Mensajes: 25
Antigüedad: 14 años, 5 meses
Puntos: 1
Respuesta: Obtener el penúltimo registro de una BBDD

Mira, esto es lo que hice:

Código:
	$pruebamoviles='SELECT count(*) FROM registro_sucesos2 WHERE movil='$movil'.';
	$ejecucion=mysql_query($pruebamoviles,$conexion);
	
	while ($registro5 = mysql_fetch_array($ejecucion)) 
	{ 
    $moviles=$registro5; 
	}
Hice las consultas y las ejecuté con un QUERY, después las extraje en un ARRAY y las metí en variables ($moviles), el problema está en que me extrae todos los datos, yo lo que quiero es un número concreto que me diga "Hay 2/3/4/5 registros con el móvil 612345678".

Saludos.
  #13 (permalink)  
Antiguo 17/06/2010, 04:01
 
Fecha de Ingreso: marzo-2010
Ubicación: Barcelona
Mensajes: 657
Antigüedad: 14 años, 8 meses
Puntos: 26
Respuesta: Obtener el penúltimo registro de una BBDD

Ese resultadolongitud2 no se de donde viene. Ademas vigila que el punto de la sentencia que puse fue para marcar final de la oracion no tiene nada que ver con sql. xDDD

Código PHP:
$pruebamoviles='SELECT count(*) FROM registro_sucesos2 WHERE movil='$movil;
    
$ejecucion=mysql_query($pruebamoviles,$conexion);
    
    while (
$registro5 mysql_fetch_array($ejecucion)) 
    { 
    
$moviles=$registro5
    } 
  #14 (permalink)  
Antiguo 17/06/2010, 04:07
 
Fecha de Ingreso: junio-2010
Mensajes: 25
Antigüedad: 14 años, 5 meses
Puntos: 1
Respuesta: Obtener el penúltimo registro de una BBDD

Cita:
Iniciado por Vallu Ver Mensaje
Ese resultadolongitud2 no se de donde viene. Ademas vigila que el punto de la sentencia que puse fue para marcar final de la oracion no tiene nada que ver con sql. xDDD

Código PHP:
$pruebamoviles='SELECT count(*) FROM registro_sucesos2 WHERE movil='$movil;
    
$ejecucion=mysql_query($pruebamoviles,$conexion);
    
    while (
$registro5 mysql_fetch_array($ejecucion)) 
    { 
    
$moviles=$registro5
    } 
Ups se me escapó el punto, y lo del resultadolongitud2, es que copié el bucle de otro que tengo hecho xD, se me olvidó cambiarlo. Pero aún así, sigo sin poder extraer el número de registros (un número concreto, no los datos de cada registro).

Saludos.
  #15 (permalink)  
Antiguo 17/06/2010, 04:10
 
Fecha de Ingreso: marzo-2010
Ubicación: Barcelona
Mensajes: 657
Antigüedad: 14 años, 8 meses
Puntos: 26
Respuesta: Obtener el penúltimo registro de una BBDD

Código PHP:
$pruebamoviles='SELECT count(*) as total FROM registro_sucesos2 WHERE movil='$movil;
    
$ejecucion=mysql_query($pruebamoviles,$conexion);
    
    while (
$registro5 mysql_fetch_array($ejecucion)) 
    { 
    
$moviles=$registro5['total']; 
    } 
  #16 (permalink)  
Antiguo 17/06/2010, 05:59
 
Fecha de Ingreso: junio-2010
Mensajes: 25
Antigüedad: 14 años, 5 meses
Puntos: 1
Respuesta: Obtener el penúltimo registro de una BBDD

Hola,

Lo siento, pero no logré entender esta linea de código:

Código:
$moviles=$registro5['total'];
¿Lo de total es una función predefinida o algo? Es que igualmente no me devuelve nada.

Saludos.
  #17 (permalink)  
Antiguo 17/06/2010, 06:03
 
Fecha de Ingreso: marzo-2010
Ubicación: Barcelona
Mensajes: 657
Antigüedad: 14 años, 8 meses
Puntos: 26
Respuesta: Obtener el penúltimo registro de una BBDD

Ves en sql donde pone count(*) as total? eso es un apodo para la columna.
Al hacer el mysql_fetch_array() lo que te devuelve como campos son los nombres de las columnas. Es más comodo llamar a una columna del como $row['total'] que del modo $row['count(*)'], no crees?

No te devuelve nada??
  #18 (permalink)  
Antiguo 17/06/2010, 06:40
 
Fecha de Ingreso: junio-2010
Mensajes: 25
Antigüedad: 14 años, 5 meses
Puntos: 1
Respuesta: Obtener el penúltimo registro de una BBDD

Ahí logré entender qué querías hacer. Pero el problema está en que este error sigue saliendo:

Código:
Warning: mysql_query(): 6 is not a valid MySQL-Link resource in C:\xampp\htdocs\garbancito\interfaz_4.php on line 154
Entre otros.

Saludos y gracias por la ayuda que me estáis ofreciendo :).

Etiquetas: bbdd, registro
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 12:58.