nach limit 6 den rest löschen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • nach limit 6 den rest löschen

    hallo, da ich absoluter anfänger in php bin habe ich eine frage an euch:
    wie mache ich nachdem z.B in einer shoutbox 8 sprüche sind und ich limit 6 habe der die letzten 2 die nicht emhr angezeigt sind automatisch löscht? danke für antworten!

  • #2
    Anfänger im stellen verständlicher Fragen bist du offenbar auch.

    Bitte drücke dich klarer aus - wo willst du sie löschen? Nur aus der Anzeige, oder aus deiner Datenspeicherung? Wenn letzteres, wie sieht die aus?
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Aus der Datenbank natürlich, sorry.
      Die Datenbank beinhaltet ein Table cm_content_spruch dort soll er den wie gesagt die letzten sprüche nach dem limit löschen also die id.

      Kommentar


      • #4
        Warum willst du die überhaupt löschen?
        Datenbanken kommen gut mich einer großen Anzahl von Datensätzen klar - und aus Revisionsgründen auch die früheren Einträge noch verfügbar zu haben, kann manchmal auch nicht schlecht sein.

        Aber, wenn du unbedingt willst - auch DELETE kennt die ORDER BY- und die LIMIT-Klausel.

        “LIMIT x, unendlich” gibt es nicht - aber man kann für unendlich auch einfach einen sehr großen Wert einsetzen.

        Und btw., eine ID sollte immer ausschließlich zur eindeutigen Identifikation eines Datensatzes dienen, nie zu etwas anderem - also auch nicht zu einer Sortierung.
        Wenn du also die „neuesten“ Datensätze behalten und „ältere“ löschen willst, solltest du auch noch den Timestamp des Eintragens mit abspeichern, und danach sortieren.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Wie gesagt - ich bin ein PHP Anfänger könntest du mir evt. den Code dafür zeigen wie ich die älteren immer lösche?

          Kommentar


          • #6
            Bitte lies im Manual nach, wie es genau geht.
            Wenn dir die Grundlagen noch nicht klar sind, arbeite ein Tutorial durch.

            Solltest du konkrete Verständnisprobleme haben, frag hier wieder nach.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              Zitat von wahsaga Beitrag anzeigen
              ...
              Aber, wenn du unbedingt willst - auch DELETE kennt die ORDER BY- und die LIMIT-Klausel.

              “LIMIT x, unendlich” gibt es nicht - aber man kann für unendlich auch einfach einen sehr großen Wert einsetzen.
              "DELETE ... WHERE timestamp <= x" könnte auch funktionieren.
              Zuletzt geändert von fireweasel; 17.09.2010, 12:10. Grund: >= zu <= geändert
              Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

              Kommentar


              • #8
                Zitat von fireweasel Beitrag anzeigen
                "DELETE ... WHERE timestamp >= x" könnte auch funktionieren.
                Dann hast du aber im Zweifelsfalle gar keine Einträge mehr übrig, wenn längere Zeit keine neuen Einträge gemacht wurden.
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  Zitat von wahsaga Beitrag anzeigen
                  Dann hast du aber im Zweifelsfalle gar keine Einträge mehr übrig, wenn längere Zeit keine neuen Einträge gemacht wurden.
                  Selbstverständlich war mit "timestamp" nicht der aktuelle Datumsstempel gemeint, sondern ein Wert, den man in einem vorherigen SELECT (Sub-Select oder was auch immer) als den ältesten der aktuellsten 6 Einträge ermittelt hat. Es hätte auch ein simpler Zähler getan, aber da eine Shout-Box üblicherweise Datumsstempel hat, kann man die gleich mitbenutzen.

                  Mich hat das hier gestört:
                  Zitat von wahsaga Beitrag anzeigen
                  (...) “LIMIT x, unendlich” gibt es nicht - aber man kann für unendlich auch einfach einen sehr großen Wert einsetzen. (...)
                  Das lag daran, weil mir nicht bekannt war, dass diese Vorgehensweise im MySQL-Handbuch explizit empfohlen wird:
                  ... To retrieve all rows from a certain offset up to the end of the result set, you can use some large number for the second parameter. ...
                  SQLite beispielsweise erlaubt hier die Angabe einer (beliebigen) negativen Zahl. Resultsets haben keine negativen Offsets, also sollte da nichts schiefgehen.
                  The LIMIT clause places an upper bound on the number of rows returned in the result. A negative LIMIT indicates no upper bound.
                  Das erscheint mir etwas "sauberer", auch wenn bei einer Shoutbox, deren "überschüssige" Einträge regelmäßig gelöscht werden, das Problem wohl nicht auftreten wird, dass die "zufällig gewählte große Zahl" nicht die obere Grenze darstellen könnte.

                  Am besten gefallen hätte mir die Oracle-Syntax, angewandt auf die Aufgabenstellung hier:
                  Code:
                  DELETE FROM 'table' WHERE ROWNUM >= 6

                  Aber "LIMIT" gehört sowieso nicht zum SQL-Standard, und der OP arbeitet sicher mit MySQL, daher verbuche ich das Ganze für mich unter "Wieder mal was gelernt".

                  Ich frage mich aber, wie die diversen Database-Abstraction-Layer dieses Problem angehen. AdoDB hat (wenn ich mich richtig erinnere) eine eingebaute Limit-Funktion (die passenden SQL-Quellcode erzeugt), aber bei PDO habe ich diesbezüglich nichts gefunden.
                  Zuletzt geändert von fireweasel; 17.09.2010, 12:48.
                  Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

                  Kommentar


                  • #10
                    Man kann aber in MySQL ROWNUM simulieren, sogar in einer einzigen Query ohne Stored Procedures:

                    https://www.ideaweb.de/blog/mysql-da...tzen-behalten/

                    Kommentar

                    Lädt...
                    X