- SanThe -
10-06-2013 15:52
gewijzigd op 10-06-2013 16:06
<?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
}
}
}
?>
Link gekopieerd
Bedankt voor jullie hulp!
Klopt het dat als nu een 500ste toegevoegd wordt, dat de eerste rij dan alleen verwijderd word?
Link gekopieerd
Dat kan je toch uittesten? Desnoods even met een kleiner aantal.
Lees wel even de gele comments...
Link gekopieerd
p
patrick cos
10-06-2013 17:12
gewijzigd op 10-06-2013 17:13
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?
Link gekopieerd