ich hatte das Problem, eine größere Anzahl von Newsletteradressen importieren zu müssen. Habe schnell ein kleines Modul geschrieben, das die Aufgabe löst. Here it is:
Code: Alles auswählen
<?php
// Newsletter Adressen- Batch Import / Delete
// 10.9.2004 Christian Boulanger
// http://www.panyasan.de
if (strstr($mode,"newsletter_batch")){
// ist überhaupt etwas eingegeben?
if(!trim($emails)) {
$msg = "Keine Adressen eingegeben!";
} else {
$lines = explode("\n",$emails);
$no=0; $dbl = 0; $invalid = array(); $miss=0;
if($mode=="newsletter_batch_import") $import = true;
foreach($lines as $line) {
$parts = explode(";",trim($line));
$email = trim($parts[0]);
$name = trim($parts[1]?$parts[1]:$email);
if($email and preg_match('/^[.\w-]+@([\w-]+\.)+[a-zA-Z]{2,6}$/', $email)){
/* Check if the recipient already exists */
$sql = "SELECT idnewsrcp
FROM ".$cfg["tab"]["news_rcp"]."
WHERE idclient='$client' and idlang='$lang' and email='$email'";
$db->query($sql);
if (!$db->next_record()){
// recipient does not exist
if($import){
// then import recipient
$newsrcpid = $db->nextid($cfg["tab"]["news_rcp"]);
$timestamp = date("Y-m-d H:i:s");
for ($i=0;$i<10;$i++){$r .= rand();}
$hash = md5($r);
$sql = 'INSERT INTO '.$cfg["tab"]["news_rcp"].'
SET
name="'.$name.'",
email="'.$email.'",
deactivated="0",
created="'.$timestamp.'",
lastmodified="'.$timestamp.'",
idclient="'.$client.'",
confirmed="1",
idlang="'.$lang.'",
hash="'.$hash.'",
idnewsrcp = "'.$newsrcpid.'"';
$db->query($sql);
$no++;
} else {
// or count as missing when deleting
$miss++;
}
} else {
// recipient does exist
if(!$import) {
// delete entry
$sql = "DELETE FROM ".$cfg["tab"]["news_rcp"]."
WHERE idclient='$client' and idlang='$lang' and email='$email'";
$db->query($sql);
$del++;
} else {
// or count as already existing
$dbl++;
}
}
} else {
// count as invalid email address
$invalid[] = $email;
}
} // endforeach
// final message
$inv = count($invalid);
if($import){
$msg = "$no Adresse(n) importiert, $dbl Doublette(n) und ".
"$inv ungültige Adresse(n) ignoriert.<br/><br/>";
} else {
$msg = "$del Adresse(n) gelöscht, $miss Adresse(n) war(en) nicht in der ".
"Datenbank vorhanden und $inv war(en) ungültig.";
}
if($inv) {
$msg.="<br/>Die folgenden Emailadressen waren ungültig:<br/>";
foreach($invalid as $email) $msg.= $email.", ";
}
} // endif
} // endif
?>
<h1>Newsletter- Adressenimport</h1>
<p> Bitte geben Sie Email-Adressen ein, eine pro Zeile. Sie können,
mit einem ";" getrennt, auch einen Namen angeben.</p>
<span style="color:red"><?php echo $msg;?></span>
<form action="front_content.php" method="post">
<input type="hidden" name="idcatart" value="<?php echo $idcatart; ?>">
<textarea cols="30" rows="20" name="emails"><?php echo $emails;?></textarea>
<select name="mode">
<option value="newsletter_batch_import" selected>Adressen importieren</option>
<option value="newsletter_batch_delete">Adressen löschen</option>
</select>
<input type="submit">
</form>
Hoffe es nützt.
Gruß,
Christian