import_lijst_van_nederlandse_gemeenten_per_provincie
20 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'] : "gemeenten";

	$ch = curl_init();

	curl_setopt($ch, CURLOPT_URL,"http://nl.wikipedia.org/wiki/Nederlandse_gemeenten_per_provincie");
	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");

	$array_gemeenten = array();

	$array_provincies = array(
		1 => "Drenthe",
		2 => "Flevoland",
		3 => "Friesland",
		4 => "Gelderland",
		5 => "Groningen",
		6 => "Limburg",
		7 => "Noord-Brabant",
		8 => "Noord-Holland",
		9 => "Overijssel",
		10 => "Utrecht",
		11 => "Zeeland",
		12 => "Zuid-Holland"
	);

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

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

	reset($array_gemeenten);

	$index_start = key($array_gemeenten);

	end($array_gemeenten);

	$index_eind = key($array_gemeenten);

	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>';

		$provincie_id = null;
		$previous_provincie_id = null;

		foreach ( $array_gemeenten as $key => $value )
		{
			if ( $key >= $_POST['index_start'] && $key <= $_POST['index_eind'])
			{
				if ( in_array($value, $array_provincies) )
				{
					$previous_provincie_id = $provincie_id;

					switch ($value)
					{
						case "Drenthe":
							$provincie_id = 1;
							break;
						case "Flevoland":
							$provincie_id = 2;
							break;
						case "Friesland":
							$provincie_id = 3;
							break;
						case "Gelderland":
							$provincie_id = 4;
							break;
						case "Groningen":
							$provincie_id = 5;
							break;
						case "Limburg":
							$provincie_id = 6;
							break;
						case "Noord-Brabant":
							$provincie_id = 7;
							break;
						case "Noord-Holland":
							$provincie_id = 8;
							break;
						case "Overijssel":
							$provincie_id = 9;
							break;
						case "Utrecht":
							$provincie_id = 10;
							break;
						case "Zeeland":
							$provincie_id = 11;
							break;
						case "Zuid-Holland":
							$provincie_id = 12;
							break;
					}
				}

				if ( ! in_array($value, $array_provincies) OR $previous_provincie_id == $provincie_id )
				{
					$gemeente = $value;

					$sql = sprintf("SELECT * FROM %s WHERE description = '%s' AND provincie_id = %d", mysql_real_escape_string($mysql_table), mysql_real_escape_string($gemeente), $provincie_id);

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

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

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

				else
					echo '<li>' . '<strong>' . $value . '</strong>' . '</li>';
			}
		}

		echo '</ul>';

		mysql_close();
	}
	?>
	<form method="post" action="import_lijst_van_nederlandse_gemeenten_per_provincie.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 />
		<p><input type="submit" name="import" value="Import" /></p>
	</form>
	<h1>Lijst van Nederlandse gemeenten</h1>
	<ul>
	<?PHP
	foreach ( $array_gemeenten as $key => $value )
		if (in_array($value, $array_provincies))
			echo '<li>' . $key . ' ' . '<strong>' . $value . '</strong>' . '</li>';
		else
			echo '<li>' . $key . ' ' . $value . '</li>';
	?>
	</ul>
</html>