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
Nog geen reacties.