News-System - alle Einträge über 10 löschen

Creere

Mitglied
Hallo,
Ich hab in letzter Zeit an einem News-System gearbeitet es funktioniert auch alles.
Nun habe ich eingestellt das er mir auf der homepage nur die 10 neuesten News anzeigt.
Und dann soll er die alten löschen also alle über 10.. das anzeigen klappt aber die alten
Einträge werden nicht aus der Datenbank gelöscht.

Hier mal das Script:
PHP:
<?php 
$sqlget = mysql_query("SELECT * FROM mk_news ORDER BY ID DESC LIMIT 10");
while($row = mysql_fetch_array($sqlget)) {	
?>
<table class="kont" border="0" width="100%" cellpadding="0" cellspacing="0">
<tr>
<td align="left" bgcolor="#C38E63"><?php echo $row['Titel']; ?></td><td  width="25%" align="right" bgcolor="#C38E63"><?php echo $row['Datum']; ?></td>
</tr>
<tr>
<td colspan="2"><?php echo nl2br($row['Inhalt']); ?></td>
</tr>
</table>

<?php
}
if($_SESSION['nick'] == ""){
?>

<br /><br />
<hr style="border: 1px dashed #878787"></hr>
<table>
<form action="index.php?section=news" method="post">
<input name="datum" type="hidden" value="<?php echo date("H:i")." - ".date("d.m.Y"); ?>"></input>
<tr>
<td><input name="titel" type="text" maxlengh="50" size="50"></input></td>
</tr>
<tr>
<td><textarea name="inhalt" cols="75" rows="10"></textarea></td>
</tr>
<tr>
<td><input name="eintrag" type="submit" value="News Eintragen"></input></td>
</tr>
</form>
</table>
<?php
}
if(isset($eintrag)){
$sqlsend = mysql_query("INSERT INTO mk_news VALUES ('','$titel', '$inhalt', '$datum')");
$sqldelete = mysql_query("DELETE FROM mk_news ORDER BY ID ASC LIMIT 10, 1");
header("Location: index.php?section=news");
}
?>

Ich hoffe das ihr das versteht und mir helfen könnt!
Danke im Voraus Creere
 
Hi!

Warum willst du die News denn löschen?
Wenn du doch in deinem SELECT ein LIMIT setzt, werden Sie noch nicht mehr angezeigt, also warum löschen?
 
Sebigf hat gesagt.:
Hi!

Warum willst du die News denn löschen?
Wenn du doch in deinem SELECT ein LIMIT setzt, werden Sie noch nicht mehr angezeigt, also warum löschen?
Gute Frage!
Aber die andere Frage steht noch im Raum, daher:
Bei DELETE kann LIMIT nur einen Parameter vertragen, Du wirst Dir also nochmal genau durch den Kopf gehen lassen müssen, ob Du ASC oder DESC verwendest und evtl. mit einem Subquery prüfen müssen, ob überhaupt mehr als 10 Datensätze existieren.
Eine Anregung, Anwendung auf eigene Gefahr:
Code:
DELETE FROM mk_news 
ORDER BY ID ASC 
LIMIT GREATEST(
    0,
    (SELECT COUNT(*) FROM mk_news) - 10
)

Gruß hpvw
 
Wenn du die Daten zur Anzeige aus der DB holst, merke dir die kleinste ID.

Dann kannst du alle Datensätze löschen, deren ID noch kleiner als diese ist.

ORDER ist in DELETE erst ab MySQL4 möglich.
 
Zurück