Das Skript sucht nach der Eingabe einer Zahl in das Feld ‘Postleitzahl’ automatisch in einer MySQL Datenbank nach dem dazugehörigen Ort beziehungsweise Stadt.
Was das Skript genau macht, wird in der Demoversion gezeigt.
Dafür müssen wir auf der Webseite, die vom Besucher aufgerufen wird erst prüfen ob er in das relevante Feld - in unserem Fall in das Feld der Postleitzahlen - einen Wert eingibt. Sobald er dies tut, möchten wir mittels AJAX in unserer MySQL Datenbank prüfen, ob für die eingegebene Postleitzahl auch ein Ort bzw. eine Stadt existiert.
$(document).ready(function() {
$('.zip').keyup(function() {
$.ajax({
type: "POST",
url: "modules/ajax.php",
data: {type: "plz", value: $('.zip').val()},
success: function(result) {
$('.city').val(result);
}
});
});
});
Mittels AJAX wird nach jedem Tastendruck der erfasste Wert im Feld ‘zip’ an das PHP-Script ajax.php gesendet. Der Rückgabewert wird sodann im Feld ‘city’ ausgegeben.
include('db.php');
if(isset($_POST["type"])) {
if($_POST["type"] == "plz") {
connectToSpecificDb("plz_db", "root", "");
$returnValue = "";
if(strlen($_POST["value"]) > 2) {
if(strlen($_POST["value"]) == 3) {
$sql = "SELECT * FROM PLZ_DB WHERE zip LIKE '".mysql_real_escape_string($_POST["value"])."%'";
$returnValue = @mysql_result(mysql_query($sql),0,"cityname_full");
} else if(strlen($_POST["value"]) == 4) {
$sql = "SELECT * FROM plz_db WHERE zip =".mysql_real_escape_string($_POST["value"]);
$returnValue = @mysql_result(mysql_query($sql),0,"cityname");
}
}
mysql_close();
echo $returnValue;
}
}
Zum Schluss noch das relevante HTML:
<div data-role="fieldcontain" style="padding:20px;">
<label for="textinput-fc" style="margin-top:5px;">Postleitzahl:</label>
<input name="zip" id="textinput-fc" placeholder="Postleitzahl" type="text" class="zip">
<br><br>
<label for="textinput-fc" style="margin-top:5px;">Ort / Stadt:</label>
<input name="city" id="textinput-fc" placeholder="Ort / Stadt" type="text" class="city">
</div>
Die .sql Datenbank mit den Schweizer Postleitzahlen kann unter MySQL_PLZ_CH.sql runtergeladen werden. Die Tabelle wurde bewusst nicht optimiert, daher sind die Spaltennamen auch nicht sehr selbsterklären.