Alles, bis auf die 10 neuesen Datensätze löschen

Kurt Cobain

Erfahrenes Mitglied
Hallo


Also ich hab ne Tabelle, mit id, name und time(mit Timestamp drin)

Jetzt möchte ich dass wenn es bei einem Namen mehr als 10 Datensätze sind, dass sich dann die Ältesten löschen, und nur die 10 Neuesten übrigbleiben.

Code:
$abfrage = "SELECT * FROM tabelle WHERE name = 'Horst'";
$ergebnis = mysql_query($abfrage)  or die (mysql_error());
$rows = mysql_num_rows($ergebnis);

if($rows > 10)
{
    // die ältesten löschen, nur die 10 neuesten übrig lassen
}


Ich weiß blos nicht wie das geht.
Hoff ihr könnt mir helfen

Gruß
 
Abend!

Erst mal ein Vorschlag, dann ein paar Anmerkungen ...

Code:
$abfrage = "SELECT * FROM tabelle WHERE name = 'Horst' ORDER BY time";
$ergebnis = mysql_query($abfrage)  or die (mysql_error());
$rows = mysql_num_rows($ergebnis);

if($rows > 10)
{
   $max = mysql_result($ergebnis, $rows-10, 2);
   $killer = "DELETE FROM tabelle WHERE time < $max";

   mysql_query($killer)  or die (mysql_error());
}

Dabei gehe ich davon aus, dass die Spalte "time" die dritte der Tabelle ist - sonst müsstest Du natürlich die 2 bei der Zuweisung von $max anpassen.

Zum Prinzip:
- Die ORDER BY Klausel sortiert die Daten aufsteigend, also sind die gewünschten Einträge die letzten 10.
- Wenn mehr als 10 Einträge vorhanden sind, wird in der ersten Zeile der bedingten Anweisung der letzte gewünschte Wert ermittelt.
- Abschließend werden alle unerwünschten Einträge gekillt.

Ach ja, ich hab' den Code nicht getestet. Wenn Probleme auftreten, meld' Dich!

Gruß
Enum
 

Neue Beiträge

Zurück