PHP / MYSQL max. entries
-
Hallo,
das ist jetzt die Frage
Entweder
kunoiwo schrieb:
bis auf die letzten 10
auslesen oder
kunoiwo schrieb:
bis auf die ersten 10
auslesen (wiedergeben)
//Edit: Sorry hast natürlich Recht. Dein Vorschlag müsste funktionieren.
VlG
-
Er will doch immer 10 einträge ausgeben haben.
Und wenn er merkt das es 11 einträge sind will er den 1 löschen damit es wieder 10 sind.Also nach der schnellen lösung von mir wäre es dann so:
1. Hole einträge aus datenbank
2. Prüfe RowCount:Wenn RowCount > 10 dann lösche alle aus der datenbank die nicht in die selektierung (hole mir die jüngsten 10 einträge) fallen und hole mir erneut die einträge aus der datenbank.
Wenn RowCount <= 10 Alles ok
Oder nischt ^^
Edit// Ok dein edit grad gesehen
-
Problem:
This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
MySQL Version: 5.1.37
-
oh
naja dann packt man es entweder in ein VIEW oder man macht ein JOIN (SELECT ...)
-
Erstmal danke für die hilfreichen Antworten.
Hab mein Glück mal probiert:$all_entries = "SELECT * FROM MyBook_log"; $result = mysql_query($all_entries); if (mysql_num_rows($result)>10) { $sql = "DELETE FROM MyBook_log WHERE ID NOT IN ( SELECT ID FROM MyBook_log ORDER BY ID DESC LIMIT 0,10)"; $result2 = mysql_query($sql); echo "Entries: ".mysql_num_rows($result).""; } else { echo "Unter 10, alles ok";}
Das passiert nichts. Kommt auch keine Fehlermeldung. Irgendwie löscht er da nichts. Was mach ich falsch?
-
Hallo,
mysql_error();
gucken ob wirklich kein Fehler produziert wird.
VlG
-
RandomAccess85 schrieb:
Hallo,
mysql_error();
gucken ob wirklich kein Fehler produziert wird.
VlG
Ahhhh
This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
Wurde glaube ich auch schon angesprochen.
Ehm wie ist dazu denn die Alternative:VIEW oder man macht ein JOIN (SELECT ...)
Ist mir beides nciht vertraut...
-
Hallo,
wenn du jetzt schon den COUNT hast würde sich ersterer Vorschlag anbieten. Damit umgehst du VIEW's und JOIN's komplett.
$all_entries = "SELECT * FROM MyBook_log"; $result = mysql_query($all_entries); $count = mysql_num_rows($result); if ($count>10) { $count-=10; $sql = "DELETE FROM MyBook_log ORDER BY ID ASC LIMIT ".$count.")"; $result2 = mysql_query($sql); }
Löscht alle Datensätze, bis auf die letzten 10!
LG
-
Joa viele wege führen nach Rom
Deiner natürlich auchHehe wollte grad was anmerken an deinem post, aber is schon geändert :D!
@TP - mal bei zeit anschauen oder selbst googeln:
http://dev.mysql.com/doc/refman/5.1/de/join.html
http://dev.mysql.com/doc/refman/5.1/de/create-view.html
-
RandomAccess85 schrieb:
Hallo,
wenn du jetzt schon den COUNT hast würde sich ersterer Vorschlag anbieten. Damit umgehst du VIEW's und JOIN's komplett.
$all_entries = "SELECT * FROM MyBook_log"; $result = mysql_query($all_entries); $count = mysql_num_rows($result); if ($count>10) { $count-=10; $sql = "DELETE FROM MyBook_log ORDER BY ID ASC LIMIT ".$count.")"; $result2 = mysql_query($sql); }
Löscht alle Datensätze, bis auf die letzten 10!
LG
War zwar ein kleiner Syntaxfehler drinne aber hat mir richtig gut geholfen:
$sql = "DELETE FROM MyBook_log ORDER BY ID ASC LIMIT $count";Danke euch beiden!
Wenn ihr mal in der Nähe von Kiel seid, dürft ihr euch nen Bier abholen.
-
haha alles klar
Die klammer is ihm wohl so reingerutscht
btw bin auch eher ein freund von ' -- ' . $var . ' -- '
Wird etwas schneller berechnet als " -- $var " oder wie im bsp. " -- " . $var . " -- "greez
-
Hallo,
asoooo die Klammer. Ich hab mich die ganze Zeit gewundert von welchem Syntaxfehler die Rede ist
Ja die Klammer gehört da natürlich nicht hin.//spätestens bei so lustigen Dingen wie mysql_query("SELECT * FROM tabelle WHERE feld='".$row['vorhergeholterWert']."'"); // ist "--".$var."--" nicht mehr so einfach zu vermeiden. // Aber egal, wir schweifen ab ^^
VlG
P.S. Ein Bier bitte nach Leipzig. DHL Luftpost bitte, dann ist es zum Feierabend da