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: Kundendaten bei Anmeldung in zweite Datenbank

    lexus

    • Neu im Forum
    • Beiträge: 29
    Hat einer eine Idee wie man bei der Registrierung eines Kunden die Felder : Vorname / Nachnahme / Emailadresse in eine zweite Datenbank eintragen lassen kann?

    Vorraussetzung ist das der Kunde ein Hacken gesetzt hat bei der Newsletteranmeldung.

    Grund hierfür ist ein externes Newsletter Programm welches auf diese zweite Datenbank zugreift.

    Besten Dank für die Hilfe



    Linkback: https://www.modified-shop.org/forum/index.php?topic=12807.0
    rechtstexte für onlineshop

    hendrik

    • Experte
    • Beiträge: 2.038
    Kundendaten bei Anmeldung in zweite Datenbank
    Antwort #1 am: 10. Mai 2011, 08:21:19
    Mit 'ner richtigen zweiten Datenbank ist kniffelig. Das Shopsystem öffnet beim jedem Aufruf eines Scripts die Datenbank und benutzt die Parameter global für jeden Zugriff. So zwischendurch noch 'ne andere Datenbank öffnen und dort was ablegen, dann wieder zurückschalten auf die Hauptdatenbank ..etc.. Vielleicht gibt's auch andere Möglichkeiten. So oder so. Es sind allerhand Eingriffe notwendig.

    Ich hätte da nen anderen Vorschlag.

    Warum lässt du dein Newslettersystem und den Shop nicht auf einer Datenbank laufen? Das wäre einfacher möglich. Problematisch wäre wenn namensgleiche Datenbanktabellen in beiden Systemen existieren. Unschön wenn Tabellen gemischt sind und keiner weiß mehr so recht welche zu welchem System gehört. Das kannst du aber leicht unter Kontrolle halten, jedenfalls leichter als deine Idee mit den separaten Datenbanken.

    Prinzipielle Vorgehensweise. Die Tabellennamen sind zentral hinterlegt in Datei includes/database_tables.php

    Du richtest einen Shop ein und versiehst (mit phpmyadmin) alle Shop-Tabellennamen um mit einem Präfix. Z.b. "customers" zu "shop_customers", "orders" zu "shop_orders" u.s.w. In genannter Datei database_tables.php korrigierst du ebenfalls die Tabellennamen. Jetzt können dein Shop und dein Newsletter die gleiche DB benutzen ohne Konflikte.

    EDIT: Ach ja. Das wesentliche hab ich vergessen.

    Datei newsletter.php, Zeile 160 ca.

    Finde:

    Code: PHP  [Auswählen]
    xtc_db_query("update ".TABLE_NEWSLETTER_RECIPIENTS." set mail_status = '1' where customers_email_address = '".xtc_db_input($_GET['email'])."'");
    Dort ein SQL-Kommando anfügen was die Mailadresse in dein anderes Newslettersystem einfügt.

    Code: PHP  [Auswählen]
    $email = xtc_db_input($_GET['email']);
    $sql = "insert into tabelle_vom_externen_newsletter ....etc.. feldname = '$email'....";
    xtc_db_query($sql);
    Gruß
    Hen

    lexus

    • Neu im Forum
    • Beiträge: 29
    Kundendaten bei Anmeldung in zweite Datenbank
    Antwort #2 am: 10. Mai 2011, 11:27:18
    Hallo Hen,

    vielen Dank das geht ja fix hier. ;-)

    Habe alles soweit hinbekommen und brauch hier noch Hilfe:

    Code: PHP  [Auswählen]
    $email = xtc_db_input($_GET['email']);
    $sql = "insert into tabelle_vom_externen_newsletter ....etc.. feldname = '$email'....";
    xtc_db_query($sql);
     
    Ich habe das mal so probiert aber das funktioniert nicht

    Code: PHP  [Auswählen]
    $email = xtc_db_input($_GET['email']);
    $sql = "insert into ".TABLE_MLM_SUB." fld_email = '$email'";
    xtc_db_query($sql);
     
    zusätzlich sollten da noch die Felder rein:

    fld_lastname für (customers_lastname)

    und:

    fld_firstname (customers_firsttname)

    wäre super, danke

    ut2k3

    • Moderator
    • Beiträge: 496
    • Geschlecht:
    Kundendaten bei Anmeldung in zweite Datenbank
    Antwort #3 am: 10. Mai 2011, 11:56:09
    Mit 'ner richtigen zweiten Datenbank ist kniffelig. Das Shopsystem öffnet beim jedem Aufruf eines Scripts die Datenbank und benutzt die Parameter global für jeden Zugriff. So zwischendurch noch 'ne andere Datenbank öffnen und dort was ablegen, dann wieder zurückschalten auf die Hauptdatenbank ..etc.. Vielleicht gibt's auch andere Möglichkeiten. So oder so. Es sind allerhand Eingriffe notwendig.
    [...]

    Das ist nicht wirklich ein Drama. Die Funktion xtc_db_connect bietet den Support per Parameter den Link-Identifier anzugeben

    Code: PHP  [Auswählen]
    $link = 'db_link'
    Diesen Support bietet auch die xtc_db_query oder xtc_db_perform, so dass man einfach bei Zugriff auf die extra Datenbank nur den Link-Identifier als weiteren Parameter angeben müsste.

    hendrik

    • Experte
    • Beiträge: 2.038
    Kundendaten bei Anmeldung in zweite Datenbank
    Antwort #4 am: 10. Mai 2011, 12:33:08
    Hast schon recht. Aber wenn man nicht weiß wie fit der Fragesteller ist. Gleich mit "Link-Identifier" und db_connect-Funktionen ankommen. Da achte ich mittlerweile etwas drauf welcher Lösungsweg leichter zu vermitteln ist und womit der andere hinterher am ehesten allein weiter kommt.

    @lexus
    In newsletter.php, Zeile 149, kurz vor dem Patch steht ne SQL-Abfrage ("select mail_key..."). Diese kannst du erweitern um die Abfrage der Felder customers_firstname und customers_lastname. Dann findest du (für deine neue sql-insert-Zeile) die Namen in den Variablen $check_mail['customers_firstname'] und $check_mail['customers_lastname'].
    Hast du die Konstante TABLE_MLM_SUB irgendwo definiert?

    Gruß
    Hen

    lexus

    • Neu im Forum
    • Beiträge: 29
    Kundendaten bei Anmeldung in zweite Datenbank
    Antwort #5 am: 10. Mai 2011, 12:46:53
    Bin schon ein bisschen weiter...

    Die Emailadresse wird schon mal eingetragen in der Datenbank das klappt.

    aber wie kriege ich firstname und lastname auch noch rein?

    Code: PHP  [Auswählen]
                            $email = xtc_db_input($_GET['email']);
                            $sql = "insert into tbl_mlm_sub (fld_email,fld_list,fld_lastname,fld_firstname) values ('$email','maxbulkmailer','$customers_lastname','$customers_firstname')";
                            xtc_db_query($sql);
     

    lexus

    • Neu im Forum
    • Beiträge: 29
    Kundendaten bei Anmeldung in zweite Datenbank
    Antwort #6 am: 10. Mai 2011, 15:55:42
    Habe es geschafft, danke für die Hilfe. ;-)

    MW

    • Fördermitglied
    • Beiträge: 418
    • Geschlecht:
    Kundendaten bei Anmeldung in zweite Datenbank
    Antwort #7 am: 10. Mai 2011, 16:42:53
    Prima, dass es funktioniert.  :mrgreen:

    Kannst du die Lösung bitte noch hier posten, vielen Dank.  :thumbs:

    lexus

    • Neu im Forum
    • Beiträge: 29
    Kundendaten bei Anmeldung in zweite Datenbank
    Antwort #8 am: 10. Mai 2011, 20:23:04
    Hier noch der ganze Block, ob dies sauberes PHP ist weiss ich nicht aber es funktioniert auf jeden Fall.

    So sieht der ganze Block aus:

    Code: PHP  [Auswählen]
    // Accountaktivierung per Emaillink
    if (isset ($_GET['action']) && ($_GET['action'] == 'activate')) {
            $check_mail_query = xtc_db_query("select mail_key, customers_firstname, customers_lastname from ".TABLE_NEWSLETTER_RECIPIENTS." where customers_email_address = '".xtc_db_input($_GET['email'])."'");
            if (!xtc_db_num_rows($check_mail_query)) {
                    $info_message = TEXT_EMAIL_NOT_EXIST;
            } else {
                    $check_mail = xtc_db_fetch_array($check_mail_query);
                    if (!$check_mail['mail_key'] == $_GET['key']) {
                            $info_message = TEXT_EMAIL_ACTIVE_ERROR;
                    } else {
                            xtc_db_query("update ".TABLE_NEWSLETTER_RECIPIENTS." set mail_status = '1' where customers_email_address = '".xtc_db_input($_GET['email'])."'");
                            $info_message = TEXT_EMAIL_ACTIVE;
                            $email = xtc_db_input($_GET['email']);
                            $customers_firstname = $check_mail['customers_firstname'];
                            $customers_lastname = $check_mail['customers_lastname'];
                            $sql = "insert into tbl_mlm_sub (fld_email,fld_list,fld_lastname,fld_firstname) values ('$email','xxx-newsletter','$customers_firstname','$customers_lastname')";
                            xtc_db_query($sql);

                    }
            }
    }
     
    gänderte Zeilen:

    aus:

    Code: PHP  [Auswählen]
    $check_mail_query = xtc_db_query("select mail_key from ".TABLE_NEWSLETTER_RECIPIENTS." where customers_email_address = '".xtc_db_input($_GET['email'])."'");
     
    wird:

    Code: PHP  [Auswählen]
    $check_mail_query = xtc_db_query("select mail_key, customers_firstname, customers_lastname from ".TABLE_NEWSLETTER_RECIPIENTS." where customers_email_address = '".xtc_db_input($_GET['email'])."'");
     
    unterhalb:

    Code: PHP  [Auswählen]
    $info_message = TEXT_EMAIL_ACTIVE;
     
    diesen ganzen block einfügen:

    Code: PHP  [Auswählen]
    $email = xtc_db_input($_GET['email']);
                            $customers_firstname = $check_mail['customers_firstname'];
                            $customers_lastname = $check_mail['customers_lastname'];
                            $sql = "insert into tbl_mlm_sub (fld_email,fld_list,fld_lastname,fld_firstname) values ('$email','xxx-newsletter','$customers_firstname','$customers_lastname')";
                            xtc_db_query($sql);
     
    Datei "/includes/databes_tables.php":

    Ganz unten noch zusätzlich die Tabelle definieren:

    Code: PHP  [Auswählen]
    define('TABLE_MLM_SUB', 'tbl_mlm_sub');
     

    hendrik

    • Experte
    • Beiträge: 2.038
    Kundendaten bei Anmeldung in zweite Datenbank
    Antwort #9 am: 11. Mai 2011, 06:23:46
    Ich würd's noch komplettieren. Deine Erweiterung trägt nur ein! Wenn sich einer aus dem Newsletter austrägt kriegt er trotzdem weiter lustig Newsletter von deinem externen Versandprogramm.

    In newsletter.php gibt's zwei Zeilen (Zeile 140 u. 184 ca.):

    Code: PHP  [Auswählen]
    delete from ".TABLE_NEWSLETTER_RECIPIENTS...
    Dort gehört jeweils noch 'ne entsprechende Zeile eingefügt.

    Gruß
    Hen

    lexus

    • Neu im Forum
    • Beiträge: 29
    Kundendaten bei Anmeldung in zweite Datenbank
    Antwort #10 am: 15. Mai 2011, 11:44:24
    Hier noch die Zeilen für das löschen.

    nach:

    Code: PHP  [Auswählen]
    $del_query = xtc_db_query("delete from ".TABLE_NEWSLETTER_RECIPIENTS." where customers_email_address ='".xtc_db_input($_POST['email'])."'");
     
    folgendes einfügen:

    Code: PHP  [Auswählen]
     $del_query = xtc_db_query("delete from tbl_mlm_sub where fld_email ='".xtc_db_input($_POST['email'])."'");
     
    und nach:

    Code: PHP  [Auswählen]
    $del_query = xtc_db_query("delete from ".TABLE_NEWSLETTER_RECIPIENTS." where  customers_email_address ='".xtc_db_input($_GET['email'])."' and mail_key = '".xtc_db_input($_GET['key'])."'");
    noch folgende Zeile:

    Code: PHP  [Auswählen]
    $del_query = xtc_db_query("delete from tbl_mlm_sub where fld_email ='".xtc_db_input($_POST['email'])."'");
     
    Vielen Dank für die Inputs und die Hilfe. ;-)

    Shop Hosting
    5 Antworten
    4351 Aufrufe
    29. Januar 2015, 13:31:02 von Bonsai
    5 Antworten
    3001 Aufrufe
    12. November 2015, 08:36:49 von webald
    16 Antworten
    8773 Aufrufe
    23. Mai 2016, 21:12:53 von Nail Art Garage
    2 Antworten
    3141 Aufrufe
    09. Juni 2011, 19:37:53 von RossiRat