Wie heeft of kent een goed werkend stratenherkenninsscript dat ik kan gebruiken voor mijn agenda om taxiritten in te voeren.
IK deel online een agenda met 4 collega's en wij voeren met z'n allen veel reserveringen in.
Dit vergt in de regel allemaal veel tijd en niet iedereen voert de straatnamen soms goed in.
Ik ben op zoek naar een soort systeem dat wanneer ik bijvoorbeeld bij het invoerveld "adres" de letter D invul, ik automatisch kan kiezen uit een lijst met alle straten in Zaanstad beginnende met een D.
Vul ik Do in, dat dan de mogelijkheden automatisch minder worden en het systeem alle straten laat zien beginnende met Do, om vervolgens uit de lijst die verschijnt, Dorpsstraat te kunnen selecteren en dat dat dan in het veld adres terecht komt.
Ik stel me zo voor dat ik in de database en paar tabellen erbij moet maken, en daar alle straten van Zaanstad moet invoeren.
Nu is het geval dat Zaanstad bestaat uit een aantal samengevoegde gemeenten en dat de Dorpstraat dus wel 3 keer voor kan komen.
Ik stel me zo voor dat ik dan een aparte tabel per deelgemeente moet maken enz enz.
Is er iemand van jullie dat ooit eens zo'n script ontwikkelt heeft, kent, of wil helpen(heel veel wil helpen om dit te realiseren.
Geweldig, dank je wel, het zit al in mijn lokale proefomgeving.
Ik heb inmiddels via een website alle straten van gemeente Zaanstad in aparte .txt bestanden zitten dus van bijv. Oostzaan, Zaandam, Zaandijk enz enz.
Is het mogelijk om met een bebaalde query al deze straten in één keer in de tabel straten te stoppen?
Dat zou waanzinnig veel typ werk besparen.
Of moet ik een webform maken en alles 1 voor 1 invoeren.
Kan ik dan ook in 1 en het zelfde formpje zowel de tabel gemeente, de tabel straten en de tabel straten_gemeenten in 1 keer vulen?
Natuurlijk BLanche, momentjes genoeg(is Blanche nu een meisjes naam of..gooi ik nu mijn eigen glazen in voor de hulp die je biedt, ha ha)
Maar op dit moment staan in de aparte tekstbestandjes alle adressen geschijden door een komma en een spatie, maar als dat anders moet is dat makkelijker aan te passen dan alles in typen, het staat nu zo:
1e Harenmakersdwstr, A F d Savornin Lohmanstr, A G Verbeekstraat, enz, enz,
// Record invoegen in koppeltabel
$sql = "
INSERT INTO straten_gemeenten
(
straat_id,
gemeente_id
)
VALUES
{
".$iStraatId.",
".$iGemeenteId."
)";
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br />In query: '.$sql);
}
}
?>
Dit zou natuurlijk een stuk efficienter kunnen met bijvoorbeeld prepared statements. Maar aangezien dit een script is dat je in principe maar een aantal keer uitvoert, is dat geen probleem...
Dit script in dezelfde map plaatsen als de txt bestanden, even nog een database connectie in het script toevoegen en de waarde van de eerste variabele telkens even aanpassen.
Het is uit de losse pols geschreven, dus wellicht dat er nog een paar foutjes in zitten...
Blanche, je script heeft de straten en de gemeente goed ingevord in de DB, alleen krijg ik nu 657 keer de volgende melding:
Notice: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '{ 1, 0 )' at line 7
In query: INSERT INTO straten_gemeenten ( straat_id, gemeente_id ) VALUES { 1, 0 ) in D:\wamp\www\werk\invoer_straten.php on line 91
Het script heeft de tabel straten_gemeenten leeg gelaten!
Voor de goede orde en de goede regelvolgorde post ik even het script zoals het er nu uitziet:
<?php
require_once "prepend.php";
if ($_SESSION['user'] == null) {
require "form.php";
} else {
$user = $_SESSION['user'];
}
if (!check_auth_user($user,'expert')) return;
include("header.html");
include("db_werk.php");
$mysql_id=mysql_connect("$dbhost","$dbuser","$dbpass");
// Voorbeeld Zaandijk.txt, deze waarde handmatig aanpassen
$sGemeente = 'zaandam';
// Eerst gemeente toevoegen
mysql_connect("$dbhost","$dbuser","$dbpass");
$sql = "
INSERT INTO gemeenten (gemeente)
VALUES ('".$sGemeente."')
";
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br />In query: '.$sql);
}
else
{
$iGemeenteId = mysql_insert_id();
}
// Bestand uitlezen en wegschrijven naar database
$sContent = file_get_contents($sGemeente.'.txt');
$aStraten = explode(', ', $sContent);
foreach($aStraten as $sStraat)
{
$sStraat = mysql_real_escape_string($sStraat);
$sql = "
INSERT INTO straten (straat)
VALUES ('".$sStraat."')
";
if(!$res = mysql_query($sql))
{
if(mysql_errno() == 1062)
{
// Straatnaam bestaat al, selecteer ID
$sql = "
SELECT id
FROM straten
WHERE straat = '".$sStraat."'
";
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br />In query: '.$sql);
}
else
{
$row = mysql_fetch_assoc($res);
$iStraatId = $row['id'];
}
}
else
{
trigger_error(mysql_error().'<br />In query: '.$sql);
}
}
else
{
// Invoegen gelukt, selecteer id
$iStraatId = mysql_insert_id();
}
// Record invoegen in koppeltabel
$sql = "
INSERT INTO straten_gemeenten
(
straat_id,
gemeente_id
)
VALUES
{
".$iStraatId.",
".$iGemeenteId."
)";
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br />In query: '.$sql);
}
}
?>
ps. Zoals ik zei, er zullen misschien nog wel meer foutjes in zitten. Als je het nu weer probeert, zou het kunnen dat je foutmeldingen krijgt op de gemeenten. Misschien is het slimmer als je je database eerst weer even helemaal leeggooit...