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.
Je bent een tovenaar Blanche, met dit soort dingen, pffffffffffff.
Maar ik ben de vergelijking met "ons" scriptje aan het zoeken maar dat zie ik niet.
Hoe langer ik er naar kijk en vergelijk, eordt het er niet beter op.
De functie getStreets() zou je kunnen vergelijken met jouw ajaxFunctie(). Hij is alleen een stuk korter omdat ik het MooTools framework gebruik waardoor ik dus met 1 simpele functie een AJAX request kan uitvoeren.
Je zou eens kunnen kijken of je mijn scriptje snap. Ik wil er best nog wat uitleg bij geven, maar dat moet je even aangeven wat je niet snapt...
Even terug komend op een paar posts hierboven Blanche, ="ajaxFunction (this.id);" is dit een fictieve naam of moet het zo werkelijk.
Normaal probeer ik zelf wel wat uit, maar op dit gebied ben ik helemaal noob.
Als het voor jou appeltje eitje is, kun jij voor mij au de stukjes code even goed aanpassen:
Dit is mijn ajax.js
<script type="text/javascript">
function ajaxFunction ()
{
var xmlHttp;
var lijst = document.getElementById ('lijst');
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest ();
}
catch (e)
{
// Internet Explorer
try
{
xmlHttp=new ActiveXObject ("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
xmlHttp=new ActiveXObject ("Microsoft.XMLHTTP");
}
catch (e)
{
alert ("Your browser does not support AJAX!");
return false;
}
}
}
xmlHttp.onreadystatechange=function ()
{
if (xmlHttp.readyState == 4)
{
lijst.display = '';
lijst.innerHTML = xmlHttp.responseText;
}
}
var get = document.getElementById ('straat').value;
if (get.length > 0) {
xmlHttp.open ("GET", "ajax_straatnamen.php?straat=" + get, true);
xmlHttp.send (null);
}
else {
lijst.display = 'none';
lijst.innerHTML = '';
}
}
</script>
Dit is mijn ajax_straatnamen.php:
<?php
include("db_werk.php");
if (isset ($_GET['straat'])) {
mysql_connect($dbhost,$dbuser,$dbpass) or die(mysql_error());
mysql_select_db($db) or die(mysql_error());
$sql = "
SELECT
s.straat,
g.gemeente
FROM
straten AS s,
gemeenten AS g,
straten_gemeenten AS sg
WHERE
g.id = sg.gemeente_id
AND
sg.straat_id = s.id
AND
s.straat LIKE '".mysql_real_escape_string($_GET['straat'])."%'
";
if ($res = mysql_query ($sql))
{
if (mysql_num_rows ($res) > 0)
{
while ($row = mysql_fetch_assoc ($res))
{
echo '<p onclick="document.getElementById (\'straat\').value = this.innerHTML; document.getElementById (\'lijst\').innerHTML = \'\'">'.$row['straat'].' ('.$row['gemeente'].')</p>';
}
}
else
{
echo 'Geen straatnamen gevonden die overeenkomen met de databese gegevens ';
}
}
else
{
trigger_error(mysql_error().'<br />In query: '.$sql);
}
}
?>
- onchange attribuut van input velden.
- function ajaxFunction() accepteert nu twee parameters.
- var lijst wordt geset afhankelijk van de parameter result.
- var get wordt bepaald afhankelijk van parameter element.
Nog te doen:
- Twee nieuwe elementen (divs) aanmaken met de id's result_van en result_naar onder respectievelijk het 'van' veld en het 'naar' veld.
- Element met id 'lijst' is nu overbodig.
- PHP script aanpassen zodat de namen het juiste onclick event meekrijgen.
Blanche, ik kom net ff binnen tussen mijn werk en ik zal met het geen hierboven morgen verder gaan, bedankt weer voor je hulp.
Nu nog iets anders, ik kwam er achter dat niet alle straten in de tekstbestandjes compleet waren.
Ik heb bij bijv. Zaandam.txt een straat aan het einde toegevoegd nl. Barndegat en het scriptje invoer_straten.php weer uitgevoerd.
Dit gaf echter de volgende foutmelding:
Notice: Duplicate entry 'Zaandam' for key 2
In query: INSERT INTO gemeenten (gemeente) VALUES ('Zaandam') in D:\wamp\www\werk\invoer_straten.php on line 25
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 ')' at line 10
In query: INSERT INTO straten_gemeenten ( straat_id, gemeente_id ) VALUES ( 1, ) in D:\wamp\www\werk\invoer_straten.php on line 91
De tweede notice geeft hij 657 keer(ik denk het aantal straten in Zaandam) en als laatste deze notice:
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 ')' at line 10
In query: INSERT INTO straten_gemeenten ( straat_id, gemeente_id ) VALUES ( 1520, ) in D:\wamp\www\werk\invoer_straten.php on line 91
(ik neem aan dat 1520 de laatste id is voor de hele tabel straten , en dat klopt, Barndegat staat nu in de tabel straten op nr 1520)
Maar hij staat niet in de tabel straten_gemeenten, die loopt maar tot 1519!
Wat gaat er nu mis, ik wilde alleen en straat toevoegen, en hoopte dat hij de rest gwoon zou overschrijven.
(lang verhaal weer van me, ik hoop dat je er wat van begrijpt)
Dat invoeg scriptje kun je inderdaad maar 1x gebruiken, het is er niet op gemaakt dat het meerdere keren uitgevoerd kan worden.
Wat je voor dit moment zou kunnen doen is de straat handmatig toevoegen. Later zou je dan een php scriptje kunnen schrijven waarmee je straten en gemeenten kunt toevoegen, wijzigen en verwijderen.
Prima Blanche, heb het reeds een keer geprobeerd en werkt hnadmatig prima.
Ik moet nl. ook nog wat locaties zoals ziekenhuizen en stations e.d. met de hand invoerden.
EDIT: Eigelijk zou ik hier voor een nieuwe tabel aan moeten maken: locaties.
Heb ik reeds gedaan, maar toen keek ik naar ajax_straatnamen .php en toen werd ik alweer duizelig van de problemen die komen kijken bij het op de juiste mannier selecteren, of denk ik moeilijker dan nodig is?
Je krijgt een aparte invoer voor een lokatie, dus ook een aparte AJAX request voor het vullen voor dat veld, dus ook een apart script dat de resultaten voor die AJAX request gaat genereren...
Eigenlijk doe je alles dus nog een keer dubbel, maar nu voor de locaties.
Ik wilde eigenlijk de reeds bestaande invoervelden voor "van" en "naar" het zelfde houden, of je nu als bestemming Kerkstraat (Wormerveer) hebt of Station (Wormerveer).
Maar ik twijfel alleen omdat je een database toch aan normalisatie moet onderwerpen, of daarvoor een aparte tabel nodig is of dat ik het in de zelfde tabel als de straten zal doen!
Als het in een aparte tabel moet, maak ikweer zo', tekstbestand aan om het in een keer in de juiste tabel te dumpen.
EDIT: Nee, ik moet natuurlijk(net als bij de straten) voor elke deelgemeente een aparte tekstfile aanmaken, omdat iedere gemeente bijv. een station heeft!
En iedere keer even invoer_straten.php aanpassen!