Bienvenido a datoweb.com!! En este foro podrás encontrar ayuda sobre diseño y desarrollo web en general. Si quieres formar parte de esta comunidad para pedir ayuda o colaborar ayudando a otros usuarios del foro solo tienes que registrarte desde el siguiente enlace: Registrarse en el Foro

Eliminar contenido del chat antiguos

Tengo el chat creado y me funciona perfecto mi archivo .js
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'])?>&nbsp;dijo:</b>&nbsp;&nbsp;&nbsp;<?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
1343
Visitas
2
Resp
Por Dannus hace 100 meses
Avanzado
Respuesta #1
Bueno Dannus, en tu archivo insertar.php colocarías lo siguiente:
$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.

1
Puntos
Por Jose hace 99 meses
Experto Sitio web
Respuesta #2
perfect funciono
0
Puntos
Por Dannus hace 99 meses
Avanzado
Compartir en facebook
Compartir en twitter
Compartir
Para comentar Inicia sesión o Registrate