Antwort #4 am: 07. Dezember 2014, 22:04:10
Hallo zusammen,
danke für die genaue Fehlerbeschreibung.
Hier ein Lösungsansatz:
admin/gv_mail.php
suche:
switch ($_POST['customers_email_address']) {
case '***':
$mail_query = xtc_db_query("select customers_firstname, customers_lastname, customers_email_address from " . TABLE_CUSTOMERS);
$mail_sent_to = TEXT_ALL_CUSTOMERS;
break;
case '**D':
$mail_query = xtc_db_query("select customers_firstname, customers_lastname, customers_email_address from " . TABLE_CUSTOMERS . " where customers_newsletter = '1'");
$mail_sent_to = TEXT_NEWSLETTER_CUSTOMERS;
break;
default:
$customers_email_address = xtc_db_prepare_input($_POST['customers_email_address']);
$mail_query = xtc_db_query("select customers_firstname, customers_lastname, customers_email_address from " . TABLE_CUSTOMERS . " where customers_email_address = '" . xtc_db_input($customers_email_address) . "'");
$mail_sent_to = $_POST['customers_email_address'];
if ($_POST['email_to']) {
$mail_sent_to = $_POST['email_to'];
}
break;
}
ersetzen mit:
switch ($_POST['customers_email_address']) { case '***': $mail_sent_to = TEXT_ALL_CUSTOMERS
; $where = "account_type = 0"; break; case '**D': $mail_sent_to = TEXT_NEWSLETTER_CUSTOMERS
; $where = "account_type = 0 AND customers_newsletter = 1"; break; default: $mail_sent_to = !empty($_POST['email_to']) ?
$_POST['email_to'] : $_POST['customers_email_address']; $where = "customers_email_address = '" . xtc_db_input
($_POST['customers_email_address']) . "'"; break; } $mail_query = xtc_db_query
("
SELECT customers_firstname, customers_lastname, customers_email_address
FROM " . TABLE_CUSTOMERS
. "
WHERE $where
GROUP BY customers_email_address"); Damit wird an jede E-Mailadresse nur eine Mail geschickt und Gast-Konten werden bei *** (an alle Kunden) und **D (Newsletter-Kunden~!=doi) ignoriert.
Bitte testet die Änderungen, damit ich diese übernehmen kann.
Hier mal ein paar Datenbankabfragen um doppelt verschickte Gutscheine aufzulisten:
SELECT *
FROM coupon_email_track
WHERE (emailed_to, date_sent) IN (
SELECT emailed_to,date_sent
FROM coupon_email_track
GROUP BY emailed_to,DATE_FORMAT(date_sent, '%Y%m%d%H')
HAVING COUNT(*)>1 )
SELECT COUNT(emailed_to) AS anzahl,
cmt.emailed_to,
GROUP_CONCAT(cmt.coupon_id) AS id,
GROUP_CONCAT(c.coupon_code) AS code,
GROUP_CONCAT(c.coupon_amount) AS amount,
GROUP_CONCAT(c.coupon_active) AS active
FROM coupon_email_track AS cmt
LEFT JOIN coupons AS c ON c.coupon_id = cmt.coupon_id
WHERE emailed_to NOT LIKE '%@shopname.de'
GROUP BY emailed_to,DATE_FORMAT(date_sent, '%Y%m%d%H')
HAVING COUNT(*)>1
ORDER BY date_sent
einen schönen Wochenstart,
h-h-h