rechtstexte für onlineshop
Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Alte Kunden löschen

    zeder

    • Fördermitglied
    • Beiträge: 44
    Alte Kunden löschen
    am: 08. Juni 2011, 11:31:51
    Ich hab durch Newsletter Programm SuperMailer fast 200 email von mein Datenbank bekommen, welche sind nicht mehr aktuell. Das bedeutet für mich das die Kunden nicht mehr diesen email haben.  Sicherlich gibst es durch SQL Befehl, oder Script das Komplet zu löschen.
    Aber ich weiß es nicht wie?
    Hier hab ich gefunden wie kann man alle Kunden löschen, aber nicht nach dem Email: Kunden löschen

    Kann mir jemand helfen?
    Danke schön.



    Linkback: https://www.modified-shop.org/forum/index.php?topic=13432.0

    zeder

    • Fördermitglied
    • Beiträge: 44
    Alte Kunden löschen
    Antwort #1 am: 09. Juni 2011, 09:52:41
    Was macht Ihre mit dem Kunden welche schon seit 5 Jahren nicht bestellen? Welche hat kein aktuelle Email? Gibt es keine Möglichkeit solche Kunden automatisch zu löschen?

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.369
    • Geschlecht:
    Alte Kunden löschen
    Antwort #2 am: 09. Juni 2011, 10:05:48
    Wieso sollte man die löschen?! Wer sagt dir, dass die nicht nach 7 Jahren wieder bestellen? Wieso stören die dich denn? :?

    Grüße

    Torsten

    Olinew

    • Gast
    Re: Alte Kunden löschen
    Antwort #3 am: 28. Dezember 2011, 17:09:05
    Hallo

    Ich greife das Thema mal auf und frage welche Möglichkeiten es gibt, Kunden ohne Bestellungen, die sagen wir mal bereits 2 Jahre in der Datenbank schlummern, zu löschen. Ich möchte quasi 1x im Jahr eine Kundeninventur machen und Karteileichen entsorgen.
    Nicht zu vergessen wäre eventuell, dass Kunden, die den Newsletter abonniert haben und bisher keine Bestellungen getätigt haben, von der Löschung nicht betroffen sein sollten. In osCommerce gab es da was, wie sieht es bei modified eCommerce Shopsoftware aus?

    Gruß
    Oli

    Q

    • Fördermitglied
    • Beiträge: 1.531
    Re: Alte Kunden löschen
    Antwort #4 am: 29. Dezember 2011, 14:41:57
    Wieso sollte man die löschen?! Wer sagt dir, dass die nicht nach 7 Jahren wieder bestellen? Wieso stören die dich denn? :?
    [...]

    Wenn man in den Datenschutzbestimmungen einen Punkt hat, bei dem die Löschung der Daten nach 2 Jahren Inaktivität genannt wird, ist es schon interessant.

    scooterama

    • Fördermitglied
    • Beiträge: 284
    • Geschlecht:
    Re: Alte Kunden löschen
    Antwort #5 am: 22. August 2017, 15:24:21
    Ich möchte dieses Thema nochmal heran holen, ich bin auch an dem Punkt wo ich viele inaktive Kundenkonten gezwungener massen löschen muss. Leider haben wir zu Anfang jeden Kunden unabhängig ob der Bestellt hat oder nicht in die WAWI geholt und es wurde eine Kundennummer vergeben. Irgendwann haben wir dann realisiert dass dies Eng wird und wir haben dann nur noch Kunden vom Shop in die WAWI geholt welche auch wirklich bestellt haben. Nun existieren aber viele alte Konten ohne Verkäufe mit Kundennummer und jetzt wird es langsam echt eng mit den Internen Nummernkreisläufen. Daher muss ich nun Kunden ohne Verkäufe löschen. In der WAWI kann ich das mit Regeln wunderbar exportieren und so auch Kunden direkt löschen, aber im Shop müssen die dann ja auch weg.
    Im Prinzip alle Kunden ohne Kauf auf eine bestimmbare Zeit zurück sollten gelöscht werden können damit diese nicht benutzten Kundennummern wieder frei werden.

    Ich mache das jetzt schon eine ganze Zeitlang von Hand, einzeln selektieren, löschen und der nächste.
    Gibt es da wirklich keine Möglichkeit dies in der DB machen zu können?

    fishnet

    • Fördermitglied
    • Beiträge: 4.821
    • Geschlecht:
    Re: Alte Kunden löschen
    Antwort #6 am: 22. August 2017, 17:49:58
    Hm. Zu löschende E-Mail Adressen aus der Wawi als CSV Datei exportieren, hochladen und ein Script programmieren, das die Liste durchläuft, die E-Mail Adresse in der DB sucht, die customers_id feststellt und anhand dieser dann die Einträge in adress_book, customers, customers_basket, customers_basket_attributes etc pp löscht. Nur so ein Gedanke.

    scooterama

    • Fördermitglied
    • Beiträge: 284
    • Geschlecht:
    Re: Alte Kunden löschen
    Antwort #7 am: 23. August 2017, 17:37:51
    Solche Gedanken hab ich jede Menge, aber ich kanns nicht umsetzen.
    Vielleicht kann man dazu ja die Funktion im Shop nutzen damit auch wirklich alles gelöscht wird. In der DB selber ist es angeblich ja heikel alles zu erwischen?

    Ich hab in der Wawi die cid und die adress_book_id, customers_cid, emailadresse usw.
    Hättest Du Lust das umzusetzen? Dann melde dich gerne bei mir.

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: Alte Kunden löschen
    Antwort #8 am: 24. August 2017, 09:07:06
    Hallo scooterama,

    Welche Shopversion ist im Einsatz?
    Wie viele Kundenaccounts wären in etwa betroffen?
    Das Löschkriterium wäre also "Kunde ohne Bestellung" stimmts?

    Gruss
    Hanspeter

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: Alte Kunden löschen
    Antwort #9 am: 24. August 2017, 11:13:51
    Hallo scooterama,

    wenn Du alle Kundenaccounts die keine Bestellung gtätigt haben löschen willst könntest Du in einem 106er Shop das folgendermassen machen.

    Datenbank sichern!

    Dann in '/admin/customers.php' ca. Zeile 566 nach folgendem Code

    Code: PHP  [Auswählen]
        case 'deleteconfirm' :
          $customers_id = xtc_db_prepare_input($_GET['cID']);

          if ($_POST['delete_reviews'] == 'on') {
            $reviews_query = xtc_db_query("SELECT reviews_id FROM ".TABLE_REVIEWS." WHERE customers_id = '".xtc_db_input($customers_id)."'");
            while ($reviews = xtc_db_fetch_array($reviews_query)) {
              xtc_db_query("DELETE FROM ".TABLE_REVIEWS_DESCRIPTION." WHERE reviews_id = '".$reviews['reviews_id']."'");
            }
            xtc_db_query("DELETE FROM ".TABLE_REVIEWS." WHERE customers_id = '".xtc_db_input($customers_id)."'");
          } else {
            xtc_db_query("UPDATE ".TABLE_REVIEWS." SET customers_id = null WHERE customers_id = '".xtc_db_input($customers_id)."'");
          }

          xtc_db_query("DELETE FROM ".TABLE_ADDRESS_BOOK." WHERE customers_id = '".xtc_db_input($customers_id)."'");
          xtc_db_query("DELETE FROM ".TABLE_CUSTOMERS." WHERE customers_id = '".xtc_db_input($customers_id)."'");
          xtc_db_query("DELETE FROM ".TABLE_CUSTOMERS_INFO." WHERE customers_info_id = '".xtc_db_input($customers_id)."'");
          xtc_db_query("DELETE FROM ".TABLE_CUSTOMERS_BASKET." WHERE customers_id = '".xtc_db_input($customers_id)."'");
          xtc_db_query("DELETE FROM ".TABLE_CUSTOMERS_BASKET_ATTRIBUTES." WHERE customers_id = '".xtc_db_input($customers_id)."'");
          xtc_db_query("DELETE FROM ".TABLE_PRODUCTS_NOTIFICATIONS." WHERE customers_id = '".xtc_db_input($customers_id)."'");
          xtc_db_query("DELETE FROM ".TABLE_WHOS_ONLINE." WHERE customer_id = '".xtc_db_input($customers_id)."'");
          xtc_db_query("DELETE FROM ".TABLE_CUSTOMERS_STATUS_HISTORY." WHERE customers_id = '".xtc_db_input($customers_id)."'");
          xtc_db_query("DELETE FROM ".TABLE_CUSTOMERS_IP." WHERE customers_id = '".xtc_db_input($customers_id)."'");
          xtc_db_query("DELETE FROM ".TABLE_ADMIN_ACCESS." WHERE customers_id = '".xtc_db_input($customers_id)."'");
          xtc_db_query("DELETE FROM ".TABLE_NEWSLETTER_RECIPIENTS." WHERE customers_id = '".xtc_db_input($customers_id)."'"); // DokuMan - 2011-04-15 - also delete the newsletter entry of the customer
          xtc_redirect(xtc_href_link(FILENAME_CUSTOMERS, xtc_get_all_get_params(array ('cID', 'action'))));
          break;
     

    diesen Code einfügen

    Code: PHP  [Auswählen]
        case 'delete_all_customers_without_orders' :
         
          // Testlauf Ja oder Nein
          $test = 'Ja';
       
          // Rezensionen auch loeschen Ja oder Nein
          $delete_reviews = 'Ja';
         
          $customers_query = xtc_db_query("SELECT distinct c.customers_id, c.customers_cid, c.customers_firstname, c.customers_lastname FROM ".TABLE_CUSTOMERS." c, ".TABLE_ORDERS." o WHERE c.customers_id = o.customers_id and c.account_type != 0");
         
          $customers_array = array();
         
          while ($customers = xtc_db_fetch_array($customers_query)) {
         
            $customers_id = $customers['customers_id'];
            if ($test == 'Nein') {
                if ($delete_reviews == 'Ja') {
                  $reviews_query = xtc_db_query("SELECT reviews_id FROM ".TABLE_REVIEWS." WHERE customers_id = '".xtc_db_input($customers_id)."'");
                  while ($reviews = xtc_db_fetch_array($reviews_query)) {
                    xtc_db_query("DELETE FROM ".TABLE_REVIEWS_DESCRIPTION." WHERE reviews_id = '".$reviews['reviews_id']."'");
                  }
                  xtc_db_query("DELETE FROM ".TABLE_REVIEWS." WHERE customers_id = '".xtc_db_input($customers_id)."'");
                } else {
                  xtc_db_query("UPDATE ".TABLE_REVIEWS." SET customers_id = null WHERE customers_id = '".xtc_db_input($customers_id)."'");
                }
         
                xtc_db_query("DELETE FROM ".TABLE_ADDRESS_BOOK." WHERE customers_id = '".xtc_db_input($customers_id)."'");
                xtc_db_query("DELETE FROM ".TABLE_CUSTOMERS." WHERE customers_id = '".xtc_db_input($customers_id)."'");
                xtc_db_query("DELETE FROM ".TABLE_CUSTOMERS_INFO." WHERE customers_info_id = '".xtc_db_input($customers_id)."'");
                xtc_db_query("DELETE FROM ".TABLE_CUSTOMERS_BASKET." WHERE customers_id = '".xtc_db_input($customers_id)."'");
                xtc_db_query("DELETE FROM ".TABLE_CUSTOMERS_BASKET_ATTRIBUTES." WHERE customers_id = '".xtc_db_input($customers_id)."'");
                xtc_db_query("DELETE FROM ".TABLE_PRODUCTS_NOTIFICATIONS." WHERE customers_id = '".xtc_db_input($customers_id)."'");
                xtc_db_query("DELETE FROM ".TABLE_WHOS_ONLINE." WHERE customer_id = '".xtc_db_input($customers_id)."'");
                xtc_db_query("DELETE FROM ".TABLE_CUSTOMERS_STATUS_HISTORY." WHERE customers_id = '".xtc_db_input($customers_id)."'");
                xtc_db_query("DELETE FROM ".TABLE_CUSTOMERS_IP." WHERE customers_id = '".xtc_db_input($customers_id)."'");
                xtc_db_query("DELETE FROM ".TABLE_ADMIN_ACCESS." WHERE customers_id = '".xtc_db_input($customers_id)."'");
                xtc_db_query("DELETE FROM ".TABLE_NEWSLETTER_RECIPIENTS." WHERE customers_id = '".xtc_db_input($customers_id)."'");    
            }
                $customers_array[] = '<br>'.$customers['customers_id'].' | '.$customers['customers_cid'].' | '.$customers['customers_firstname'].' | '.$customers['customers_lastname'];
          }
         
          $customers_string = implode("<br>", $customers_array);
         
          die(($test == 'Nein' ?'<h2>gel&ouml;schte Kundenaccounts</h2>' : '<h2>folgende Kundenaccounts w&uuml;rden gel&ouml;scht (Testlauf)</h2>').$customers_string.'<br>&nbsp;<br>&nbsp;<br>Bitte Liste kopieren dann OK klicken!&nbsp;&nbsp;<a href="'.xtc_href_link(FILENAME_CUSTOMERS, xtc_get_all_get_params(array ('action'))).'">[OK]</a>');          
          break;
     

    dann im Admin zu Kunden-> Kunden navigieren und in der Adressleiste des Browsers  nach '.... /admin/customers.php' noch '?action=delete_all_customers_without_orders' anfügen und [Enter] drücken.

    Anmerkung:
    Der Code ist jetzt so eingestellt das nur ein Testlauf durchgeführt wird, erst wenn man $test = 'Ja' durch $test = 'Nein' ersetzt wird gelöscht.

    PS:
    Nach dem Löschen würde ich den Code wieder aus der '/admin/customers.php' entfernen.

    Gruss
    Hanspeter

    scooterama

    • Fördermitglied
    • Beiträge: 284
    • Geschlecht:
    Re: Alte Kunden löschen
    Antwort #10 am: 24. August 2017, 11:28:51
    Hallo Hpzeller, ja es ist ein 1.06 Shop. Vielen Dank für den Code, das ist super. Lässt sich das noch auf das vorhandensein einer KUndennummer erweitern/prüfen? Weil mir gehts ja eigentlich nur Kunden welche eine customers_cid haben aber keine Orders und die sollten restlos verschwinden, ohne Leichen in der DB zu hinterlassen damit diese Kundennummern in der WAWI wieder frei werden für ECHTE Kunden.

    So lösche ich ja jetzt auch die Kunden die sich registriert aber noch nicht bestellt haben. Die bereiten mir keine Bauchschmerzen.

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: Alte Kunden löschen
    Antwort #11 am: 24. August 2017, 11:49:08
    Ja dann musst du im geposteten Code folgende Zeile

    Code: PHP  [Auswählen]
    $customers_query = xtc_db_query("SELECT distinct c.customers_id, c.customers_cid, c.customers_firstname, c.customers_lastname FROM ".TABLE_CUSTOMERS." c, ".TABLE_ORDERS." o WHERE c.customers_id = o.customers_id and c.account_type != 0");

    mit dieser ersetzen

    Code: PHP  [Auswählen]
    $customers_query = xtc_db_query("SELECT distinct c.customers_id, c.customers_cid, c.customers_firstname, c.customers_lastname FROM ".TABLE_CUSTOMERS." c, ".TABLE_ORDERS." o WHERE c.customers_id = o.customers_id and (c.customers_cid != null or c.customers_cid != '') and c.account_type != 0");

    Ausserdem werden natürlich Kundenaccounts die zur  Kundengruppe Admin gehören auch nicht gelöscht, egal ob Bestellungen für solche Kundenaccounts  vorhanden sind oder nicht.

    Gruss
    Hanspeter

    scooterama

    • Fördermitglied
    • Beiträge: 284
    • Geschlecht:
    Re: Alte Kunden löschen
    Antwort #12 am: 24. August 2017, 11:58:20
    Vielen Dank Hanspeter, ich werde das einbauen, testen und Rückmelden.

    Vielen lieben Dank

    scooterama

    • Fördermitglied
    • Beiträge: 284
    • Geschlecht:
    Re: Alte Kunden löschen
    Antwort #13 am: 24. August 2017, 12:13:17
    Hanspeter, müsste ich im Testmodus ich eine Ausgabe erhalten? Also sollten mir Kundenaccounts aufgelistet werden? Wil ich sehe jetzt nur den Text 'folgende Kundenaccounts würden gelöscht (Testlauf)'
    Bitte Liste kopieren dann OK klicken!

    Sehe ich die Liste nur wenn Testmodus auf Nein steht?

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: Alte Kunden löschen
    Antwort #14 am: 24. August 2017, 12:21:25
    Ja es müsste auch im Testmodus eine Liste angezeigt werden.

    [ Für Gäste sind keine Dateianhänge sichtbar ]

    [EDIT:]
    Ist ein Fehler im Code, ersetze

    Code: PHP  [Auswählen]
    $customers_query = xtc_db_query("SELECT distinct c.customers_id, c.customers_cid, c.customers_firstname, c.customers_lastname FROM ".TABLE_CUSTOMERS." c, ".TABLE_ORDERS." o WHERE c.customers_id = o.customers_id and (c.customers_cid != null or c.customers_cid != '') and c.account_type != 0");

    mit

    Code: PHP  [Auswählen]
    $customers_query = xtc_db_query("SELECT distinct c.customers_id, c.customers_cid, c.customers_firstname, c.customers_lastname FROM ".TABLE_CUSTOMERS." c, ".TABLE_ORDERS." o WHERE c.customers_id = o.customers_id and (c.customers_cid != null or c.customers_cid != '') and c.customers_status != 0");

    Gruss
    Hanspeter
    Marktplatz - Eine große Auswahl an neuen und hilfreichen Modulen sowie modernen Templates für die modified eCommerce Shopsoftware
    6 Antworten
    2355 Aufrufe
    22. April 2020, 21:47:35 von noRiddle (revilonetz)
    6 Antworten
    5968 Aufrufe
    13. Dezember 2023, 21:46:12 von /nob
    3 Antworten
    3341 Aufrufe
    14. Dezember 2011, 15:57:30 von franky_n