Hoe krijg ik alleen de postcode Inc het veld terug, na autocomplete
Ik heb in een formulier een veld postcode. Op dit veld wordt een autocomplete toegepast. Ik laat in de lijst die verschijnt de postcode met plaats zien. Dat werkt prima bij alleen de postcode tonen, maar niet als ik een samenstelling maak van postcode met hoofdstad.
De gebruikte input:
Code (php)
1
<input type="text" name="postcode" minlength="4" maxlength="4" onkeypress="return numere(event)" placeholder="xxxx" required title="(Vul de postcode in)" class='auto' >
Ik gebruik de functie onkeypress om alleen cijfers te accepteren.
Als ik nu een lijst toon met postcode en hoofdstad en klik op een keuze, dan wordt het veld gevuld met de gekozen waarden. Dus postcode met de hoofdstad.
Echter wil ik bij een keuze alleen de 4 cijfers overnemen van een postcode.
Dit is de code:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<script>
$(function() {
//autocomplete
$(".auto").autocomplete({
source: "search.php",
minLength: 1
});
});
</script>
$(function() {
//autocomplete
$(".auto").autocomplete({
source: "search.php",
minLength: 1
});
});
</script>
De php, waarin de query gemaakt wordt ziet er als volgt uit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
require('includes/config.php');
if(!$user->is_logged_in()){ header('Location: login.php'); }
define('DB_SERVER', 'localhost');
define('DB_USER', '******');
define('DB_PASSWORD', '******');
define('DB_NAME', '******');
if (isset($_GET['term'])){
$return_arr = array();
try {
$conn = new PDO("mysql:host=".DB_SERVER.";port=8889;dbname=".DB_NAME, DB_USER, DB_PASSWORD);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare('SELECT * FROM 4postcode WHERE postcode LIKE :term LIMIT 15');
$stmt->execute(array('term' => $_GET['term'].'%'));
while ($row = $stmt->fetch()){
$return_arr[] = $row["postcode"].'-'.$row["hoofdstad"];
}
} catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}
/* Toss back results as json encoded array. */
echo json_encode($return_arr);
}
?>
require('includes/config.php');
if(!$user->is_logged_in()){ header('Location: login.php'); }
define('DB_SERVER', 'localhost');
define('DB_USER', '******');
define('DB_PASSWORD', '******');
define('DB_NAME', '******');
if (isset($_GET['term'])){
$return_arr = array();
try {
$conn = new PDO("mysql:host=".DB_SERVER.";port=8889;dbname=".DB_NAME, DB_USER, DB_PASSWORD);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare('SELECT * FROM 4postcode WHERE postcode LIKE :term LIMIT 15');
$stmt->execute(array('term' => $_GET['term'].'%'));
while ($row = $stmt->fetch()){
$return_arr[] = $row["postcode"].'-'.$row["hoofdstad"];
}
} catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}
/* Toss back results as json encoded array. */
echo json_encode($return_arr);
}
?>
Als ik:
“$return_arr[] = $row["postcode"].'-'.$row["hoofdstad"];”
Vervang door:
“$return_arr[] = $row["postcode"];”
Dan krijg ik alleen de postcodes te zien en is de invoer prima.
Waar ik mee worstel:
Maar ik wil de lijst met keuzes tonen met hoofdstad, maar bij het kiezen alleen de postcode gebruiken.
Ik heb een functie toegevoegd bij onchange in het veld dat alleen de eerste 4 karakters overgenomen worden, maar dat werkt niet.
Weet iemand de oplossing?
Dank
http://adoptive.esy.es/autocomplete/
heb ik voor de gelegenheid een postcode database opgehaald en het zoeken en tonen wat aangepast :
https://www.postcode.store/wp-content/downloads/demobestand.zip
http://adoptive.esy.es/postcode/
Het meeste wordt gedaan door een javascript, waarbij eerst een lijst wordt getoond en als je iets kiest, de postcode in het zoekveld wordt geplaatst. In tegenstelling tot autocomplete voorbeeld, waarbij het gevonden resultaat in een apart veld komt.
Hier het javascript. De veldnamen zijn niet aangepast.
http://adoptive.esy.es/postcode/js/script.js
Gewijzigd op 10/05/2018 17:43:57 door - Ariën -