Ik wil van een script alleen de laatste 500 rijen in de database behouden.
Rij 501 moet dus automatisch verwijderd worden uit de database, dit krijg ik niet voor elkaar.

Heeft iemand enig idee?
<?php
$max = 500;
$sql = "SELECT COUNT(id) as aantal FROM ... WHERE 1";
$result = mysql_query($sql);
if($result === false)
{
// error
}
else
{
$row = mysql_fetch_assoc($result);
$aantal = $row['aantal'];

// De eerste 500 houden:
if($aantal < $max)
{
// INSERT
}

// De laatste 500 houden:
// INSERT
if($aantal >= $max)
{
$sql = "DELETE FROM ... WHERE 1 ORDER BY id ASC LIMIT " . ($aantal + 1 - $max);
$result = mysql_query($sql);
if($result === false)
{
// error
}
}
}
?>
Bedankt voor jullie hulp!

Klopt het dat als nu een 500ste toegevoegd wordt, dat de eerste rij dan alleen verwijderd word?
Dat kan je toch uittesten? Desnoods even met een kleiner aantal.
Lees wel even de gele comments...
Mag ik trouwens ook gewoon vlak onder de insert het volgende plaatsen:


<?php
$max = 500;

    $row = mysql_fetch_assoc($result);
    $aantal = $row['aantal'];

    if($aantal >= $max)
    {
        $sql = "DELETE FROM tabel WHERE 1 ORDER BY id ASC LIMIT " . ($aantal + 1 - $max);
        $result = mysql_query($sql);
    }
?>


Ik zal alleen niet wat het volgende doet:

 WHERE 1 ORDER BY id ASC LIMIT " . ($aantal + 1 - $max);


Ook heb ik geen kolom met 'aantal', maar wel id of wordt dat niet bedoeld?

Reageren