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 auch 😃

    Hehe 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 😃


Anmelden zum Antworten