statist Posted December 18, 2012 Report Share Posted December 18, 2012 Hallo zusammen, versuche verzweifelt Folgendes hinzubekommen: - Kunde kauft Gutschein - Kunde erhält in der Bestätigungsmail den Gutschein-Code, den er zum Einlösen des Gutscheins verwenden kann Hab mittlerweile schon mehrmals nach Anleitung das Modul installiert, angepasst und eingestellt. Die nach Anleitung generierten Codes werden aber nirgends ausgegeben, weder in der Bestätigungsmail noch im Login-Bereich des Kunden noch bei der Statusmail, dass die Zahlung eingegangen ist. Muss ich manuell noch eine Variable (die nicht in der Anleitung genannt ist) zur Ausgabe des Gutscheincodes in die Mail bzw in den Login-Bereich einbauen? Weiß jemand Rat? Vielen Dank im Voraus! Link to comment Share on other sites More sharing options...
Sentor77 Posted December 18, 2012 Report Share Posted December 18, 2012 Moin, die vom Modul generierten Codes dienen eher de rWeiterverarbeitung durch Mailprogramme oder ähnliches. Du kannst sie einfach als CSV exportieren. Eine ausgabe der generierten Codes gibt es nicht. Ich würde folgenderweise vorgehen: 1. Codes generieren 2. Codes als csv exportieren 3. Artikel Gutschein als Artikel mit Seriennummer markieren 4. csv über ein kleines Script in die xt_products_serials Datenbank importieren 5. Nach jedem Kauf erhält der Kunde jetzt seinen Gutscheincode (Seriennummer). LG Link to comment Share on other sites More sharing options...
statist Posted December 18, 2012 Author Report Share Posted December 18, 2012 Hallo Sentor77, danke für Deine Antwort. Klingt etwas kompliziert für einen Standardablauf... Hab die Codes nun als CSV vorliegen mit coupon_name, coupon_id und coupon_token_code. Müssen alle drei Spalten importiert werden oder reicht der Code an sich? Wie sieht ein solches Import-Script aus? Vielen Dank im Voraus! Link to comment Share on other sites More sharing options...
Sentor77 Posted December 18, 2012 Report Share Posted December 18, 2012 Importiere nur die Codes und lege dir deine Scriptdatei und die CSV in ein beliebiges Verzeichnis auf deinem Webserver. Das Script könnte ungefähr so aussehen: $db = new PDO("mysql:host=localhost;dbname=DEINDBNAME", "DEINBENUTZERNAME", "DEINPASSWORT"); $handle = fopen("serialCodes.csv", "r"); $tmp = array(); while(!feof($handle)) { $tmp[] = fgetcsv($handle); } $values = ""; foreach($tmp as $data) { $values .= "('".$data[0]."', 1, PRODUCTID),"; } $values = rtrim($values,","); $sql = " INSERT INTO `xt_products_coupons` (`serial_number`, `status`, `products_id`) VALUES ".$values."; "; $db->query($sql);[/PHP] Ersetze bitte in der ersten Zeile die Platzhalter mit deinen Benutzerdaten für die DB und "PRODUCTID" durch die ID des Gutschein Artikels. Sollte dann eigentlich recht schnell gehen. Ich überlege breits ob ich daraus nicht ein Plugin schreibe. LG Link to comment Share on other sites More sharing options...
statist Posted December 18, 2012 Author Report Share Posted December 18, 2012 Danke für den Code. Dh wenn ich einen Gutschein für 10 EUR und einen Gutschein für 20 EUR hab, muss ich 2x das Script anlegen? Ein Plugin dafür wär natürlich eine sehr feine Sache... Link to comment Share on other sites More sharing options...
Sentor77 Posted December 18, 2012 Report Share Posted December 18, 2012 Wenn du unterschiedliche Gutscheine verkaufen möchtest, musst du 2 Artikel anlegen, beide Gutscheine erstellen und für jeden die entsprechnden Codes generieren und das Script 2 mal ausführen. einmal mit der csv für Artikel 1 und der ID des Artikel 1 und einmal mit der csv für Artikel 2 und der ID für Artikel 2 LG Link to comment Share on other sites More sharing options...
Sentor77 Posted December 18, 2012 Report Share Posted December 18, 2012 Ich hba den Code noch einmal modifiziert. Mann kann ja nur alle Gutscheincodes exportieren und auch nicht wirklich entscheiden was exportiert werden soll. Diesbezüglich habe ich eine IF-Abfrage eingebaut, in der du GUTSCHEINID durch die gewünschte GutscheinId ersetzt (zb 2 für Gutschein im Wert von 20€ oder 6 für Gutschein im Wert von 10 € je nachdem welche id sie bekommen haben). Demnach musst du also die komplette Liste exportieren mit allen drei Zeilen. dann läuft es. Achso, der Index im Array hat sich auch geändert (aus 0 wurde 2). LG $db = new PDO("mysql:host=localhost;dbname=DEINDBNAME", "DEINBENUTZERNAME", "DEINPASSWORT"); $handle = fopen("serialCodes.csv", "r"); $tmp = array(); while(!feof($handle)) { $tmp[] = fgetcsv($handle); } $values = ""; foreach($tmp as $data) { if($data[1] == GUTSCHEINID) { $values .= "('".$data[2]."', 1, PRODUCTID),"; } } $values = rtrim($values,","); $sql = " INSERT INTO `xt_products_coupons` (`serial_number`, `status`, `products_id`) VALUES ".$values."; "; $db->query($sql);[/PHP] Link to comment Share on other sites More sharing options...
statist Posted December 18, 2012 Author Report Share Posted December 18, 2012 Danke für den aktualisierten Code. Hat soweit alles geklappt, die Seriennummer hätte wie hier beschrieben in die Mail eingebettet, wird aber nicht übermittelt. Auch in der Bestellübersicht wird die Seriennummer nicht angezeigt. An was kann's nun noch liegen? Vielen Dank im Voraus! Link to comment Share on other sites More sharing options...
Sentor77 Posted December 18, 2012 Report Share Posted December 18, 2012 Damit müsste ich mich ein wneig genauer befassen, werde ich aber wohl in diesem Jahr nicht mehr schaffen. Das Plugin werde ich schreiben. Ich habe gerade mit meinen Chefs gesprochen und sie würden diese Funktion auch gerne nutzen wollen. Ich kann dir ja dann bescheid geben wenn ich was entsprechendes fertig habe. Aber wie gesagt, in diesem Jahr wird das nichts mehr. LG Link to comment Share on other sites More sharing options...
Sentor77 Posted December 18, 2012 Report Share Posted December 18, 2012 So, letztes Update für heute. Es hatte sich der Fehlerteufel bei dem Tabellennamen eingeschlichen. Desweiteren habe ich eine Ausgabe eingebaut, damit man weiß ob alles geklappt hat. LG $db = new PDO("mysql:host=localhost;dbname=DEINDBNAME", "DEINBENUTZERNAME", "DEINPASSWORT"); $handle = fopen("testcoupons.csv", "r"); $tmp = array(); while(!feof($handle)) { $tmp[] = fgetcsv($handle); } $values = ""; foreach($tmp as $data) { if($data[1] == GUTSCHEINID) { $values .= "('".$data[2]."', 1, PRODUKTID),"; } } $values = rtrim($values,","); $sql = " INSERT INTO `xt_products_serials` (`serial_number`, `status`, `products_id`) VALUES ".$values."; "; if($res = $db->query($sql)) { echo "Alles gut!"; } else { echo "Da stimmt was nicht!"; }[/PHP] Link to comment Share on other sites More sharing options...
statist Posted December 18, 2012 Author Report Share Posted December 18, 2012 Vielen Dank für das Update. Die DB-Verbindung passt, allerdings kommt promt die Fehlermeldung. Kann das an der CSV-Datei liegen? Die einzelnen Begriffe sind der Reihe nach: coupon_name, coupon_id, coupon_token_code. Vielen Dank. Link to comment Share on other sites More sharing options...
Sentor77 Posted December 18, 2012 Report Share Posted December 18, 2012 Hast du beim exportieren der Datei den "Trenner" auf "," umgestellt? Der steht Standardmäßig auf ";". Sollte das nicht der Fall sein hast du 2 Möglichkeiten: 1. Noch einmal exportieren mit "," als Trennzeichen 2. den obigen Code an einer Stelle ändern $tmp[] = fgetcsv($handle);[/PHP] ändern in [PHP]$tmp[] = fgetcsv($handle,0,"TRENNZEICHEN");[/PHP] Link to comment Share on other sites More sharing options...
statist Posted December 18, 2012 Author Report Share Posted December 18, 2012 Nein, Trenner ist ";". Die exportierte Datei sieht so aus: "coupon_name";"coupon_id";"coupon_token_code" "25 EUR Gutschein";"1";"PD-G8M-1234" "25 EUR Gutschein";"1";"JS-ISV-1234" "25 EUR Gutschein";"1";"NC-7OF-1234" "25 EUR Gutschein";"1";"C2-MLC-1234" "25 EUR Gutschein";"1";"1I-MGQ-1234" "25 EUR Gutschein";"1";"V5-8SX-1234" "25 EUR Gutschein";"1";"4G-5DH-1234" "25 EUR Gutschein";"1";"IR-VEK-1234" "25 EUR Gutschein";"1";"C5-SE8-1234" "25 EUR Gutschein";"1";"4H-7Z6-1234"[/HTML] Link to comment Share on other sites More sharing options...
Sentor77 Posted December 18, 2012 Report Share Posted December 18, 2012 Dann siehe oben. Mein Script geht von "," aus. Ich habe im obigen Post erklärt was du jetzt machen kannst. LG Link to comment Share on other sites More sharing options...
statist Posted December 18, 2012 Author Report Share Posted December 18, 2012 Sorry, an dem Trenner liegt's auch nicht. Kommt immer noch die Fehlermeldung. Hast Du noch ne Idee? Link to comment Share on other sites More sharing options...
Sentor77 Posted December 19, 2012 Report Share Posted December 19, 2012 hmm..hast du den dateinamen angepasst? $handle = fopen("testcoupons.csv", "r");[/PHP] Bei mir läuftes einwandfrei. Habe beim Testen die fehler gefunden, die ich weiter oben bereits korrigiert habe. Schau dir noch mal die Array Einträge an. Entscheidend sind der Index $data[1] für die Gutschein ID und $data[2] für den Gutschein Code. Hast du alle Werte die ich in Großbuchstaben geschrieben habe dur entsprechende Werte ersetzt? DEINDBNAME, DEINBENUTZERNAME, DEINPASSWORT, GUTSCHEINID: Die ID des Gutscheins welcher dem Produkt zugewiesen werden soll PRODUKTID: Die Produkt ID des Produkts LG P.S. Welche Fehlermeldung kommt denn? Link to comment Share on other sites More sharing options...
statist Posted December 20, 2012 Author Report Share Posted December 20, 2012 Danke für Deine Antwort. Klappt leider immer noch nicht... habs auch mit Komma-Trennzeichen probiert. Es kommt die programmierte Fehlermeldung "Da stimmt was nicht". Die Gutschein ID bezieht sich schon auf "Kupons/Gutschein > Vorlagen > Kupon ID", richtig? Link to comment Share on other sites More sharing options...
Sentor77 Posted December 20, 2012 Report Share Posted December 20, 2012 Jetzt wirds langsam schwierig, ändere mal folgendes: $sql = " INSERT INTO ".TABLE_PRODUCTS_SERIAL." (`serial_number`, `status`, `products_id`) VALUES ".$values."; "; [/PHP] Vielleicht benutzt du ein einen anderen Prefix. Sag einmal, das Seriennummern Plugin hast du aber installiert, oder? Link to comment Share on other sites More sharing options...
statist Posted December 20, 2012 Author Report Share Posted December 20, 2012 Wie dumm: Die ` wurden beim CopyPaste durch ' ersetzt. Jetzt funktioniert's! Vielen vielen Dank für Deine tolle Hilfe! Wenn das Plugin fertig ist, gibst Du bitte Bescheid, ja Link to comment Share on other sites More sharing options...
Sentor77 Posted December 20, 2012 Report Share Posted December 20, 2012 Das freut mich. Habe ich gern gemacht. Wenn ich das ganze als Plugin fertig habe, melde ich mich noch einmal bei dir. LG und schöne Feiertage Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.