Scripts
WLM/MSN contactpersonenlijst importeren
Hiermee kun je een .ctt bestand dat gevuld is met XML data uitlezen en de benodige gegevens(De emailadressen) in een MySQL database opslaan. De bouw: Erg simpel, geen core class, db class enzovoort gebruikt. Dit is een script dat je zo 123 kunt gebruiken. Maar je moet natuurlijk wel de array $settings goed invullen. De werking van het script: We proberen een XML bestand van WLM of MSN te parsen en halen de emailadressen eruit en voegen die, na een aantal controles toe in de database. Controles: - Is het emailadres geldig? - Komt het emailadres al eens voor in de tabel? Commentaar is welkom, zie jij iets wat beter kan? Meld het!
wlmmsn-contactpersonenlijst-importeren
<?php
/**
* @author ID van Beek
* @copyright 2007
* @PHPversion 5.2.0+
* @version 1.0
*/
/*
SQL:
CREATE TABLE `syncie_emails` (
`emails_emailadres` VARCHAR( 255 ) NOT NULL
) ENGINE = MYISAM ;
*/
error_reporting(0);
// Geen fouten, we hebben onze eigen meldingen.
$settings = array(
'dbHost' => '',
'dbUser' => '',
'dbPass' => '',
'dbName' => '',
'dbTbl' => '',
'file' => ''
);
// De instellingen.
$content = null;
// De variabele die het resultaat van het script zal bevatten.
$connID = mysql_connect($settings['dbHost'], $settings['dbUser'], $settings['dbPass']) or die('<b style="color:#FF0000">Databasefout(' . mysql_errno() . '):</b> ' . mysql_error());
// De datbaseverbinding
mysql_select_db($settings['dbName'], $connID) or die('<b style="color:#FF0000">Databasefout(' . mysql_errno() . '):</b> ' . mysql_error());
// De database-selectie.
$sourceFile = file_get_contents($settings['file']) or die('<b style="color:#FF0000">Systeemfout:</b> Kan het XML-bestand niet vinden.');
// We lezen het bestand uit.
$XML = new SimpleXMLElement($sourceFile);
// Start de XML parser en parse het bestand
$validEmails = 0;
// Het aantal geldigde emailadressen.
$queryString = "INSERT INTO " . $settings['dbTbl'] . " (emails_emailadres) VALUES ";
// Maak de query, hieronder zullen we heb uitbreiden.
foreach($XML->service[0]->contactlist[0] as $email){
// Loop door alle emailadressen, service is de 2e XML tag en contactlist de 3e tag.
if(filter_var($email, FILTER_VALIDATE_EMAIL)){
// Valideer het emailadres
$query = mysql_query("SELECT COUNT(1) FROM " . $settings['dbTbl'] . " WHERE emails_emailadres = '" . $email . "'") or die('<b style="color:#FF0000">Databasefout(' . mysql_errno() . '):</b> ' . mysql_error());
// De query, hiermee kijken we of het emailadres al in de DB staat.
$emailExists = mysql_result($query, 0);
// Haal het aantal resultaten op dat dit emailadres bevat.
if($emailExists == 0){
// Als het emailadres nog niet bestaat.
$queryString .= "('" . $email . "'), ";
++$validEmails;
// Verhoog het aantal geldige emailadressen met 1
}
}
}
if($validEmails > 0){
// Kijk of er meer dan 1 emailadres valide is.
$queryString = rtrim($queryString, ', ');
// Verwijder de laatste komma.
mysql_query($queryString, $connID) or die('<b style="color:#FF0000">Databasefout(' . mysql_errno() . '):</b> ' . mysql_error() . '
<br />
In query: ' . $queryString . '
<br />
Met ' . $validEmails . ' geldige emailadressen.');
// Voer de query uit.
}
if($validEmails == 0){
$content .= 'Er zijn geen emailadressen toegevoegd aan de database.
<br />
<br />
<b>Mogelijke oorzaken:</b>
<br />
<ul>
<li>Het bestand is leeg.</i>
<li>De XML-code is niet valide.</li>
<li>De emailadressen zijn ongeldig.</li>
<li>Alle emailadressen staan al in de database.</li>
</ul>';
// Laat het resultaat zien.
}else{
$content .= 'Er is/zijn in totaal ' . $validEmails . ' emailadres(sen) toegevoegd aan de database.';
// Laat het resultaat zien.
}
mysql_close($connID);
// Sluit de databaseverbinding
echo '
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="author" content="ID van Beek" />
<title>WLM/MSN contactpersonenlijst importeren</title>
</head>
<body>
' . $content . '
</body>
</html>';
?>
Reacties
0