Eliminar contenido del chat antiguos
Tengo el chat creado y me funciona perfecto mi archivo .js
mi archivo php
Editado
function agregar_chat(mensaje){ $.ajax({ type: 'POST', url: urlWeb + 'chat/insertar.php', data: 'nuevomensaje=' + mensaje, success: function(html) { } }); $('#listar_chat').load('mensajes.php'); $('#mensa_ajax').val(''); $('#listar_chat').scrollTop($('#listar_chat')[0].scrollHeight); } function refrescar(){ setInterval(function(){ $('#listar_chat').load('mensajes.php'); $('#listar_chat').scrollTop($('#listar_chat')[0].scrollHeight); },1000) }
mi archivo php
<?php require_once('../conexion.php'); //CONSULTA BASE DATOS mysql_select_db($database_conexion, $conexion); $query_DatosChat = "SELECT * FROM c_chat ORDER BY id ASC"; $DatosChat = mysql_query($query_DatosChat, $conexion) or die(mysql_error()); $row_DatosChat = mysql_fetch_assoc($DatosChat); $totalRows_DatosChat = mysql_num_rows($DatosChat); ?> <?php do {?> <span class="lista_chat"> <b class="colorchat"><?php echo nombre($row_DatosChat['user'])?> dijo:</b> <?php echo $row_DatosChat['mensaje'] ?><span class="texto_p"><?php echo tiempo_transcurrido($row_DatosChat['time']) ?></span> </span> <?php } while ($row_DatosChat = mysql_fetch_assoc($DatosChat));?> <?php mysql_free_result($DatosChat);?>pero quiero que me borre las ultimas entradas antiguas en mi base de datos porque despues de 3 dias podria llegar a tener mas de 100 entradas en el chat y quisiera borrar las ultimas 50 entrada viejas que sea automatico no tener que borrarlo yo manualmente en mysql.
Editado
0
Puntos
Puntos
1344
Visitas
Visitas
2
Resp
Resp
Por Dannus hace 100 meses
Avanzado
Respuesta #1
Bueno Dannus, en tu archivo insertar.php colocarías lo siguiente:
No lo he probado pero según yo funciona de la siguiente manera:
Cuando una persona escriba, se va a activar el archivo insertar.php y por lo tanto, la consulta que te escribí allí arriba. Entonces, la consulta va ordenar los mensajes por ID descendiente, teniendo como primer mensaje al que tenga el ID más grande. Eso lo mostrará como $id_actual.
Luego, queremos eliminar los últimos 50, entonces le eliminaría 50 a $id_actual y sería mi $id_maximo que permitiré. Y eliminará todo lo que pertenezca a un ID menor o igual al $id_maximo.
Por ejemplo, el último id actual es 112, le resto 50 y me da 62, entonces se eliminará el id 62,61,60,59,58,57... Y toda su información.
$orden = sprintf("SELECT * FROM c_chats ORDER BY id desc"); $consulta = mysql_query($orden, $conexion); $resultado = mysql_fetch_array($consulta); $id_actual = $resultado["id"]; $id_maximo = $id_actual - 50; $orden = sprintf("DELETE FROM c_chats WHERE id <= %s", GetSQLValueString($id_maximo, "int")); $consulta = mysql_query($orden, $conexion);
No lo he probado pero según yo funciona de la siguiente manera:
Cuando una persona escriba, se va a activar el archivo insertar.php y por lo tanto, la consulta que te escribí allí arriba. Entonces, la consulta va ordenar los mensajes por ID descendiente, teniendo como primer mensaje al que tenga el ID más grande. Eso lo mostrará como $id_actual.
Luego, queremos eliminar los últimos 50, entonces le eliminaría 50 a $id_actual y sería mi $id_maximo que permitiré. Y eliminará todo lo que pertenezca a un ID menor o igual al $id_maximo.
Por ejemplo, el último id actual es 112, le resto 50 y me da 62, entonces se eliminará el id 62,61,60,59,58,57... Y toda su información.
Respuesta #2
perfect funciono
0
Puntos
Puntos
Por Dannus hace 99 meses
Avanzado