• User Attivo

    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....


  • Consiglio Direttivo

    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 😉


  • User Attivo

    [...]

    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:(


  • Consiglio Direttivo

    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' 😉


  • User Attivo

    [...]

    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?:)


  • Consiglio Direttivo

    Di nulla 😉

    Si, serve solo a memorizzare il dato e quindi passarlo all'istruzione SQL. 😉

    Alla prossima. :ciauz: