Re: Löschen ältester Datensätze - baseportal Forum - Web-Anwendungen einfach, schnell, leistungsfähig!
baseportal
English - Deutsch "Es gibt keine dummen Fragen - jeder hat einmal angefangen"

 baseportal-ForumDie aktuellsten 10, 30, 50, 100 Einträge anzeigen.  

 
 Ausgewählter Eintrag: Zur Liste 
    Beitrag von Claus (4645 Beiträge) am Samstag, 21.November.2009, 12:46.
    Re: Löschen ältester Datensätze

      Eventuell reicht es schon, diesen perlcode vor das do=action zu setzen:


      <perl>
      if ($cmd eq "add")
      {
      get "Id=* range=0,1", "Datenbank";
      if ($_amount_query >9998)
      {
      del"Id==$Id","Datenbank";
      }
      }
      </perl>
      

      <do action=all usw....>

      auf diese Weise wird bei Hinzufügen eines neuen Datensatzes und bereits vorhandenen 9999 DS der Datensatz mit der niedriegsten Id gelöscht.

      Du solltest es aber erst einmal mit einer Kopie der DB probieren, ob es wie gewünscht funktioniert...;)

      hth

      Gruesse

      Claus


    Antworten

 Alle Einträge zum Thema: Zur Liste 
    Beitrag von Helmut Meisl (119 Beiträge) am Samstag, 21.November.2009, 00:46.
    Löschen ältester Datensätze

      Kann mir jemand einen Tipp geben, wie ich auf einfache Art und Weise in einer Datenbank die Anzahl der Datensätze auf 9999 begrenzen kann und jeweils die ältesten Datensätze gelöscht werden. Ich hab´s mit do action und del probiert, aber so einfach geht es doch nicht, da del wohl nicht zulässig ist. DANKE!

     Antworten

    Beitrag von richard (1187 Beiträge) am Samstag, 21.November.2009, 08:16. WWW: posaunenchor-rhoden.de
    Re: Löschen ältester Datensätze

      Eine Möglichkeit könnte so aussehen:

      Du holst zunächst mal die Anzahl der vorhandenen Datensätze mit $_amount_all. Dann läßt Du den Überhang (Ergebnis von $_amount_all - 9999) in einer Schleife mit get oder loop ausgeben, (Begrenzung der Ausgabe durch: range=-AnzahlÜberhang,AnzahlÜberhang). Dabei kannst du dann die ausgegebenen Datensätze mit del über die Id löschen.

      Wenn ich Ausgabe schreibe muß das nicht unbedingt eine am Bildschirm erkennbare Ausgabe sein, es reicht wenn die Schleife durchläuft und der jeweils aktuelle Datensatz gelöscht wird.

      Diese Lösung bietet aber die Möglichkeit die gelöschten Datensätze noch einmal am Bildschirm auszugeben, Sicherungs- oder Erinnerungskopien in einer Datenbank oder Textdatei zu speichern.

     Antworten

    Beitrag von richard (1187 Beiträge) am Samstag, 21.November.2009, 08:33. WWW: posaunenchor-rhoden.de
    Re: Re: Löschen ältester Datensätze

      Sorry, habe bei der Range Angabe Unsinn geschrieben.

      Statt range=-AnzahlÜberhang,AnzahlÜberhang ist wohl

      range=-Ergebnisvon$_amount_all,AnzahlÜberhang

      richtig.

     Antworten

    Beitrag von richard (1187 Beiträge) am Samstag, 21.November.2009, 08:39. WWW: posaunenchor-rhoden.de
    Re: Re: Re: Löschen ältester Datensätze

      Wenn ichs mir mir richtig überlege sollte die erste Fassung doch die bessere sein.

      Nebenbei. Habe mit diesem Post jetzt die 500er Marke zum wiederholten Male geknackt - war schon mal über 600. Dieses Zählwerk hier macht mir schon ein bißchen Sorgen hinsichtlich der Zuverlässigkeit von bp.

     Antworten

    Beitrag von Sander (8133 Beiträge) am Montag, 30.November.2009, 13:48.
    Re: Re: Re: Re: Löschen ältester Datensätze

      so, nach einem reorg der forumdb hast du 506 beiträge ;) - vielleicht wurden früher die großgeschriebenen Richards mitgezählt

     Antworten

    Beitrag von richard (1187 Beiträge) am Montag, 30.November.2009, 14:27. WWW: posaunenchor-rhoden.de
    Re: Re: Re: Re: Re: Löschen ältester Datensätze

      Gleich mal ausprobieren.

      Mein Problem dabei war, daß die angezeigte Anzahl über die Monate/Jahre mehrmals rauf und runter ging - das kann nicht nur an der Schreibweise liegen. Es soll Auswertungen geben wo man solche statistischen Werte einsetzt, die sollten dann schon verläßlich sein.

     Antworten

    Beitrag von Sander (8133 Beiträge) am Montag, 30.November.2009, 15:59.
    Re: Re: Re: Re: Re: Re: Löschen ältester Datensätze

      tja, ich kann dir nur sagen, wie die abfrage drin steht:
      get "Name==!$name"...
      

      in der direkten Suche in der DB erhalte ich das gleiche Ergebnis.
      692 sinds, wenn groß/klein nicht berücksichtigt wird.

     Antworten

    Beitrag von Claus (4645 Beiträge) am Montag, 30.November.2009, 19:06.
    Re: Re: Re: Re: Re: Re: Löschen ältester Datensätze

      Ihr habt Probleme...;)

      Wenn da bei mir nicht plötzlich nur noch die Hälfte steht, sondern +- 50, ist mir das wurscht, schließlich zählt doch die Qualität und nicht die Quantität allein.

      Wenn es um die Anzahl der Beiträge geht, könnte ich ja auch lamentieren, das ca 30 - 50 Beiträge nicht mitgezählt wurden, die ich ganz am Anfang mit kompletten Namen eingestellt hatte, ganz abgesehen von den zig Beiträgen im englischen Forum, die hier überhaupt nicht in die "Wertung" einfließen...;)

      Auch wenn es einen gewissen Aufschluß darüber gibt, wie sich hier einzelne user engagieren, ich finde die Statistik auf der Startseite (die immer noch nicht funktioniert) und die Aktualisierung der Links in der Nutzerdatenbank sind wesentlich wichtiger...

      Nichts für ungut

      Gruesse

      Claus

     Antworten

    Beitrag von Sander (8133 Beiträge) am Montag, 30.November.2009, 20:41.
    Re: Re: Re: Re: Re: Re: Re: Löschen ältester Datensätze

      ach shit, da bin ich ja letztens stehen geblieben... 1000de Baustellen... ;)

     Antworten

    Beitrag von richard (1187 Beiträge) am Montag, 30.November.2009, 20:44. WWW: posaunenchor-rhoden.de
    Re: Re: Re: Re: Re: Re: Löschen ältester Datensätze

      Mir ist die angezeigte Anzahl von Beiträgen auf meine Rechnung egal. Wenn es anders wäre könnte ich ja regelmäßig dummes Zeug schreiben oder zu jedem Post von mir noch zwei oder drei Ergänzungsposts machen.

      Darum ging es mir nicht.

     Antworten

    Beitrag von Claus (4645 Beiträge) am Dienstag, 1.Dezember.2009, 11:48.
    Re: Re: Re: Re: Re: Re: Re: Löschen ältester Datensätze

      >Wenn es anders wäre könnte ich ja regelmäßig dummes Zeug schreiben oder zu jedem Post von mir noch zwei oder drei Ergänzungsposts machen.
      

      Zum Inhalt werde ich mal nix schreiben, aber Ergänzungsposts?

      Dann schau mal die ersten 3 Einträge von dir in diesem Thread an...;)

      Ist doch nicht schlimm, wenn einem hinterher noch was einfällt, woran man beim 1. Post nicht dedacht hat. Entscheidend ist doch nur, ob es dem Fragesteller hinter geholfen hat.

      Isr doch hier nicht der Jahrmarkt der Eitelkeiten...

      Nobody's perfect...

      Gruesse

      Claus

     Antworten

    Beitrag von richard (1187 Beiträge) am Dienstag, 1.Dezember.2009, 13:14. WWW: posaunenchor-rhoden.de
    Re: Re: Re: Re: Re: Re: Re: Löschen ältester Datensätze

      Wem der Schuh paßt, der zieht ihn sich an.

      Hast mein eigentliches Anliegen aber offensichtlich immer noch nicht erkannt.

     Antworten

    Beitrag von Sander (8133 Beiträge) am Dienstag, 1.Dezember.2009, 13:22.
    Re: Re: Re: Re: Re: Re: Re: Re: Löschen ältester Datensätze

      *gg*

     Antworten

    Beitrag von Claus (4645 Beiträge) am Dienstag, 1.Dezember.2009, 13:34.
    Re: Re: Re: Re: Re: Re: Re: Re: Löschen ältester Datensätze

      daher ja auch Dein entsprechender Kommentar...;)

      Wie gesagt, es gibt sicherlich wichtigere Dinge, als irgendwelche Statistiken *sfg*

      Mich amüsiert sowas mittlerweile nur noch, da ich genug zu tun habe...

      Gruesse

      Claus

     Antworten

    Beitrag von taubenuss (2 Beiträge) am Mittwoch, 2.Dezember.2009, 11:30.
    Re: Re: Re: Re: Re: Re: Re: Re: Löschen ältester Datensätze

      >Isr doch hier nicht der Jahrmarkt der Eitelkeiten...
      

      Das dieser Satz von Dir kommt, schlägt dem Fass den Boden aus.

      Deine Eitelkeit ist doch von keinem Forumsteilnehmer zu übertreffen.

      Auf einen Deiner Beiträge mit Hilfestellung kommen drei, in denen Du Dich selbst über den grünen Klee lobst.

      Und jetzt antwortest Du mit Sicherheit mit Deinen sinnfreien Standardfloskeln ...

     Antworten

    Beitrag von Claus (4645 Beiträge) am Mittwoch, 2.Dezember.2009, 13:29.
    Re: Re: Re: Re: Re: Re: Re: Re: Re: Löschen ältester Datensätze

      Naja, Dein Pseudonym spricht doch für sich...;)

     Antworten

    Beitrag von Sander (8133 Beiträge) am Samstag, 21.November.2009, 12:40.
    Re: Re: Löschen ältester Datensätze

      range=9999
      das passt dann ;) alle ab dem 9999 werden geholt.

      so hier:
      get "sort=-Id range=9999","dbname","erg";
      while(get_next("erg")){
         del "Id==$_id","dbname";
      }
      

     Antworten

    Beitrag von Claus (4645 Beiträge) am Samstag, 21.November.2009, 12:46.
    Re: Löschen ältester Datensätze

      Eventuell reicht es schon, diesen perlcode vor das do=action zu setzen:


      <perl>
      if ($cmd eq "add")
      {
      get "Id=* range=0,1", "Datenbank";
      if ($_amount_query >9998)
      {
      del"Id==$Id","Datenbank";
      }
      }
      </perl>
      

      <do action=all usw....>

      auf diese Weise wird bei Hinzufügen eines neuen Datensatzes und bereits vorhandenen 9999 DS der Datensatz mit der niedriegsten Id gelöscht.

      Du solltest es aber erst einmal mit einer Kopie der DB probieren, ob es wie gewünscht funktioniert...;)

      hth

      Gruesse

      Claus

     Antworten

    Beitrag von Sander (8133 Beiträge) am Samstag, 21.November.2009, 14:45.
    Re: Re: Löschen ältester Datensätze

      Id==*

      wobei da vielleicht die if-abfrage schon zuviel ist. im günstigsten fall (nach dem ersten mal) holt der bei mir auch nur ein DS und löscht nur den einen. aber ich hab auch ein sort drin, was ja auch nicht von vorteil ist - hmm... ;)

     Antworten

    Beitrag von Claus (4645 Beiträge) am Samstag, 21.November.2009, 16:23.
    Re: Re: Re: Löschen ältester Datensätze

      Upps, ein "=" beim Tippen wieder von der Tastatur gefressen...;)

      Man kann natürlich auch nur diesen Code generell so vor das "<do action=all" einbauen, aber dann wird das ständig überprüft, was eigentlich auch nicht so prickelnd ist:

      <perl>
      get "Id=* range=0,1", "Datenbank";
      if ($_amount_query >9998)
      {
      del"Id==$Id","Datenbank";
      }
      </perl>
      

      <do action=all usw...>


      Bei dem vorherigen Code wird nur bei jeder Neueingabe geprüft.

      Ist die Frage, was sinnvoller ist. Da hat er nun die Qual der Wahl, aber leber mehrere Lösungsmöglichkeiten als keine...;)

      Gruesse

      Claus

     Antworten

    Beitrag von Claus (4645 Beiträge) am Samstag, 21.November.2009, 19:16. WWW: hummelexpress.de
    Re: Re: Re: Re: Löschen ältester Datensätze

      Beim kopieren natürlich fröhlich den Tippfehler mit übernommen...

      <perl>
      get "Id==* range=0,1", "Datenbank";
      if ($_amount_query >9998)
      {
      del"Id==$Id","Datenbank";
      }
      </perl>
      

      <do action=all usw...>

      jetzt ist richtig

      Gruesse

      Claus

     Antworten

    Beitrag von Sander (8133 Beiträge) am Samstag, 21.November.2009, 22:07.
    Re: Re: Re: Re: Re: Löschen ältester Datensätze

      ach, an das if hab ich gar nicht gedacht. ich meinte
      if ($_amount_query >9998)
      
      macht in dem falle ja das gleiche wie
      while(get_next...) bei mir.

     Antworten

    Beitrag von Helmut Meisl (119 Beiträge) am Samstag, 21.November.2009, 23:43.
    Re: Re: Re: Re: Re: Re: Löschen ältester Datensätze

      VIELEN DANK an alle Helfer! Ich habe den Code mal eingebaut und werde testen, ob alles wie gewünscht funktioniert.

     Antworten

    Beitrag von Claus (4645 Beiträge) am Montag, 23.November.2009, 12:42.
    Re: Re: Re: Re: Re: Re: Löschen ältester Datensätze

      stimmt, aber das wird da wohl, ebenso wie bei Beispiel2 von mir, permanent durchgeführt, während mein 1. Beispielcode nur beim Hinzufügen aufgerufen wird und keine Sortierung benötigt...;)

      Muß er halt mal alles probieren und sich dann die runtime anschauen

      Gruesse

      Claus

     Antworten

    Beitrag von Sander (8133 Beiträge) am Montag, 23.November.2009, 13:35.
    Re: Re: Re: Re: Re: Re: Re: Löschen ältester Datensätze

      mein Reden....

     Antworten

    Beitrag von Helmut Meisl (119 Beiträge) am Montag, 23.November.2009, 20:10.
    Re: Re: Re: Re: Re: Re: Re: Re: Löschen ältester Datensätze

      Also, mit nachstehendem Code erreiche ich das, was ich will.
      Ich prüfe allerdings nicht die Anzahl der Datensätze, sondern habe einfach mal SO kurz vor 10000 Datensätzen das Template aktiviert, seitdem läuft es perfekt. Die Abfrage der Datensatzanzahl hat bei mir nicht funktioniert.
      Die Laufzeit wird praktisch nicht beeinflusst, da der Code immer nur dann läuft, wenn ein neuer Datensatz dazugeschrieben wird; und immer dann wird der jeweils jüngste gelöscht.
      Nochmals danke an alle Mithelfer!

      <perl>
      get "Id==* range=0,1", "statistik";
      del "Id==$Id","statistik";
      </perl>
      

     Antworten

    Beitrag von Claus (4645 Beiträge) am Dienstag, 24.November.2009, 09:15.
    Re: Re: Re: Re: Re: Re: Re: Re: Re: Löschen ältester Datensätze

      Hallo Helmut,

      >sondern habe einfach mal SO kurz vor 10000 Datensätzen das Template aktiviert, 
      

      Du hattest etwas von max. 9999 Datensätzen geschrieben...

      >Die Abfrage der Datensatzanzahl hat bei mir nicht funktioniert.
      

      Wenn Du nur 9995 DS hast, wird es nicht aktiv, sondern erst wenn die vorhandene Anzahl der Datensätze > 9998 ist, also wenn 9999 DS in der Datenbank vorhanden sind, wird der älteste DS gelöscht.

      Du kannst Die Anzahl der momentan vorhandenen DS ja mal mit einer Test-DB (Kopie) prüfen


      <perl>
      if ($cmd eq "add")
      {
      get "Id==* range=0,1", "Datenbank";
      out "Anzahl der Einträge: $_amount_query<br>"; # die Zeile später entfernen 
      if ($_amount_query >9998)
      {
      del"Id==$Id","Datenbank";
      }
      }
      </perl>
      


      Gruesse

      Claus

     Antworten


     
 Liste der Einträge von 7351 bis 7501:Einklappen Zur Eingabe 
Neueste Einträge << 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | Neuere Einträge < Zur Eingabe  > Ältere Einträge | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 >> Älteste Einträge


Zurück zur Homepage

© baseportal.de. Alle Rechte vorbehalten. Nutzungsbedingungen



powered in 0.12s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!