mfschorsch Posted September 1, 2009 Report Share Posted September 1, 2009 Hallo, weiß jemand wie ich es hinbekomme, dass automatisch Kundennummern vergeben werden? Am liebsten wäre mir folgendes: Es wird nach der aktuell höchsten Kundennummer geschaut, etwa in dieser Art: SELECT max(customers_cid) FROM xt_customers Dann wird darauf +1 gerechnet und diese Kundennummer wird dann bei einem neuen Kunden vergeben. Wenn ich das richtig recherchiert habe, dann wird in xtFramework/classes/class.customer.php der neue Kunde angelegt. Da sollte man doch irgendetwas einfügen/hinzufügen können. Kann da jemand helfen? Ist doch sicherlich auch für andere interessant, oder? Habe leider nur Basiskenntnisse in php-Programmierung. Habe bisher folgendes probiert: etwa in Zeile 390 folgendes eingefügt, bzw. geändert. [SIZE=1][SIZE=1][COLOR=black]$nextCustID = $db->Execute("SELECT max(customers_cid) FROM xt_customers");[/COLOR][/SIZE] [SIZE=1][SIZE=1][SIZE=1][COLOR=black]echo "<script>alert('".$nextCustID."');</script>";[/COLOR][/SIZE] [/SIZE][COLOR=black]$intNextCustID = intval($nextCustID);[/COLOR] [COLOR=black]$intNextCustID++;[/COLOR] [COLOR=black]$strNextCustID = strval($intNextCustID);[/COLOR] [/SIZE][/SIZE] [SIZE=1][COLOR=#808080][SIZE=1][COLOR=black]$customer_data_array = array ('customers_gender' => $data['customers_gender'],[/COLOR][/SIZE] [SIZE=1][COLOR=black]'customers_vat_id' => $data['customers_vat_id'],[/COLOR][/SIZE] [SIZE=1][COLOR=black]'customers_vat_id_status' => $data['customers_vat_id_status'],[/COLOR][/SIZE] [SIZE=1][COLOR=black]'customers_email_address' => $data['customers_email_address'],[/COLOR][/SIZE] [SIZE=1][COLOR=black]'customers_default_currency' => $data['customers_default_currency'],[/COLOR][/SIZE] [SIZE=1][COLOR=black]'customers_default_language' => $data['customers_default_language'],[/COLOR][/SIZE] [SIZE=1][COLOR=black]'customers_cid' => $strNextCustID,[/COLOR][/SIZE] [SIZE=1][COLOR=black]'shop_id' => $data['shop_id'][/COLOR][/SIZE] [SIZE=1][COLOR=black]);[/COLOR][/SIZE] [/COLOR][/SIZE] Eingefügt in der Tabelle wird aber immer 2. Vielleicht kann mir auch jemand helfen, wie ich den echo-Befehl richtig schreibe, damit ich mal den Wert rausbekomme, welcher aus der Datenbank gezogen wird. Vielen Dank im Vorraus und freue mich auf eure Antworten. Markus Link to comment Share on other sites More sharing options...
mfschorsch Posted September 3, 2009 Author Report Share Posted September 3, 2009 Naja, irgenwie muss ich wohl auf dem richtigen Weg sein, denn in diesem Thread http://www.xt-commerce.com/forum/shopbereich/33277-automatische-kundennummernvergabe.html wird es ähnlich gemacht. Nur ist der Code für xtc 3.xx Wenn ich diesen Code einsetze hat er aber Probleme mit den Funktionen xtc_db_query und xtc_fetch_array $cid_query = xtc_db_query("SELECT MAX(customers_cid / 1) AS maxnr FROM ".TABLE_CUSTOMERS); $cid = xtc_db_fetch_array($cid_query); if($cid['maxnr']){ $start_cid = $cid['maxnr']+1; } Vielleicht weiß jemand durch was ich diese in VEYTON ersetzen kann? Link to comment Share on other sites More sharing options...
mfschorsch Posted September 11, 2009 Author Report Share Posted September 11, 2009 bin ich wirklich der einzige, der dieses Problem hat? Kann ich fast nicht glauben. Link to comment Share on other sites More sharing options...
Doerk Posted September 13, 2009 Report Share Posted September 13, 2009 Hallo, würde ich auch gern nutzen nur ich habe noch weniger Ahnung als Du/Ihr, ein Plugin wäre klasse. Link to comment Share on other sites More sharing options...
yumwebdesign Posted September 14, 2009 Report Share Posted September 14, 2009 Ginge das nicht auch einfach mit auto-increment Einstellung in der Datenbank? Link to comment Share on other sites More sharing options...
nethosting24 Posted September 14, 2009 Report Share Posted September 14, 2009 Gibt es hier schon etwas neues ? Link to comment Share on other sites More sharing options...
oldbear Posted September 14, 2009 Report Share Posted September 14, 2009 hi, müsste doch genauso gehen wie bei "Bestellnummer erhöhen", da gibts einen Beitrag vom Zanier eben mit auto-increment. Grüsse oldbear Link to comment Share on other sites More sharing options...
mfschorsch Posted September 15, 2009 Author Report Share Posted September 15, 2009 Mit autoincrement funktionierts nicht, da ich nicht zwei Felder der Datenbank automatisch hochzählen lassen kann. Es gibt zwei Felder in der Tabelle: 1.) customers_id, das ist der auto_increment Wert und primary key. Diesen möchte ich eigentlich nicht manipulieren, da ich nicht weiß, welche Auswirkungen dies insgesamt hat. 2.) customers_cid, das ist die Kundennummer, welche auch als Kundennummer verwendet wird. Und diese sollte doch irgendwie automatisch zu füllen sein. Siehe 1. und 2. Eintrag in diesem Posting. Link to comment Share on other sites More sharing options...
mzanier Posted September 15, 2009 Report Share Posted September 15, 2009 Mit autoincrement funktionierts nicht, da ich nicht zwei Felder der Datenbank automatisch hochzählen lassen kann. klar. mit nem trigger auf insert. Link to comment Share on other sites More sharing options...
mfschorsch Posted September 16, 2009 Author Report Share Posted September 16, 2009 Der Trigger auf den Insert ist eine gute Idee, bringt aber mehrere Probleme mit sich. 1.) Wenn die Datenbank bei einem Provider ist, dann bekommt man evtl. nicht die Rechte um sich Trigger anlegen zu können. 2.) Ich muss mit dem Trigger aus der gleichen Tabelle, auf welche gerade ein Insert angewendet wird auch Daten auslesen und das funktioniert meines Wissens nicht. ABER hier die Lösung. in xtFramework/classes/class.customer.php ca. ab Zeile 390 folgendes anpassen: $NextCustIDQuery = "SELECT max(customers_cid)+1 as nextCustID FROM xt_customers"; $RsNextCustID = $db->Execute($NextCustIDQuery); $intNextCustID = $RsNextCustID->fields['nextCustID']; $customer_data_array = array ('customers_gender' => $data['customers_gender'], 'customers_vat_id' => $data['customers_vat_id'], 'customers_vat_id_status' => $data['customers_vat_id_status'], 'customers_email_address' => $data['customers_email_address'], 'customers_default_currency' => $data['customers_default_currency'], 'customers_default_language' => $data['customers_default_language'], 'customers_cid' => $intNextCustID, 'shop_id' => $data['shop_id'] ); [/HTML] Damit wird immer die höchste Kundennummer eins hochgezählt und für einen neuen Kunden verwendet. Fragt mich jetzt aber nicht, was passiert, wenn bisherr keine Kundennummer vergeben wurde, oder noch kein Kunde angelegt ist. Wer Verbesserungen vorschlagen möchte kann dies natürlich gerne tun. Link to comment Share on other sites More sharing options...
mzanier Posted September 16, 2009 Report Share Posted September 16, 2009 Der Trigger auf den Insert ist eine gute Idee, bringt aber mehrere Probleme mit sich. 1.) Wenn die Datenbank bei einem Provider ist, dann bekommt man evtl. nicht die Rechte um sich Trigger anlegen zu können. 2.) Ich muss mit dem Trigger aus der gleichen Tabelle, auf welche gerade ein Insert angewendet wird auch Daten auslesen und das funktioniert meines Wissens nicht. ABER hier die Lösung. in xtFramework/classes/class.customer.php ca. ab Zeile 390 folgendes anpassen: $NextCustIDQuery = "SELECT max(customers_cid)+1 as nextCustID FROM xt_customers"; $RsNextCustID = $db->Execute($NextCustIDQuery); $intNextCustID = $RsNextCustID->fields['nextCustID']; $customer_data_array = array ('customers_gender' => $data['customers_gender'], 'customers_vat_id' => $data['customers_vat_id'], 'customers_vat_id_status' => $data['customers_vat_id_status'], 'customers_email_address' => $data['customers_email_address'], 'customers_default_currency' => $data['customers_default_currency'], 'customers_default_language' => $data['customers_default_language'], 'customers_cid' => $intNextCustID, 'shop_id' => $data['shop_id'] ); [/HTML] Damit wird immer die höchste Kundennummer eins hochgezählt und für einen neuen Kunden verwendet. Fragt mich jetzt aber nicht, was passiert, wenn bisherr keine Kundennummer vergeben wurde, oder noch kein Kunde angelegt ist. Wer Verbesserungen vorschlagen möchte kann dies natürlich gerne tun. bitte beachten das man solche änderungen über ein plugin durchführen sollte, da diese datei bei einem update wieder überschrieben wird. Link to comment Share on other sites More sharing options...
mfschorsch Posted September 17, 2009 Author Report Share Posted September 17, 2009 ok, danke für den Hinweis. Vielleicht weiß jemand wie man das plugin dafür realisiert. Dann bitte hier posten. Link to comment Share on other sites More sharing options...
mulix Posted August 7, 2010 Report Share Posted August 7, 2010 servus... kann es sein das die methode _buildCustomerDate in der xtFramework/classes/class.customer.php nur aktiv wird wenn über die shop-seite sich eine neuer kunde selber anlegt? Wenn ich über die admin oberfläche einen neuen kunden anlege wird der code nicht ausgeführt und das feld für customers_cid bleibt lehr. so long.... Link to comment Share on other sites More sharing options...
giller Posted August 11, 2010 Report Share Posted August 11, 2010 Hallo ich wollte das nochmal aufgreifen Mit der Automatischen Vergabe von Kundennummern könnte sich jemand bereit erklären dieses min Plugin zu schreiben. Habe ja grade das Update gemacht und natürlich habe ich die änderung überschrieben. Mit freundlichen Grüßen Roger Link to comment Share on other sites More sharing options...
amelie Posted October 15, 2010 Report Share Posted October 15, 2010 Könnte man nicht einfach die Kunden-ID aus dem Backend als Kundennummer definierten? Wir konfigurieren gerade unsere Rechnung über das Print Order Plugin und würden hier gerne diese Kunden ID anzeigen als Kundennummer. Spricht das was dagegen. Hier fehlt uns jetzt nur noch der Code damit die Nummer aufgerufen werden kann. Viele Grüße, Amelie Link to comment Share on other sites More sharing options...
oldbear Posted October 15, 2010 Report Share Posted October 15, 2010 hi, steht doch drin ? {txt key=TEXT_CUSTOMERS_ID} und {$order_data.customers_id} Grüsse Link to comment Share on other sites More sharing options...
ceekey Posted October 15, 2010 Report Share Posted October 15, 2010 Gibt es doch per Modul. Lg. Link to comment Share on other sites More sharing options...
locutus123 Posted January 7, 2012 Report Share Posted January 7, 2012 Hallo, die Lösung funzt bei mir gut. Nun soll die Kundennummer in der Anmeldemail mit eingetragen werden. Leider funktionier dies nicht: <h3>Ihre Kundennummer: {$intNextCustID}</h3> Welcher Parameter muss denn übergeben werden $customer_cid oder address_data.customer_cid funzt auch nicht. Danke Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.