import_lijst_van_nederlandse_plaatsen
13 november 2010
<!DOCTYPE html>
<html lang="nl">
	<head>
		<meta charset="utf-8" />
	</head>
	<h1>Import</h1>
	<?PHP
	$mysql_server   = isset($_POST['mysql_server']) ? $_POST['mysql_server'] : "localhost";
	$mysql_username = isset($_POST['mysql_username']) ? $_POST['mysql_username'] : "root";
	$mysql_password = isset($_POST['mysql_password']) ? $_POST['mysql_password'] : NULL;
	$mysql_database = isset($_POST['mysql_database']) ? $_POST['mysql_database'] : NULL;
	$mysql_table    = isset($_POST['mysql_table']) ? $_POST['mysql_table'] : "cities";

	$ch = curl_init();

	curl_setopt($ch, CURLOPT_URL,"http://nl.wikipedia.org/wiki/Lijst_van_Nederlandse_plaatsen");
	curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)");
	curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);

	$html = curl_exec($ch);

	curl_close($ch);

	$dom = new DOMDocument();

	@$dom->loadHTML($html);

	$xpath = new DOMXPath($dom);

	$hrefs = $xpath->evaluate("/html/body//a");

	$plaatsen = array();

	for ( $i = 0; $i < $hrefs->length; $i++ )
	{
		$href = $hrefs->item($i);

		if ( substr($href->getAttribute('href'), 0, 6) == "/wiki/" )
			$plaatsen[$i] = $href->nodeValue;
	}

	reset($plaatsen);

	$index_start = key($plaatsen);

	end($plaatsen);

	$index_eind = key($plaatsen);

	if ( isset($_POST['import']) )
	{
		mysql_connect($mysql_server, $mysql_username, $mysql_password) or die(mysql_error());
		mysql_select_db($mysql_database) or die(mysql_error());
		mysql_query("SET NAMES 'utf8'");

		echo '<ul>';

		foreach ( $plaatsen as $key => $value )
		{
			if ( $key >= $_POST['index_start'] && $key <= $_POST['index_eind'])
			{
				if ( $_POST['double_placenames'] == "on" )
					$plaats = preg_replace('/\(.*\)/', '', $value);

				else
					$plaats = $value;

				$sql = sprintf("SELECT * FROM %s WHERE description = '%s'", mysql_real_escape_string($mysql_table), mysql_real_escape_string($plaats));

				$result = mysql_query($sql) or die(mysql_error());

				if ( mysql_num_rows($result) == 0 )
				{
					$sql = sprintf("INSERT INTO %s (description) VALUES ('%s')", mysql_real_escape_string($mysql_table), mysql_real_escape_string($plaats));
					mysql_query($sql) or die(mysql_error());
					echo '<li style="color: green">'.$plaats.'</li>';
				}

				else
					echo '<li style="color: red">'.$plaats.'</li>';
			}
		}

		echo '</ul>';

		mysql_close();
	}
	?>
	<form method="post" action="import_lijst_van_nederlandse_plaatsen.php">
		<fieldset>
			<legend>MySQL</legend>
			<p>
				<label for="mysql_server">Server</label>
				<input type="text" name="$_POST['mysql_server']" id="mysql_server" value="<?PHP echo $mysql_server; ?>" />
			</p>
			<p>
				<label for="mysql_username">Username</label>
				<input type="text" name="mysql_username" id="mysql_username" value="<?PHP echo $mysql_username; ?>" />
			<p>
			</p>
			<p>
				<label for="mysql_password">Password</label>
				<input type="password" name="mysql_password" id="mysql_password" value="<?PHP echo $mysql_password; ?>" />
			</p>
			<p>
				<label for="mysql_database">Database</label>
				<input type="text" name="mysql_database" id="mysql_database" value="<?PHP echo $mysql_database; ?>" />
			</p>
			<p>
				<label for="mysql_table">Tabel</label>
				<input type="text" name="mysql_table" id="mysql_table" value="<?PHP echo $mysql_table; ?>" />
			</p>
		</fieldset>
		<br />
		<fieldset>
			<legend>Index</legend>
			<p>
				<label for="index_start">Start</label>
				<input type="text" name="index_start" id="index_start" value="<?PHP echo $index_start; ?>" />
			</p>
			<p>
				<label for="index_eind">Eind</label>
				<input type="text" name="index_eind" id="index_eind" value="<?PHP echo $index_eind; ?>" />
			</p>
		</fieldset>
		<br />
		<fieldset>
			<legend>Opties</legend>
			<p>
				<label for="double_placenames">Dubbele plaatsnamen weigeren</label>
				<input type="checkbox" name="double_placenames" id="double_placenames" checked />
			</p>
		</fieldset>
		<p><input type="submit" name="import" value="Import" /></p>
	</form>
	<h1>Lijst van Nederlandse plaatsen</h1>
	<ul>
	<?PHP
	foreach ( $plaatsen as $key => $value )
		echo '<li>' . $key . ' ' . $value . '</li>';
	?>
	</ul>
</html>