Autoaanvullen straatnaam en woonplaats bij postcode!

Door Daniel H, 19 jaar geleden, 14.350x bekeken

***********************************************
****************code is verouderd****************
Nieuwe versie : http://phphulp.nl/php/scripts/2/1663/
***********************************************



ik heb hem niet zelf gemaakt, maar zet hem hier om met jullie te delen.
De maken is: Jason Levitt.

Ik heb deze gezocht na de reactie van Terence op http://www.phphulp.nl/php/scripts/2/1288/. Hij zow zijn eigen script online zetten maar dat heeft hij geloof ik niet gedaan, daarom deze.

Voorbeeld: http://kvdb.net/projects/6pp/

Gesponsorde koppelingen

PHP script bestanden

  1. autoaanvullen-straatnaam-en-woonplaats-bij-postcod

 

Er zijn 22 reacties op 'Autoaanvullen straatnaam en woonplaats bij postcode'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Naam Loos
Naam Loos
19 jaar geleden
 
0 +1 -0 -1
handig script, zal ik zeker gebruiken ;)
Jens V
Jens V
19 jaar geleden
 
0 +1 -0 -1
Enkel Nederland?
Daniel H
Daniel H
19 jaar geleden
 
0 +1 -0 -1
ja, dat lijkt mij wel genoeg.
Als je meerderen landen wil moet je ff kijken op http://kvdb.net/projects/6pp.
misschien kan je daar aan meer landen komen. Als het lukt laat het mijn dan ff weten, dan zet ik het in mijn script.

Daniel
Hipska BE
Hipska BE
19 jaar geleden
 
0 +1 -0 -1
Waarom gebruik je hier curl voor? Er is een SOAP toepassing beschikbaar.. Zie die pagina die je net gaf
Daniel H
Daniel H
19 jaar geleden
 
0 +1 -0 -1
Zoals ik al aangaf hem ik deze script niet gemaakt. Vandaar dat hij in curl is.
Jan Koehoorn
Jan Koehoorn
19 jaar geleden
 
0 +1 -0 -1
Waarom staat hij ook bij de tuts?
Daniel H
Daniel H
19 jaar geleden
 
0 +1 -0 -1
Dat was een foutje van mij, maar hij zow verwijdert worden:P

Daniel
Disksoft
Disksoft
19 jaar geleden
 
0 +1 -0 -1
Helemaal top!
Ik heb nu de database zelf geconverteerd naar MySQL 445898 records. Gelijk de nieuwe straat bij mij aan de overkant toegevoegd. Nu zelf nog een php script maken zodat hij de rest kan gaan aanvullen indien het niet bestaat.
Bas Visscher
Bas Visscher
19 jaar geleden
 
0 +1 -0 -1
haalt hij die gegevens uit een database ofzoiets?
6pp.kvb.net?
iig zeer mooi had ik net nodig dankje! (die ander dan :p)
Arian Stolwijk
Arian Stolwijk
19 jaar geleden
 
0 +1 -0 -1
Dit komt zeker van pas. Een beetje jammer dat de coördinaten er nog niet gelijk bij staan.

Maar met deze gegevens kan je eventueel nog een preciesere zoek query maken (Dan alleen postcode) naar google maps om toch nog de coördinaten te krijgen van een postcode.

Komt goed van pas met het project waar ik nu mee bezig ben:)
Daniel H
Daniel H
19 jaar geleden
 
0 +1 -0 -1
*Disksoft:
zow ik die mysql records mogen hebben?
*phpnoobie:
het is geloofik een xml file.
kijk maar eens bij: script.php?method=lookup&postcode=' + document.req.postcode.value

Daniel
Emmanuel Delay
Emmanuel Delay
19 jaar geleden
 
0 +1 -0 -1
Wie de Belgische postcodes nodig heeft,
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
CREATE TABLE IF NOT EXISTS postcodes (
  id smallint(6) NOT NULL auto_increment,
  postcode int(4) NOT NULL,
  gemeente varchar(250) NOT NULL default '',
  PRIMARY KEY  (id)
)  ENGINE=InnoDB  DEFAULT CHARSET=latin1 ;


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
// surf naar http://www.post.be/site/nl/applications/postal_codes/files/zipcode_num.html
// sla de broncode op in file 'postcodes.htm'
// html opmaak best verwijderen, zodat de file begint met
      //<tr>
      //<td class="bodyText04Std">1000</td>

$file_content = file_get_contents  ( 'postcodes.htm' ) ;
$file_content = str_replace('</td>', '', $file_content);
$file_content = str_replace("'", "''", $file_content);
$records = explode('<tr>', $file_content);
$resultaat = "INSERT INTO postcodes (postcode, gemeente) VALUES ";
$i = 0;
foreach ($records as $record)
  {

    $gegevens = explode('<td class="bodyText04Std">', $record);
    $postcode = trim($gegevens[1]) ;
    $gemeente = trim($gegevens[2]);
    if ($postcode >= 1000)
      {

        if ($i > 0)
          $resultaat .=", ";
        $resultaat .="
        ( "
. $postcode .", '". $gemeente ."' )";
        $i++;
      }
  }

  $resultaat .="; ";
    echo $resultaat;
  // copy-paste wat je op je scherm ziet in phpMyAdmin, ...
?>


Merk op: postcode is niet uniek, gemeente is niet uniek, en uhh... België is een tweetalig land, dat merk je ook aan de records.
Hipska BE
Hipska BE
19 jaar geleden
 
0 +1 -0 -1
Weet iemand een belgische straatnamen DB ?
Emmanuel Delay
Emmanuel Delay
19 jaar geleden
 
0 +1 -0 -1
Ook al overal gezocht en een paar keer hier aangevraagd.
Volgens mij vind je het niet gemakkelijk gratis.

Mocht ik me vergissen, laat zeker iets weten.
Daniel H
Daniel H
19 jaar geleden
 
0 +1 -0 -1
Nee, het is niet gratis. Die is een gratis project, maar normaal moet je daar heel veel geld voor betalen.

Daniel
Disksoft
Disksoft
19 jaar geleden
 
0 +1 -0 -1
@Daniel

Download de sqllite database browser van Sourceforge.net [1,4mb]
http://sourceforge.net/project/showfiles.php?group_id=87946

Download de database [11mb]:
http://kvdb.net/projects/6pp/6pp_snapshot.gz

Open het in winzip oid en pak het *.sqlite bestand uit
Open de SQLite Database Browser en open 6pp.sqlite

Ga dan naar File > Export > Database to SQL file en sla hem op als .sql
Daarna kan je hem importeren in je mysql database.

Het SQL bestand is 60mb dus je moet je time limit op hoog zetten en ook je file limit in php. Of hem via de command prompt inladen in de database als je de mogelijkheid hebt. Daarna heb je ongeveer 446000 records.

Succes!
Johan M
Johan M
19 jaar geleden
 
0 +1 -0 -1
Ik heb dit script lokaal getest en had het niet direct werkend. Het probleem zat hem in een aantal errors in script.php (orginele naam: proxy.php).

Aanpassingen:
- Regel 6 aangepast naar:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$path = isset($_POST['method']) ? $_POST['method'] : $_GET['method'];

- Regel 13 aangepast naar:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
if(isset($_POST['method'])) {

- Regel 24-25 wordt 24-26:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
// Also append GET parameters
$postvars = '';
while ($element = current($_GET)) {


Complete script.php (/ proxy.php ):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<?php
define ('HOSTNAME', 'http://6pp.kvdb.net/');

// Get the REST call path from the AJAX application
// Is it a POST or a GET?

$path = isset($_POST['method']) ? $_POST['method'] : $_GET['method'];
$url = HOSTNAME.$path;

// Open the Curl session
$session = curl_init($url);

// If it's a POST, put the POST data in the body
if(isset($_POST['method'])) {
    $postvars = '';
    while ($element = current($_POST)) {
                if (key($_POST) != 'method')
                {

            $postvars .= key($_POST).'='.$element.'&';
        }

        next($_POST);
    }
}


// Also append GET parameters
$postvars = '';
while ($element = current($_GET)) {
    if (key($_GET) != 'method')
        {

        $postvars .= key($_GET).'='.$element.'&';
    }

    next($_GET);
}


curl_setopt ($session, CURLOPT_POST, true);
curl_setopt ($session, CURLOPT_POSTFIELDS, $postvars);

// Don't return HTTP headers. Do return the contents of the call
curl_setopt($session, CURLOPT_HEADER, false);
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);

// Make the call
$xml = curl_exec($session);

// The web service returns XML. Set the Content-Type appropriately
header("Content-Type: text/xml");

echo $xml;
curl_close($session);

[
/code]

Grz. Johan.

// Edit: dit systeem is niet feilloos, zoek bijvoorbeeld op postcode 2987XS, dan vind je op postcode.nl:
2987 XS      Westerhof       1 t/m 39              RIDDERKERK      
2987 XS     Westerhof              2 t/m 40             RIDDERKERK     
2987 XS     de la Reijstraat      620 t/m 644     RIDDERKERK

Nu was ik per toeval op zoek naar de straatnaam Westerhof, maar ik kreeg 'de la Reijstraat' te zien. Je kunt het input-vak 'street' bijvoorbeeld dus niet zomaar op disabled zetten, aangezien de eindgebruiker deze waarde mogelijk nog zou moeten aanpassen!
Daniel H
Daniel H
19 jaar geleden
 
0 +1 -0 -1
Disksoft, bedankt.
ik ga nu eerst naar school en dan kijk ik ff vanmiddag.

Daniel
Robert Deiman
Robert Deiman
19 jaar geleden
 
0 +1 -0 -1
Aanvulling op Johan

Het mooiste zou dan zijn om een combobox (iig bij meerdere resultaten op een postcode) te maken, zodat een bezoeker kan typen, maar als de postcode is ingevuld en er dus (zoals in 't geval van Johan) meerdere mogelijkheden zijn, dan kan die ook met een dropdown de juiste waarde selecteren.
Kees
Kees
19 jaar geleden
 
0 +1 -0 -1
@Johan: de verbeteringen in proxy.php heb ik toegevoegd.

Nu worden bij postcodes zoals 2987XS altijd de verschillende adressen teruggegeven.

Zelf ben ik niet zo'n javascript/AJAX'er, dus als iemand op een eenvoudige manier een combobox kan laten zien bij meerdere straten zou ik die graag online zetten op de 6pp site.
Disksoft
Disksoft
19 jaar geleden
 
0 +1 -0 -1
Hoe kan je het probleem oplossen van meerdere straten op een postcode zoals 2987XS? Ik heb de database zelf gedownload maar er staan geen nummer reeksen bij. En om ze zelf allemaal op te zoeken is een beetje veel werk ;)

Ik had het idee om het via de site van TPG op Postcode.nl te doen maar ik krijg het niet voor elkaar dat die het automatisch aanvult, zowel de huisnummers van bestaande postcodes in mijn database, als onbekende postcodes. Hij voegt niets toe en hij wijzigt ook niets. Heeft iemand al een oplossing gevonden, ik wil een eigen postcode database bij houden dus ik moet hem ook zien aan te vullen als iets nog onbekend is.
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Daniel H
Daniel H
19 jaar geleden
 
0 +1 -0 -1
Je mag het geloof ik niet via Postcode.nl doen. Dat staat in hun bron code als ik me niet vergis. Dus script maken mag niet via Postcode.nl.

Daniel

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. autoaanvullen-straatnaam-en-woonplaats-bij-postcod

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.