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: Customers Adresse auslesen

    Buggyboy

    • Fördermitglied
    • Beiträge: 968
    • Geschlecht:
    Customers Adresse auslesen
    am: 12. Februar 2017, 09:42:25
    Hallo liebe Leute!

    Ich hab bei mir im Archiv noch ne Datei gefunden um alle Kunden als CSV Datei zu speichern.
    Jetzt wollte ich die Tabelle um die Strasse, Ort und PLZ erweitern.
    Leider scheitere ich daran, das alles ausgelesen wird.
    Es wird mir nur die Tabellenüberschrift ausgegeben.

    Die Adresse und der Ort stehen ja auch in der Tabelle address_book.
    Die Datei liest aber nur die customers Tabelle aus.
    Wie müßte ich die Abfrage erweitern, damit auch die andere Tabell ausgelesen wird?

    Hier die Datei customers.php die man einfach ins admin/includes/modules/export lädt und dann im Admin einstellen kann:

    Code: PHP  [Auswählen]
    <?php
    /* -----------------------------------------------------------------------------------------
       File: customers.php
       Version: 1.01

       http://www.sirconic-group.de

       Copyright (c) 2003 XT-Commerce
       -----------------------------------------------------------------------------------------
       based on:
       (c) 2000-2001 The Exchange Project  (earlier name of osCommerce)
       (c) 2002-2003 osCommerce(cod.php,v 1.28 2003/02/14); www.oscommerce.com
       (c) 2003      nextcommerce (invoice.php,v 1.6 2003/08/24); www.nextcommerce.org
       (c) 2003      XT-Commerce (billiger.php; www.(( Wir dulden keine kommerziellen Werbelinks - Bitte <a href="index.php?topic=3013.0">Forenregeln</a> beachten! ))

       Released under the GNU General Public License
       ---------------------------------------------------------------------------------------*/

    defined( '_VALID_XTC' ) or die( 'Direct Access to this location is not allowed.' );

    define('MODULE_CUSTOMERS_TEXT_DESCRIPTION', 'Export - Kundendaten(Semikolon getrennt)<br><b>Format:</b><br>"Geschlecht","Vorname","Nachname","Adresse","PLZ","Ort","EMail","Telefon","Fax","Newsletter"');
    define('MODULE_CUSTOMERS_TEXT_TITLE', 'Kundendaten - CSV');
    define('MODULE_CUSTOMERS_FILE_TITLE' , '<hr noshade>Dateiname');
    define('MODULE_CUSTOMERS_FILE_DESC' , 'Geben Sie einen Dateinamen ein, falls die Exportadatei am Server gespeichert werden soll.<br>(Verzeichnis export/)');
    define('MODULE_CUSTOMERS_STATUS_DESC','Modulstatus');
    define('MODULE_CUSTOMERS_STATUS_TITLE','Status');
    define('EXPORT_YES','Nur Herunterladen');
    define('EXPORT_NO','Am Server Speichern');
    define('EXPORT','Bitte den Sicherungsprozess AUF KEINEN FALL unterbrechen. Dieser kann einige Minuten in Anspruch nehmen.');
    define('EXPORT_TYPE','<hr noshade><b>Speicherart:</b>');
    define('EXPORT_STATUS_TYPE','<hr noshade><b>Kundengruppe:</b>');
    define('EXPORT_STATUS','Bitte w&auml;hlen Sie die Kundengruppe, die Basis f&uuml;r den Exportierten Preis bildet. (Falls Sie keine Kundengruppenpreise haben, w&auml;hlen Sie <i>Gast</i>):</b>');
    // include needed functions


      class customers {
        var $code, $title, $description, $enabled;


        function customers() {
          global $order;

          $this->code = 'customers';
          $this->title = MODULE_CUSTOMERS_TEXT_TITLE;
          $this->description = MODULE_CUSTOMERS_TEXT_DESCRIPTION;
          $this->sort_order = MODULE_CUSTOMERS_SORT_ORDER;
          $this->enabled = ((MODULE_CUSTOMERS_STATUS == 'True') ? true : false);

        }


        function process($file) {

    //Select-Fragement fuer die Kundengruppenfilterung
            if ($_POST[status] == '999999') {
                    $filtercode='';
            }
            else {
                    $filtercode=' where customers_status= '.$_POST[status];
            }

            @xtc_set_time_limit(0);
            $schema = 'Anrede;Vorname;Nachname;Strasse;Plz;Ort;E-Mail;Telefon;Fax;Newsletter' . "\n";
            $export_query =xtc_db_query("SELECT
                                    customers_gender,
                                    customers_firstname,
                                    customers_lastname,
                                    customers_street_address,
                                    customers_postcode,
                                    customers_city,
                                    customers_email_address,
                                    customers_telephone,
                                    customers_fax,
                                    customers_newsletter
                             FROM
                                    customers
                             "
    .$filtercode." ");


            while ($customers = xtc_db_fetch_array($export_query)) {



                //create content
                $schema .= "\"".
                           $customers['customers_gender'] . "\",\"".
                           $customers['customers_firstname'] . "\",\"".
                           $customers['customers_lastname'] . "\",\"".
                           $customers['customers_street_address'] . "\",\"".
                           $customers['customers_postcode'] . "\",\"".
                           $customers['customers_city'] . "\",\"".
                           $customers['customers_email_address'] . "\",\"".
                           $customers['customers_telephone'] . "\",\"".
                           $customers['customers_fax'] . "\",\"".
                           $customers['customers_newsletter'] . "\"".
                            "\n";
         
            }
            // create File
              $fp = fopen(DIR_FS_DOCUMENT_ROOT.'export/' . $file, "w+");
              fputs($fp, $schema);
              fclose($fp);


          switch ($_POST['export']) {
            case 'yes':
                // send File to Browser
                $extension = substr($file, -3);
                $fp = fopen(DIR_FS_DOCUMENT_ROOT.'export/' . $file,"rb");
                $buffer = fread($fp, filesize(DIR_FS_DOCUMENT_ROOT.'export/' . $file));
                fclose($fp);
                header('Content-type: application/x-octet-stream; charset=ISO-8859-15');
                header('Content-disposition: attachment; filename=' . $file);
                echo $buffer;
                exit;

            break;
            }

        }

        function display() {

    // Verfuegbare Kundengruppen aus Datenbank laden
        $customers_statuses_array = xtc_get_customers_statuses();

    // Jetzt noch spezialgruppe fuer "Alle Kunden" hinzufuegen
        $customers_statuses_array[] = array ('id' => '999999', 'text' => 'Alle Kunden', 'csa_public' => $customers_statuses[''], 'csa_image' => $customers_statuses[''], 'csa_discount' => $customers_statuses[''], 'csa_ot_discount_flag' => $customers_statuses[''], 'csa_ot_discount' => $customers_statuses[''], 'csa_graduated_prices' => $customers_statuses['']);


        return array('text' =>  EXPORT_STATUS_TYPE.'<br>'.
                                EXPORT_STATUS.'<br>'.
                                xtc_draw_pull_down_menu('status',$customers_statuses_array, '1').'<br>'.
                                EXPORT_TYPE.'<br>'.
                                EXPORT.'<br>'.
                                    xtc_draw_radio_field('export', 'no',false).EXPORT_NO.'<br>'.
                                xtc_draw_radio_field('export', 'yes',true).EXPORT_YES.'<br>'.
                                '<br>' . xtc_button(BUTTON_EXPORT) .
                                xtc_button_link(BUTTON_CANCEL, xtc_href_link(FILENAME_MODULE_EXPORT, 'set=' . $_GET['set'] . '&module=customers')));


        }

        function check() {
          if (!isset($this->_check)) {
            $check_query = xtc_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_CUSTOMERS_STATUS'");
            $this->_check = xtc_db_num_rows($check_query);
          }
          return $this->_check;
        }

        function install() {
          xtc_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value,  configuration_group_id, sort_order, set_function, date_added) values ('MODULE_CUSTOMERS_FILE', 'customers.csv',  '6', '1', '', now())");
          xtc_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value,  configuration_group_id, sort_order, set_function, date_added) values ('MODULE_CUSTOMERS_STATUS', 'True',  '6', '1', 'xtc_cfg_select_option(array(\'True\', \'False\'), ', now())");
    }

        function remove() {
          xtc_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
        }

        function keys() {
          return array('MODULE_CUSTOMERS_STATUS','MODULE_CUSTOMERS_FILE');
        }

      }
    ?>

    Vielleicht kann mir ja jemand auf die Sprünge helfen.

    Was ich gemacht habe:

    Code: PHP  [Auswählen]
    $schema = 'Anrede;Vorname;Nachname;Strasse;Plz;Ort;E-Mail;Telefon;Fax;Newsletter' . "\n";

    Erweitert um Strasse,PLZ und Ort

    Code: PHP  [Auswählen]
    $export_query =xtc_db_query("SELECT
                                    customers_gender,
                                    customers_firstname,
                                    customers_lastname,
                                    customers_street_address,
                                    customers_postcode,
                                    customers_city,
                                    customers_email_address,
                                    customers_telephone,
                                    customers_fax,
                                    customers_newsletter
                             FROM
                                    customers
                             "
    .$filtercode." ");

    Erweitert um:

    Code: PHP  [Auswählen]
    customers_street_address,customers_postcode,customers_city,

    Code: PHP  [Auswählen]
    //create content
                $schema .= "\"".
                           $customers['customers_gender'] . "\",\"".
                           $customers['customers_firstname'] . "\",\"".
                           $customers['customers_lastname'] . "\",\"".
                           $customers['customers_street_address'] . "\",\"".
                           $customers['customers_postcode'] . "\",\"".
                           $customers['customers_city'] . "\",\"".
                           $customers['customers_email_address'] . "\",\"".
                           $customers['customers_telephone'] . "\",\"".
                           $customers['customers_fax'] . "\",\"".
                           $customers['customers_newsletter'] . "\"".
                            "\n";

    Erweitert um:

    Code: PHP  [Auswählen]
                           $customers['customers_street_address'] . "\",\"".
                           $customers['customers_postcode'] . "\",\"".
                           $customers['customers_city'] . "\",\"".

    Nehme ich alles wieder raus funktioniert die Datei wie sie soll.
    Es werden alle Daten ausgelesen und in eine CSV Datei gespeichert...

    LG
    Peter

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

    web28

    • modified Team
    • Beiträge: 9.404
    Re: Customers Adresse auslesen
    Antwort #1 am: 12. Februar 2017, 11:14:12
    Hallo Peter,

    wie man das macht findest Du z.B. in der includes/contact_us.php (Shop 2.x) ca. Zeile 185

    Die Ergänzung der fehlenden c.customers_xxx sollte kein Problem darstellen.

    Hinweis: Da eine Kunden mehrere Adressen speichern kann wird hier die Standardadresse ausgelesen

    Wenn man alle Adressen benötigt wird es komplizierter.

    Gruss Web28

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: Customers Adresse auslesen
    Antwort #2 am: 12. Februar 2017, 11:59:24
    Hallo Peter,

    für "modified eCommerce Shopssoftware v2.0.2.1 rev 10607 dated: 2017-01-25" kannst Du folgenden Query (abgewandelt aus 'admin/includes/modules/customers_edit.php') Testen, was Du nicht brauchst nimmst Du einfach aus dem Query raus.

    Code: PHP  [Auswählen]
                $customers_query = xtc_db_query("SELECT c.customers_id,
                                                        c.customers_cid,
                                                        c.customers_vat_id,
                                                        c.customers_vat_id_status,
                                                        c.customers_status,
                                                        c.customers_dob,
                                                        c.customers_email_address,
                                                        c.customers_default_address_id,
                                                        c.customers_telephone,
                                                        c.customers_fax,
                                                        c.customers_newsletter,                                              
                                                        a.entry_gender AS customers_gender,
                                                        a.entry_firstname AS customers_firstname,
                                                        a.entry_lastname AS customers_lastname,
                                                        a.entry_company AS customers_company,
                                                        a.entry_street_address AS customers_street_address,
                                                        a.entry_suburb AS customers_suburb,
                                                        a.entry_postcode AS customers_postcode,
                                                        a.entry_city AS customers_city,
                                                        a.entry_state AS customers_state,
                                                        a.entry_country_id AS customers_country_id,
                                                        a.entry_zone_id AS customers_zone_id,
                                                        cgc.amount AS customers_amount,
                                                        c.member_flag AS customers_member_flag ,
                                                        c.payment_unallowed AS customers_payment_unallowed,
                                                        c.shipping_unallowed AS customers_shipping_unallowed,
                                                        a.address_book_id AS customers_book_id                                                  
                                                   FROM "
    .TABLE_CUSTOMERS." c
                                              LEFT JOIN "
    .TABLE_ADDRESS_BOOK." a
                                                        ON c.customers_default_address_id = a.address_book_id
                                                           AND a.customers_id = c.customers_id
                                              LEFT JOIN "
    .TABLE_COUPON_GV_CUSTOMER." cgc
                                                     ON c.customers_id = cgc.customer_id"

                                               );

                while ($customers = xtc_db_fetch_array($customers_query)) {
                  echo '<pre>';          
                   print_r($customers);
                  echo '</pre>';
                }

    Gruss
    Hanspeter

    Buggyboy

    • Fördermitglied
    • Beiträge: 968
    • Geschlecht:
    Re: Customers Adresse auslesen
    Antwort #3 am: 12. Februar 2017, 12:58:07
    Hi!

    Ich habe das jetzt so eingefügt und etwas abgeändert nach dem Vorbild:

    Code: PHP  [Auswählen]
    $export_query = xtc_db_query("SELECT c.customers_id,
                                                        c.customers_cid,
                                                        c.customers_vat_id,
                                                        c.customers_vat_id_status,
                                                        c.customers_status,
                                                        c.customers_dob,
                                                        c.customers_email_address,
                                                        c.customers_default_address_id,
                                                        c.customers_telephone,
                                                        c.customers_fax,
                                                        c.customers_newsletter,                                              
                                                        a.entry_gender AS customers_gender,
                                                        a.entry_firstname AS customers_firstname,
                                                        a.entry_lastname AS customers_lastname,
                                                        a.entry_company AS customers_company,
                                                        a.entry_street_address AS customers_street_address,
                                                        a.entry_suburb AS customers_suburb,
                                                        a.entry_postcode AS customers_postcode,
                                                        a.entry_city AS customers_city,
                                                        a.entry_state AS customers_state,
                                                        a.entry_country_id AS customers_country_id,
                                                        a.entry_zone_id AS customers_zone_id,
                                                        cgc.amount AS customers_amount,
                                                        c.member_flag AS customers_member_flag ,
                                                        c.payment_unallowed AS customers_payment_unallowed,
                                                        c.shipping_unallowed AS customers_shipping_unallowed,
                                                        a.address_book_id AS customers_book_id                                                  
                                                   FROM "
    .TABLE_CUSTOMERS." c
                                              LEFT JOIN "
    .TABLE_ADDRESS_BOOK." a
                                                        ON c.customers_default_address_id = a.address_book_id
                                                           AND a.customers_id = c.customers_id
                                              LEFT JOIN "
    .TABLE_COUPON_GV_CUSTOMER." cgc
                                                     ON c.customers_id = cgc.customer_id
                                          "
    .$filtercode."    " );

                while ($customers = xtc_db_fetch_array($export_query)) {

    Er holt zwar jetzt zuviele Daten, aber alles das was ich wollte auch... ;-}}}
    Vielen Dank Euch beiden.

    Peter

    Buggyboy

    • Fördermitglied
    • Beiträge: 968
    • Geschlecht:
    Re: Customers Adresse auslesen
    Antwort #4 am: 12. Februar 2017, 13:09:11
    Ich hab jetzt einige Abfragen rausgenommen.

    Falls die Datei jemand gebrauchen kann um seine Kundendaten als CSV-Datei weiterzuverarbeiten, z.B. für Newsletter, Versanddienstleister oder ähnliches füge ich die Datei hier mal an.

    Einfach ins admin/includes/modules/export kopieren und im Backend unter Module/Export auswählen und einstellen.

    Die Abfrage kann man dann sich ja selbst so hinbasteln wie man es braucht.
    Original war halt nur Geschlecht/Anrede,Vorname,Nachname,E-Mail,Telephone,Fax und Newsletter eingetragen
    Jetzt auch mit Strasse,Plz und Ort

    Sollte auch abwärtskompatible sein, da mal für XTC geschrieben...

    LG
    peter

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.369
    • Geschlecht:
    Re: Customers Adresse auslesen
    Antwort #5 am: 12. Februar 2017, 15:13:58
    Ich denke hiermit hättest du die modernere Vorlage für deinen Kunden-Export: MODUL: Kundenexport

    Grüße

    Torsten

    Buggyboy

    • Fördermitglied
    • Beiträge: 968
    • Geschlecht:
    Re: Customers Adresse auslesen
    Antwort #6 am: 12. Februar 2017, 16:13:56
    Hallo Torsten!

    Ja, da hast Du recht.
    Ist besser als das hier.
    Und funzt.

    Allerdings werden nur Kunden mit Kundennummer ausgegeben.
    Aber da werden bei diesem Script hier auch nur die mit Kundennummer ausgegeben.

    Danke.
    Peter

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.369
    • Geschlecht:
    Re: Customers Adresse auslesen
    Antwort #7 am: 12. Februar 2017, 16:41:47
    Du kannst die SQL-Befehle im von mir verlinkten Export-Modul ja auch noch beliebig erweitern, so wie du das bei deinem schon gemacht hast. ;-)

    Grüße

    Torsten

    Buggyboy

    • Fördermitglied
    • Beiträge: 968
    • Geschlecht:
    Re: Customers Adresse auslesen
    Antwort #8 am: 12. Februar 2017, 18:06:44
    Nee, alles gut.

    Macht was es soll.
    Das passiert wenn man nen lokalen und den online Shop gleichzeitig offen hat... ;-}
    Hatte das Modul nur im lokalen Shop und da sind weniger Kunden drin.

    LG
    peter
    rechtstexte für onlineshop
    9 Antworten
    7441 Aufrufe
    16. Februar 2012, 13:27:42 von Matt
    4 Antworten
    4184 Aufrufe
    13. April 2015, 12:21:04 von DyO13
    14 Antworten
    6387 Aufrufe
    19. März 2013, 21:44:34 von jannemann
    1 Antworten
    1723 Aufrufe
    31. März 2016, 08:21:20 von webald
               
    anything