Managed Server
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: Automatische Kundennummern, welche Erweiterung?

    Roberto75

    • Viel Schreiber
    • Beiträge: 836
    Automatische Kundennummern, welche Erweiterung?
    am: 20. Dezember 2014, 21:59:47
    Hallo,

    ich hatte die Automatischen Kundennummern drin, die im Handbuch sind, die 2. Variante mit Präfix. Die funktionierten auch, bis ich den Präfix auskommentiert hatte, weil neuerdings Magnalister genutzt wird. Magnalister akzeptiert aber nur Zahlen als Kundennummer, soviel ich weiß. In den Einstellungen kann man wählen, dass die fortlaufende Nummer des customers_cid-Feldes genommen werden soll.

    Ich habe jetzt die erste Variante ohne Präfix installiert. Nun funktioniert aber das Erhöhen der Nummern nicht mehr, die Startnummer (50700), bleibt bei jeder neuen Kundenanmeldung die selbe, also 50700. Das muss an der Erweiterung liegen, da es bei 2 Shops nicht funktioniert.

    Kann mir jemand ein Modul für die automatischen Kundennummern empfehlen, das auch in der neuesten Version SP2 funktioniert, vielleicht das von Gerhard?

    Gruß

    Robert

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

    2slow4u

    • Frisch an Board
    • Beiträge: 88
    Re: Automatische Kundennummern, welche Erweiterung?
    Antwort #1 am: 20. Dezember 2014, 23:14:18
    hallo

    ich hatte das hier aus dem forum genommen und mehrmals getestet! geht definitiv.

    hast du es schon mal in einen frischen shop installiert? evtl schneidet sich da was mit deinem vorherinstallierten?

    LG

    Roberto75

    • Viel Schreiber
    • Beiträge: 836
    Re: Automatische Kundennummern, welche Erweiterung?
    Antwort #2 am: 21. Dezember 2014, 12:02:05
    Nein, es funktioniert garantiert nicht mehr, wenn man Kunden gelöscht hat und die Werte im Feld customers_id nicht mehr fortlaufend sind und wenn der Präfix auskommentiert wird. Wenn man dann eine neue Startnummer vorgibt, bleibt die Nummer immer die selbe.
    Vorher lief das auch.

    Ich hatte mal etwas getestet und die Start customers_cid auf 1 gesetzt. Da wurde zwar die nächste Kundennummer vergeben, aber die nachfolgende Bestellung bekam eine um 8 höhere Nummer. Diese Differenz entsprach der die Werte im Feld customers_id hatten. Da war eine Lücke zwischen den Werten, die genau 8 war, also Beispiel: vorletzte customers_id war 622, die letzte war 630. Entprechend bekam auch die nächste customers_cid einen um 8 höheren Wert.

    Bonsai

    • Viel Schreiber
    • Beiträge: 4.127
    • Geschlecht:
    Re: Automatische Kundennummern, welche Erweiterung?
    Antwort #3 am: 21. Dezember 2014, 13:30:47
    Ohne jetzt die Erweiterungen zu kennen, meine Gedanken dazu:

    Baue das ganze einfach so um, dass der höchste Wert von customers_cid ermittelt wird,
    Code: SQL  [Auswählen]
    SELSECT MAX(customers_cid) FROM customers
    dann plus 1 rechnen und im neuen Datensatz schreiben.

    Am besten ist es das in einem einzigen SQL Statement zu fahren! Also das INSERT Statement für das Anlegen des Kunden so zu modifizieren, dass es den SELCET macht und gleich den Wert +1 einträgt, ansonsten hast Du eventuell das Problem, dass 2 Kunden gleichzeitig einen Account anlegen und dann hat einer eine Fehlermeldung und keinen Account!

    Roberto75

    • Viel Schreiber
    • Beiträge: 836
    Re: Automatische Kundennummern, welche Erweiterung?
    Antwort #4 am: 21. Dezember 2014, 14:20:39
    Ich habe herausgefunden, das bei 10000 im Feld customers_cid Schluss ist. Ab diesem Wert wird immer die selbe Kundennummer erzeugt. Hier wurde schon einmal das Problem angesprochen, hatte das aber nicht mit meinem in Verbindung gebracht. Vermutlich werden nur 5-stellige Nummern akzeptiert, wenn diese einen Präfix haben.
    Wenn ich aber den Typ bei customers_cid von varchar(32) auf int(11) setze, werden alle Kundennummern auf 0 gesetzt.
    Hat hier einer eine Lösung? Da die bisherigen Nummern auch 5-stellig waren, sollten die neuen eigentlich auch so sein, sonst muss ich auf 3 stellige umstellen, da noch nicht so viele Kunden vorhanden sind.
    Aber das ist keine Lösung wenn einer mehr als 10000 Kunden hat.

    Bonsai

    • Viel Schreiber
    • Beiträge: 4.127
    • Geschlecht:
    Re: Automatische Kundennummern, welche Erweiterung?
    Antwort #5 am: 21. Dezember 2014, 14:26:36
    varchar(32) kann Zahlen bis
    99999999999999999999999999999999
    sollte reichen. Du musst nur aufpassen keinem Kunden doppelte Kundennummern zu vergeben, und keine Kunden von anderen Planeten aufzunehmen, dann reicht es sicherlich.

    Roberto75

    • Viel Schreiber
    • Beiträge: 836
    Re: Automatische Kundennummern, welche Erweiterung?
    Antwort #6 am: 21. Dezember 2014, 14:41:03
    Das steht schon varchar(32) drin im Feld customers_cid. Trotzdem ist ab 10000 Ende und die Nummern werden nicht mehr fortlaufend erzeugt.

    Bonsai

    • Viel Schreiber
    • Beiträge: 4.127
    • Geschlecht:
    Re: Automatische Kundennummern, welche Erweiterung?
    Antwort #7 am: 21. Dezember 2014, 14:51:17
    Ich wollte ja auch nur darauf hinweisen, dass Du an der falschen Stelle suchst. varchar(32) kann 32 Alphanumerische Zeichen. Das sollte reichen für die intelligente Bevölkerung mindestens dreier mittlerer Planeten, außer es handelt sich nicht um Humanoide sondern um Arten mit hohen Bevölkerungszahlen wie Insektiode. Die Begrenzung Deines Höchstwertes liegt nicht an der Datenbank.

    Zeige mir mal den Codeschnipsel der hochzählt!

    Roberto75

    • Viel Schreiber
    • Beiträge: 836
    Re: Automatische Kundennummern, welche Erweiterung?
    Antwort #8 am: 21. Dezember 2014, 14:59:01
    In diesem Beitrag hier http://www.modified-shop.org/forum/index.php?topic=8669.15 wurde eine Lösung erwähnt, auf int(11) umzustellen, so auch in einem anderen Beitrag. Das scheint zu funktionieren. Wenn ich das mache, werden alle alten Kundennummern, vielleicht, weil diese den Präfix S haben (z. B. S-50450), auf 0 gestellt. Das ist natürlich nicht machbar.
    Daher scheint das doch an der Datenbank zu liegen.

    Bonsai

    • Viel Schreiber
    • Beiträge: 4.127
    • Geschlecht:
    Re: Automatische Kundennummern, welche Erweiterung?
    Antwort #9 am: 21. Dezember 2014, 15:06:54
    Die reden da von der customer_id, nicht von der customer_cid

    Bonsai

    • Viel Schreiber
    • Beiträge: 4.127
    • Geschlecht:
    Re: Automatische Kundennummern, welche Erweiterung?
    Antwort #10 am: 21. Dezember 2014, 15:10:37
    Sorry, stimmt nicht, weiter unten ist die customer_id im Gespräch.

    Dann musst du eben Deine Kundennummern konvertieren von S-0043563 auf 43563, und danach das Feld umstellen. varchar ist String. Einen String in zahl konvertieren klappt bis zum ersten Zeichen das keine Zahl ist. Also alles was mit dem Buchstaben S beginnt wird 0.

    Oder Du schreibst es neu .... wie eingangs von mir angeregt.

    Roberto75

    • Viel Schreiber
    • Beiträge: 836
    Re: Automatische Kundennummern, welche Erweiterung?
    Antwort #11 am: 21. Dezember 2014, 15:18:07
    Nein, das ist das selbe Problem, das ich habe. Customers_id hat den Typ int(11), das scheint in dem Beitrag ein Schreibfehler zu sein. Da das Umstellen von customers_cid auf int(11), was zu funktionieren scheint, alle Nummern mit Präfix S auf 0 setzt, werde ich nun 3-stellige Nummern nehmen, alles ander ist zuviel Aufwand.

    Bonsai

    • Viel Schreiber
    • Beiträge: 4.127
    • Geschlecht:
    Re: Automatische Kundennummern, welche Erweiterung?
    Antwort #12 am: 21. Dezember 2014, 15:22:59
    Ich hab mir das jetzt mal alles durchgelesen ... ich komme nicht zu irgendeiner schlüssigen Erklärung warum gerade bei 10000 Schluss sein soll .....

    Vergleiche mal hier (Die Tabelle):
    http://stackoverflow.com/questions/11515594/when-should-i-use-unsigned-and-signed-int-in-mysql

    Also wenn bei 32767 und 65535 Schluss wäre .... dann ja.

    Roberto75

    • Viel Schreiber
    • Beiträge: 836
    Re: Automatische Kundennummern, welche Erweiterung?
    Antwort #13 am: 21. Dezember 2014, 15:47:40
    Es ist so. Ich habe das in einem neuen Shop ohne Kunden getestet, eine Nummer manuell im Backend vergeben, dann mit der Erweiterung automatische Kundennummer aus dem Handbuch Version 1. Vergeben hatte ich als Startnummer eine 3-stellige Zahl, etwa 650. Hier wurden bei neuen Kunden um 1 erhöht, also 651, 652. Dann habe ich die Startnummer 9998 vorgegeben und hier wurde nur bis 10000 neue Nummern vergeben. Dann blieb es bei 10000 stehen.

    Ich habe aber bemerkt, dass ich jetzt nicht mit 3-stelligen Nummern weitermachen kann, da diese bisher 5-stellig waren. Das heißt, dass diese dann ebenfalls stehen bleibt, eigentlich logisch. Wenn ich nun 650 als Startnummer vorgebe, sind alle künftigen Kundennummern auch 650.

    Wie konvertiere ich nun die Zahlen, so dass S- vor den Zahlen wegfällt? Aus S-50620 soll also nur 50620 werden?

    Bonsai

    • Viel Schreiber
    • Beiträge: 4.127
    • Geschlecht:
    Re: Automatische Kundennummern, welche Erweiterung?
    Antwort #14 am: 21. Dezember 2014, 16:23:18
    Mein Vorgehen wäre:
    1) Shop vom Netz nehmen (Damit sich die DB nicht ändert!!!)

    2) Datenbank Backup als SQL mit vollständigen INSERTs

    3) Die SQL Datei aufmachen, alle Tabellen rauswerfen die keine customers_cid enthalten.

    4) Mit Notepad oder Notepad++ Suchen und ersetzten
    Suche ",'S-"
    Ersetzte mit ""
    (also ohne die doppelten Anführungszeichen)

    5) Backup wieder einspielen

    6) Shop wieder online nehmen

    Da in der SQL Datei vor jeder Tabellenerzeugung drinsteht:
    Code: SQL  [Auswählen]
    DROP TABLE IF EXISTS `irgendein_tabellenname`;

    Sollte das so klappen.

    Alternativ kann man auch eine Schleife in php programmieren die alle Kunden in allen Tabellen die betroffen sind mittels dem SQL UPDATE statement anpasst.

    Der PHP Befehl zum umwandeln der Nummern wäre:
    Code: PHP  [Auswählen]
    $new_customers_cid = str_replace('S-','',$customers_cid);

    Wenn du die admin/includes/application_top.php einbuindest, kannst Du auf die DB zugreifen mit xbeliebigen mysql_ Kommandos oder auch die shopinternen xtc_db_irgendwas() Funktionen aufrufen.

    Die Betroffenen Tabellen kannst Du mit der Hand finden oder so:
    http://stackoverflow.com/questions/193780/how-to-find-all-the-tables-in-mysql-with-specific-column-names-in-them
    5 Antworten
    4514 Aufrufe
    17. November 2010, 13:46:53 von Shorty
    11 Antworten
    4319 Aufrufe
    15. Juni 2016, 10:30:30 von BiDoubleU
    6 Antworten
    3369 Aufrufe
    21. Februar 2013, 00:42:34 von Guenter59
    2 Antworten
    2437 Aufrufe
    24. August 2012, 17:33:42 von vollautomat