Export von Kundendaten (mail, sprache)
Verfasst: 28.09.2011, 20:55
Hallo zusammen
Ich möchte gerne eine allgemeine Mail an alle bestehenden Kunden versenden, unabhängig davon ob diese nun Newsletter wünschen oder nicht.
Das Problem besteht darin, dass ich die Sprache des Kunden in der Tabelle Customer nicht ausfindig machen kann, wenn kein Newsletter abonniert wurde (mail_language_id=0). Somit bin ich auf die Idee gestossen, dass ich diese Informationen aus der Tabelle orders (orders_language) ziehen könnte.
Verschiedenste Versuche sind jedoch leider gescheitert....
Irgendwie ist der SQL-String falsch aufgesetzt (hab's auch schon mit LEFT JOIN versucht). Das Problem ist ja, dass ich irgendwie auch die Kunden haben möchte, die noch keine Bestellung gemacht haben (dann halt ohne Spracherkennung).
Ansatz 1:
Ansatz 2:
Irgendwie komme ich einfach nicht weiter....
Weiss hier jemand Rat?
Gruss
Päde
Ich möchte gerne eine allgemeine Mail an alle bestehenden Kunden versenden, unabhängig davon ob diese nun Newsletter wünschen oder nicht.
Das Problem besteht darin, dass ich die Sprache des Kunden in der Tabelle Customer nicht ausfindig machen kann, wenn kein Newsletter abonniert wurde (mail_language_id=0). Somit bin ich auf die Idee gestossen, dass ich diese Informationen aus der Tabelle orders (orders_language) ziehen könnte.
Verschiedenste Versuche sind jedoch leider gescheitert....
Irgendwie ist der SQL-String falsch aufgesetzt (hab's auch schon mit LEFT JOIN versucht). Das Problem ist ja, dass ich irgendwie auch die Kunden haben möchte, die noch keine Bestellung gemacht haben (dann halt ohne Spracherkennung).
Ansatz 1:
Code: Alles auswählen
$db =& oosDBGetConn();
$db2 =& oosDBGetConn();
oosSetTimeLimit(0);
$output = 'gender;lastname;firstname;email_address;language' . "\n";
$sql = "SELECT customers_id, customers_gender, customers_firstname, customers_lastname, customers_email_address, mail_languages_id
FROM " . $oosDBTable['customers] . "
ORDER BY customers_lastname ASC";
$sql = "SELECT
c.customers_id, c.customers_gender, c.customers_firstname, c.customers_lastname, c.customers_email_address, c.mail_languages_id, o.orders_language
FROM
orders o,
customers c
WHERE
c.customers_id = o.customers_id
ORDER BY
c.customers_id ASC";
$customers_result = $db->Execute($sql);
while ($customers = $customers_result->fields) {
if ($customers['customers_id] != $temp_cid) {
$temp_cid = $customers['customers_id];
$output .= $customers['customers_gender] . ';' . $customers['customers_lastname] . ';' . $customers['customers_firstname] . ';' . $customers['customers_email_address] . ';';
switch ($customers['mail_languages_id]) {
case '1':
$output .= 'de' . "\n";
$customers_result->MoveNext();
break;
case '2':
$output .= 'en' . "\n";
$customers_result->MoveNext();
break;
case '7':
$output .= 'fr' . "\n";
$customers_result->MoveNext();
break;
default:
$sql2 = "SELECT orders_language
FROM " . $oosDBTable['orders] . "
WHERE customers_id='" . intval($customers['customers_id]) . "'";
$orders_result = $db2->Execute($sql2);
$orders = $orders_result->fields;
while ($customers['customers_id] == $temp_cid) {
if ($customers['mail_languages_id] == '') {
$customers_result->MoveNext();
}
}
$output .= intval($customers['customers_id]);
break;
}
$output .= "\n";
}
}
$export_file = OOS_ADMIN_PATH . 'backups/export_customerlist.csv';
if ($fp = fopen($export_file, 'w')) {
fputs($fp, $output);
fclose($fp);
}
Ansatz 2:
Code: Alles auswählen
$sql = "SELECT
c.customers_id, c.customers_gender, c.customers_firstname, c.customers_lastname, c.customers_email_address, c.mail_languages_id, o.orders_language
FROM
orders o,
customers c
WHERE
c.customers_id = o.customers_id
ORDER BY
c.customers_id ASC";
$customers_result = $db->Execute($sql);
while ($customers = $customers_result->fields) {
if ($customers['customers_id] != $temp_cid) {
$temp_cid = $customers['customers_id];
$output .= $customers['customers_gender] . ';' . $customers['customers_lastname] . ';' . $customers['customers_firstname] . ';' . $customers['customers_email_address] . ';';
switch ($customers['mail_languages_id]) {
case '1':
$output .= 'de' . "\n";
break;
case '2':
$output .= 'en' . "\n";
break;
case '7':
$output .= 'fr' . "\n";
break;
default:
$output .= $orders['orders_language];
}
$customers_result->MoveNext();
}
Irgendwie komme ich einfach nicht weiter....
Weiss hier jemand Rat?
Gruss
Päde