Ergebnis 1 bis 6 von 6

Thema: Jeder 11 Datenbankeintrag löschen.

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer
    Registriert seit
    11.02.2010
    Beiträge
    192

    Jeder 11 Datenbankeintrag löschen.

    Hallo,

    da ich meine User Manuell auszahle gibt es eine Statistik für die User wann wie viel ausgezahlt wurde, diese habe ich per DESC LIMIT auf 10 Einträge gesetzt. Nun ist ja eigentlich alles was über 10 Einträge ist Datenmüll und diesen möchte ich gerne entfernen. Gibt es eine Möglichkeit das sobald bei jemanden mehr wie 10 Einträge in der Statistik sind die älteste Auszahlung gelöscht wird?

    Benutzt wird das LKT-Auszahlungsaddon. Wenn jemand Ideen hat wie man es verwirklichen könnte würde ich mich sehr freuen.

    Lieben Gruß.

  2. #2
    Erfahrener Benutzer
    Registriert seit
    24.03.2011
    Beiträge
    280
    Zitat Zitat von cr00sy Beitrag anzeigen
    Hallo,

    da ich meine User Manuell auszahle gibt es eine Statistik für die User wann wie viel ausgezahlt wurde, diese habe ich per DESC LIMIT auf 10 Einträge gesetzt. Nun ist ja eigentlich alles was über 10 Einträge ist Datenmüll und diesen möchte ich gerne entfernen. Gibt es eine Möglichkeit das sobald bei jemanden mehr wie 10 Einträge in der Statistik sind die älteste Auszahlung gelöscht wird?

    Benutzt wird das LKT-Auszahlungsaddon. Wenn jemand Ideen hat wie man es verwirklichen könnte würde ich mich sehr freuen.

    Lieben Gruß.

    Frag mal bei LKT nach vielleicht weis er da was, und kann es ins Addon intigrieren

    Mfg Rene_1992 - René Röbel

  3. #3
    Erfahrener Benutzer Avatar von hankfromhelvete
    Registriert seit
    26.04.2007
    Beiträge
    633
    Das einfachste wird wohl sein, alle Auszahlungen die älter als x sind zu löschen. Ich kenn zwar zwar nicht die Struktur des Addons, aber wenn der Timestamp in der DB gespeichert wird, sollte das kein Problem sein.

    Sent from my LT15i using Tapatalk

  4. #4
    Administrator Avatar von Lokutos
    Registriert seit
    29.03.2008
    Beiträge
    3.147
    ich glaube da hast du dir ganz schön was vorgenommen;

    also zuerstmal brauchst du ja eine id als primary_key, damit du jeden eintrag einzelnd anwählen kannst
    -> standart 0 (null als zahl)

    dann brauchst du m.e. eine 2. tabelle, in der du einfach speicherst, welcher eintrag als letztes überschrieben wurde.

    dann kannst du mit count() die anzahl der einträge eines user herausfinden
    wenn diese gleich 80 ist, wird kein neuer datensatz angelegt, sondern derjenige mit der ID+1 (aus der hilfstabelle) wird überschrieben

    einziges problem bei der sache:
    herausfinden, welche id als letztes überschrieben wurde und welche id als nächstes folgt
    da muss man vll nochmal überlegen, bin ich aber im mom zu fertich für (grade informatik arbeit hinter mir und totall müde ^^)

    hoffe das konnte dir erstmal helfen
    mfg

    EDIT:
    is mir grade als idee gekommen:
    du kannst ja ne einfache abfrage machen (welche id als nächstes kommt)

    SELECT ID
    FROM anzahl
    WHERE user = "username"
    AND ID > (SELECT ID FROM next_id WHERE user = "username")
    ORDER BY ID ASC
    LIMIT 1;

    so in etwa, musst du halt anpassen ^^
    SwissNetWorX - VMS Hosting / V-Server / Cloud-Server / Hosting

  5. #5
    Administrator Avatar von Lokutos
    Registriert seit
    29.03.2008
    Beiträge
    3.147
    ev. geht dieser query:

    allerdings habe ich keine ahnung / Zeit zu googeln ob Group by in delete Statements erlaubt sind

    Fürs auszahlen Pro

    DELETE FROM vms_lkt_auszahlanforderungen Group by uid ORDER BY id DESC LIMIT 10, 100000

    Für euroauszahlung

    DELETE FROM vms_lkt_euroauszahlunganforderung Group by uid ORDER BY id DESC LIMIT 10, 100000


    Bitte unbedingt zuerst ein Backup machen vor dem ausfüren zum test in der DB
    SwissNetWorX - VMS Hosting / V-Server / Cloud-Server / Hosting

  6. #6
    Erfahrener Benutzer
    Registriert seit
    11.02.2010
    Beiträge
    192
    Hey,

    habe nun eine lösung:

    PHP-Code:
       $abc "select * from vms_LKT_auszahlanforderungen order by uid asc";
       
    $erc mysql_query($abc);
       while(
    $row mysql_fetch_object($erc))
       {
         if(
    $aktuelle_uid!=$row->uid)
         {
           
    $aktuelle_uid=$row->uid;
           
    $anzahl=0;
         }
         
    $anzahl++;
         if(
    $anzahl>10)
         {
         
    mysql_query("delete from vms_LKT_auszahlanforderungen where id=$row->id");
         }
       } 
    Das lasse ich nun mit dem Db_Optimize-Cron laufen.

Ähnliche Themen

  1. <title> Tag in jeder Content Seite irgendwie angeben ?
    Von swinxx im Forum Support zum VMSone
    Antworten: 4
    Letzter Beitrag: 24.05.2012, 15:40
  2. Antworten: 14
    Letzter Beitrag: 03.08.2009, 00:17
  3. Forcedbanner laden sehr lange & jeder 1. Forcedbanner doppelt
    Von Rallef im Forum Support zu Addons & Erweiterungen
    Antworten: 17
    Letzter Beitrag: 25.06.2009, 20:17
  4. Clickjacking: Jeder Klick im Browser kann der falsche sein
    Von Newsbot im Forum Talk, talk, talk...
    Antworten: 0
    Letzter Beitrag: 08.10.2008, 11:56
  5. Löschen
    Von Panther61 im Forum Support zum VMSone
    Antworten: 1
    Letzter Beitrag: 14.04.2007, 13:39

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •