Foros del Web » Programando para Internet » PHP »

Borrar en vez de paginar

Estas en el tema de Borrar en vez de paginar en el foro de PHP en Foros del Web. Me gustaría que intentaran decirme si saben, para que en vez de paginar me borre los últimos mensajes: He puesto para que me no me ...
  #1 (permalink)  
Antiguo 27/04/2013, 12:54
Avatar de iEnrique  
Fecha de Ingreso: abril-2013
Ubicación: España
Mensajes: 346
Antigüedad: 11 años
Puntos: 5
Busqueda Borrar en vez de paginar

Me gustaría que intentaran decirme si saben, para que en vez de paginar me borre los últimos mensajes:

He puesto para que me no me aparezcan esos mensajes, pero se siguen alojando en MySql... ¿sabrían solucionarlo?
Código PHP:
<?php
    $conexion
=mysql_connect("127.0.0.1""root""") or die("Problemas en la conexión"); 
 
   
mysql_select_db("usuarios"$conexion); 
 
   
$registros=mysql_query("SELECT usuario, mensaje FROM chat ORDER BY codigo DESC limit $inicio,10"$conexion) or die("Problemas en la selección: ".mysql_error()); 
$impresos 0;
   while (
$reg=mysql_fetch_array($registros)){ 
      
$impresos++;
      echo 
'<div id="divchat" style="margin-top:10px;margin-bottom:2px;">'
      echo 
'<b><a class="text_capital" style="font-size:22px;color:white;">'.$reg['usuario']."</a></b><br/>";
      echo 
'<a style="color:white;">'.$reg['mensaje']; 
      echo 
"</a></div>"
   } 
if (
$impresos==10)
{
}
else{}
?>
Muchísimas gracias...
  #2 (permalink)  
Antiguo 27/04/2013, 13:34
Avatar de xXn
xXn
 
Fecha de Ingreso: abril-2013
Ubicación: Buenos Aires
Mensajes: 41
Antigüedad: 11 años
Puntos: 2
Respuesta: Borrar en vez de paginar

No se, pero lo que se me ocurre es cambiar el limit.

$inicio += 5
$inicio2 += 5

Cada vez que se ejecuta el select cambiaria el limit, va, no se me ocurre otra cosa, soy nuevo en esto
  #3 (permalink)  
Antiguo 27/04/2013, 20:45
 
Fecha de Ingreso: enero-2010
Mensajes: 127
Antigüedad: 14 años, 3 meses
Puntos: 2
Respuesta: Borrar en vez de paginar

Amigo tienes que explicarte mejor, no se te entiende, los ultimos mensajes? fijate que ahi nos estas indicando que se muestre hasta el registro 10.
  #4 (permalink)  
Antiguo 28/04/2013, 09:41
Avatar de iEnrique  
Fecha de Ingreso: abril-2013
Ubicación: España
Mensajes: 346
Antigüedad: 11 años
Puntos: 5
Respuesta: Borrar en vez de paginar

Lo que quiero decir es que tengo una paginación en un chat, pero no quiero que se me creen más páginas, ni que se me queden los mensajes en el servidor, tan solo los últimos 5 mensajes y que salgan solo los últimos cinco mensajes.

Como remedio, he hecho que no aparezca por ningún lado el link a la paginación pero lo que quiero es que se vayan borrando a partir de los los antiguos, ejemplo.

Mensaje 1: Hola - Hace 1 hora.

Y ahora publican cuatro personas más:

Mensaje 5: Bienn! qué tal las vacaciones? - Hace 52 min.
Mensaje 4: Bieen! y tu? - Hace 54 min.
Mensaje 3: como estás? - Hace 57 min.
Mensaje 2: Holaaa! - Hace 59 min.
Mensaje 1: Hola - Hace 1 hora.

El siguiente mensaje será el numero 6, pero para que no me ocupe mucho y no aparezcan más lo que me gustaría es que el "mensaje 1" se borrara completamente tanto del servidor Mysql como de la web por lo que quedaría tal que así:

Mensaje 6: Me encantaron! Hacía mucho sol - Hace 49 min.
Mensaje 5: Bienn! qué tal las vacaciones? - Hace 52 min.
Mensaje 4: Bieen! y tu? - Hace 54 min.
Mensaje 3: como estás? - Hace 57 min.
Mensaje 2: Holaaa! - Hace 59 min.
  #5 (permalink)  
Antiguo 28/04/2013, 10:36
Avatar de xXn
xXn
 
Fecha de Ingreso: abril-2013
Ubicación: Buenos Aires
Mensajes: 41
Antigüedad: 11 años
Puntos: 2
Respuesta: Borrar en vez de paginar

Order by codigo DESC LIMIT 5

te van a aparecer siempre los 5 ultimos.
  #6 (permalink)  
Antiguo 28/04/2013, 11:31
Avatar de patilanz  
Fecha de Ingreso: enero-2012
Mensajes: 880
Antigüedad: 12 años, 3 meses
Puntos: 29
Respuesta: Borrar en vez de paginar

Cita:
Iniciado por xXn Ver Mensaje
Order by codigo DESC LIMIT 5

te van a aparecer siempre los 5 ultimos.
El quiere que se borren y no simplemente que aparezcan los últimos 5.

Lo que se me ocurrio es que puedes primero seleccionar los últimos cinco, luego borrar todos los mensajes y al final volver a insertar los últimos cinco que seleccionaste y que tendrías en una variable.
  #7 (permalink)  
Antiguo 28/04/2013, 13:49
Avatar de iEnrique  
Fecha de Ingreso: abril-2013
Ubicación: España
Mensajes: 346
Antigüedad: 11 años
Puntos: 5
Respuesta: Borrar en vez de paginar

Muchas gracias a los dos, pero como dice Parilanz lo que quiero es poner que los empieze a borrar también esos que se van, ¿podéis explicármelo mejor alguna forma?
  #8 (permalink)  
Antiguo 29/04/2013, 08:47
Avatar de iEnrique  
Fecha de Ingreso: abril-2013
Ubicación: España
Mensajes: 346
Antigüedad: 11 años
Puntos: 5
Respuesta: Borrar en vez de paginar

Siento el doble post, ¿nadie sabe? :S
  #9 (permalink)  
Antiguo 29/04/2013, 09:00
 
Fecha de Ingreso: abril-2013
Mensajes: 34
Antigüedad: 11 años
Puntos: 3
Respuesta: Borrar en vez de paginar

los id que tienes son autoincrementables?
si es asi, puedes hacer cuando insertes el ultimo mensaje, automaticamente elimines el mensaje con menor id que se encuentre en la base, la cosa es que cada vez que ingreses un nuevo mensaje, se elimine tambien el mensaje mas antiguo que se encuentre.
  #10 (permalink)  
Antiguo 29/04/2013, 09:20
Avatar de iEnrique  
Fecha de Ingreso: abril-2013
Ubicación: España
Mensajes: 346
Antigüedad: 11 años
Puntos: 5
Respuesta: Borrar en vez de paginar

¿Y qué sería lo que tendría que poner para hacer eso?; ¿un if? y con qué condiciones, con que me digais eso ya sé yo lo que tengo que hacer...

Muchísimas gracias :)
  #11 (permalink)  
Antiguo 29/04/2013, 09:41
 
Fecha de Ingreso: abril-2013
Mensajes: 34
Antigüedad: 11 años
Puntos: 3
Respuesta: Borrar en vez de paginar

$sql = "INSERT INTO TABLA ..............;
DELETE FROM TABLA WHERE id=(SELECT TOP 1 id FROM TABLA ORDER BY id ASC)"

esa puede ser la consulta, primero haces el insert e inmediatamente haces el delete
  #12 (permalink)  
Antiguo 29/04/2013, 10:07
 
Fecha de Ingreso: abril-2013
Mensajes: 34
Antigüedad: 11 años
Puntos: 3
Respuesta: Borrar en vez de paginar

perdon, el delete deberia tambien contener otra condicion

DELETE FROM TABLA WHERE id=(SELECT TOP 1 id FROM TABLA ORDER BY id ASC) AND (SELECT COUNT(id) FROM TABLA) = 6

asi te aseguras que solo te borra el ultimo mensaje solo cuando haya un total de 6 mensajes.
  #13 (permalink)  
Antiguo 29/04/2013, 10:32
Avatar de iEnrique  
Fecha de Ingreso: abril-2013
Ubicación: España
Mensajes: 346
Antigüedad: 11 años
Puntos: 5
Respuesta: Borrar en vez de paginar

Muchas gracias, ya probaré si me funciona, gracias de verdad. Si lo consigo lo marco como solucionado.
  #14 (permalink)  
Antiguo 29/04/2013, 23:50
Avatar de patilanz  
Fecha de Ingreso: enero-2012
Mensajes: 880
Antigüedad: 12 años, 3 meses
Puntos: 29
Respuesta: Borrar en vez de paginar

Código PHP:
Ver original
  1. $campos_en_tabla=array('ID','user','msg');
  2. $primeros5= mysqli_query($con,"select * FROM(SELECT TOP 10 ID from tabla order by ID DESC)ORDER BY ID ASC" );
  3. mysqli_query($con,'DELETE * FROM tabla');
  4.  
  5. while($valores=mysql_fetch_array($primeros5)){
  6. mysqli_query($con,'INSERT INTO tabla VALUES('.$valores["ID"].','.$valores['user'].','.$valores['msg'].')');
  7. }

Este ejemplo no he lo he probado, primero prueba lo en una tabla de prueba para que no te desaparezcan los campos si hay errores y me dices.
  #15 (permalink)  
Antiguo 29/04/2013, 23:52
Avatar de patilanz  
Fecha de Ingreso: enero-2012
Mensajes: 880
Antigüedad: 12 años, 3 meses
Puntos: 29
Respuesta: Borrar en vez de paginar

No hagas a mi mensaje anterior ya que el de lcruzga es mejor y tarda menos. El problema de su ejemplo es que si los mensajes son menos de 5 pues igualmente borrara el ultimo. Pon una if que lo compruebe.

Etiquetas: mysql, paginar, registro, select, sql, usuarios, vez
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 18:13.