alte einträge löschen?

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

  • alte einträge löschen?

    hiho, ich schreibe gerade ein gästebuch (bei diesem mistwetter ) und möchte das so ein richten, dass nur xy einträge davon gespeichert werden. die alten werden also nach und nach wieder gelöscht, aber ich krieg das irgendwie nicht gebacken... $ets sind übrigens die anzahl einträge die gespeichert werden sollen.

    wenn ich ein konstrukt wie dieses ausführe

    PHP-Code:
    while(mysql_num_rows(mysql_query("SELECT id FROM gb")) > $ets){
        
    $id2del mysql_query('SELECT MIN(id) AS id FROM gb LIMIT 1');
        
    mysql_query('DELETE FROM gb WHERE id="'.$id2del['id'].'"');

    lädt er und lädt er und... schnarch...

    aber auch so geht es nicht:

    PHP-Code:
    $anzahl mysql_num_rows(mysql_query("SELECT id FROM gb"));
    if(
    $anzahl $ets){
        
    $limit $anzahl $ets;
        
    mysql_query('DELETE FROM gb LIMIT 1, "'.$limit.'"');

    das ganze sollte so funktionieren, dass man irgendwann den wert in $ets verändern kann, so kann man ja auch nicht einfach nur den ältesten löschen bei jedem neuen eintrag.

    ich habe leider nicht soviel ahnung von mysql, und habe von daher keine ahnung an was das liegen könnte.
    kann mir einer helfen?? vielen dank
    Zuletzt geändert von sili; 12.04.2004, 16:11.

  • #2
    da du ja hoffenlich ein datumsfeld mitspeicherst, ist INTERVAL interesant für dich.


    Code:
    DELETE FROM tabelle WHERE datumsfeld < NOW() - INTERVAL 10 DAY
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      okay das wäre auch ne möglichkeit, aber dabei könnte es im gästebuch plötzlich keine einträge haben und dann wieder 1000

      mir wäre "meine" methode lieber

      Kommentar


      • #4
        wieso dann plötzlich 1000?

        und wenn du nur die 100 aktuellsten behalten willst, kannst du das hier machen.

        SELECT id FROM tabelle ORDER BY datum DESC LIMIT 100

        ids auslesen und in der form id(1),id(2),id(n) speichern. und dann in folgende query hacken.

        DELETE FROM tabelle WHERE id NOT IN(1,2,3,4,n)


        aber warum willst du überhaupt was löschen? lasse doch alle daten in der DB stehen und zeige sie nur nicht an.
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          Wie wärs mit:
          PHP-Code:
          DELETE FROM tabelle
          WHERE  id 
          < (max(id)-$zahldereinträge
          Für Rechtschreibfehler übernehme ich keine Haftung!

          Kommentar


          • #6
            Original geschrieben von Damian1984
            Wie wärs mit:
            zu ungenau und eher unsicher, würde ich sagen... :-p
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              Wieso zu ungenau? wenn er die Zahl der Einträge auf 100 lässt, dann hat er immer 100 Einträge in der DB nicht mehr und nicht weniger
              Für Rechtschreibfehler übernehme ich keine Haftung!

              Kommentar


              • #8
                naja, es geht ja nicht ums anzeigen, sondern ums speichern. erstens interessiert sich niemand für die gaaaaanz alten einträge und zweitens soll die db nicht allzugross werden

                ist das nicht bissel aufwändig?? also ich mein, wird das nicht zu langsam??

                @ damian, stimmt, werd ich probieren ;-)

                aber warum soll das unsicher sein??

                Kommentar


                • #9
                  aber warum soll das unsicher sein??
                  kannst du dich 100%ig auf deine DB verlassen, dass ids, welche gelöscht wurden, nicht noch einmal vergeben werden? nur mal so als anregung... ;-)
                  INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                  Kommentar


                  • #10
                    Original geschrieben von Abraxax
                    kannst du dich 100%ig auf deine DB verlassen, dass ids, welche gelöscht wurden, nicht noch einmal vergeben werden? nur mal so als anregung... ;-)
                    Dann müsste ich ja immer alles per Hand eintragen :-P
                    Für Rechtschreibfehler übernehme ich keine Haftung!

                    Kommentar


                    • #11
                      Original geschrieben von Damian1984
                      Dann müsste ich ja immer alles per Hand eintragen :-P
                      ja. schon klar. aber ich hatte mal vor einiger zeit einen fall, den ich nicht wieder beschreiben kann, gehabt, da wurden ungenutzte ids wieder verwendet. und daher gehe ich immer auch nummer sicher. ;-)
                      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                      Kommentar


                      • #12
                        *aufgeb*
                        Für Rechtschreibfehler übernehme ich keine Haftung!

                        Kommentar


                        • #13
                          Original geschrieben von Abraxax
                          kannst du dich 100%ig auf deine DB verlassen, dass ids, welche gelöscht wurden, nicht noch einmal vergeben werden? nur mal so als anregung... ;-)
                          das kann ich mir nicht vorstellen. war da auch auto_increment drin??
                          es wird wohl stimmen, wenn du es sagst, aber ich frage mich wie sowas möglich ist...

                          ich bin leider noch nicht dazugekommen die idee von damian zu testen...

                          aber wenn ich mir das so überlege, wenn da eine id fehlt funktioniert das ja auch wieder nicht.

                          Kommentar


                          • #14
                            Original geschrieben von sili
                            das kann ich mir nicht vorstellen. war da auch auto_increment drin??
                            es wird wohl stimmen, wenn du es sagst, aber ich frage mich wie sowas möglich ist...
                            k.a. ich habe es jedenfalls so in grausamer erinnerung....

                            Original geschrieben von sili
                            aber wenn ich mir das so überlege, wenn da eine id fehlt funktioniert das ja auch wieder nicht.
                            <ironie> tja ... man kann ja vorher erst einmal alles prüfen, bevor man löscht... </ironie>
                            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                            Kommentar


                            • #15
                              hiho, es funktioniert! *freu*

                              also das problem lag darin, dass man nicht "LIMIT 1, x" sondern "LIMIT x" verwenden sollte... eigentlich einfach, aber naja


                              PHP-Code:
                              $anzahl mysql_num_rows(mysql_query("SELECT id FROM gb"));
                              if(
                              $anzahl $ets){
                                  
                              $limit $anzahl $ets;
                                  
                              mysql_query('DELETE FROM gb ORDER BY id DESC LIMIT "'.$limit.'"');

                              Kommentar

                              Lädt...
                              X