- Home
- Categorie
- Coding e Sistemistica
- PHP
- Cancellazione dati dopo tot limite
-
Cancellazione dati dopo tot limite
Salve di nuovo ragazzi...
Ho questo dubbio o problema che dir si voglia....riguarda la minichat che sto creando...praticamente volevo sapere come potrei cancellare i dati presenti nella tabella minichat...cioè dopo un certo tot di messaggi vorrei far si che avvenisse una cancellazione dei vecchi messaggi in automatico per evitare pesi di dati inuti al database....
-
Ciao carlitos1982
Potresti recuperare, a seguito di un INSERT, l'ultimo id generato (con la funzione mysql_insert_id() ) e quindi sottrarre a questo il numero di record che vuoi mantenere nel Db ed eliminare i record il cui id sia inferiore a id - x (dove x è il numero di righe da mantenere).
Facci sapere se così risolvi eh
-
[...]
Be..ho capito solo la prima parte di ciò che mi hai detto...:x
Comunque faccio l'esempio_e posto il codice
[php]$sql = "INSERT INTO minichat (id_user, testo,tempo) VALUES ('$id_user','$text',CURRENT_TIME())";
$query= @mysql_query ($sql) or die (mysql_error());
}$sql_select="SELECT id_user, testo,tempo FROM minichat ORDER BY id DESC LIMIT 10";
$query_select= @mysql_query($sql_select) or die (mysql_error());$recuperoid=mysql_insert_id();
[/php]Nella tabella minichat ho già un campo id auto_increment...quindi mi recupera quello credo..
Non ho capito la seconda parte di ciò che mi hai detto:(
-
Si hai compreso bene, quella funzione ti recupera l'ultimo id appena inserito, dovresti metterlo pero' dopo l'INSERT.
A seguire, sempre prima del SELECT, ti basterà fare un DELETE mettendo come condizione che debba cancellare tutti i record che hanno id uguale all'ultimo id inserito meno il numero di post che vuoi conservare. Ammettiamo tu ne voglia conservare 60, protresti procedere così:
[php]$sql = "INSERT INTO minichat (id_user, testo,tempo) VALUES ('$id_user','$text',CURRENT_TIME())";
$query= @mysql_query ($sql) or die (mysql_error());$recuperoid=mysql_insert_id();
$trim_id=$recuperoid-60;$sql_delete="DELETE FROM minichat WHERE id<'$trim_id'";
$query= @mysql_query ($sql_delete) or die (mysql_error());}
$sql_select="SELECT id_user, testo,tempo FROM minichat ORDER BY id DESC LIMIT 10";
$query_select= @mysql_query($sql_select) or die (mysql_error());[/php]
Vedi se così va'
-
[...]
Si funziona;)
Grazie:)
Samyorn..non ho capito una cosa....ma la variabile $trim_id è una semplice variabile che memorizza il contenuto di $recuperoid-60,_non fa null altro giusto?:)
-
Di nulla
Si, serve solo a memorizzare il dato e quindi passarlo all'istruzione SQL.
Alla prossima.