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.
Hallo allemaal in het nieuwe jaar, en nogmaals de beste wensen!
Blanche, ik ben aan het puzzelen geweest met de ajax_straatnamen.php en loop behoorlijk vast(kan iemand dat woord "expert" onder mijn naam weghalen).
Ik ben bang dat de php nu waardeloos geworden is en weet niet meer wat er oorspronkelijk stond, kun jij nog even kijken als je er tijd voor hebt?
ajax_straatnamen.php
<?php
include("db_werk.php");
if (isset ($_GET['result'])) {
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['result_van'])."%'
";
if ($res = mysql_query ($sql))
{
if (mysql_num_rows ($res) > 0)
{
while ($row = mysql_fetch_assoc ($res))
{
echo '<p onclick="document.getElementById (\'result\').value = this.innerHTML; document.getElementById (\'result\').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);
}
}
?>
Ik heb het nu alleen over de invoervelden "van" en "naar", dat van die locatie's laat ik even zitten, die voor ik wel bij de straatnamen per plaats in!
Aan het PHP script had je eigenlijk (nog) niets mogen veranderen. Het maakt namelijk niet uit of je resultaten zoekt voor het 'van' of 'naar' veld, je gebruikt voor beiden precies hetzelfde PHP script.
Het enige dat het script moet doen is een GET variabele 'straat' accepteren waarin een (deel van een) straatnaam staat en vervolgens met een query alle overeenkomende straatnamen uitlezen en outputten.
Ik heb het php script weer teruggezet in de oude situatie hoor.
Ik hed nu twee divs met twee verschillende id's in het formulier waar de straatnamen in komen.
Wat betreft de php, dan heb ik je op de vorige pagina verkeerd begrepen toen je zei" - PHP script aanpassen zodat de namen het juiste onclick event meekrijgen."
Ja, maar dat is pas de laatste stap die we eventueel doen. Eerst maar eens proberen om de namen op de juiste plaats in het formulier te krijgen als we een bepaald veld invullen...
.........nee, snik.
Ik moet nu helaas de weg weer op, ik ga er vanavond weer mee verder.
Maar als je tips in de goede richting hebt graag.
Je hoeft niet alles voor te kauwen, ik moet mijn hersenen ook maar eens laten werken, maar die hebben niet zo'n hoog php gehalte als die van jou hoor ;-)
<?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);
}
}
?>
Het probleem is dat als ik in het "naar" veld iets invoer, de straten te voorschijn komen zoals bedoeld, en ik selecteer er 1 dan plaatst het script de straat mooi in het veld, maar het zoekgedeelte blijft openstaan.
Mooier zou zijn, na selectie dat dit veld verdween.
Als ik in het "naar" veld iets intik, komen er weer de straten, maar als ik er 1 selecteer, plaatst het script de straat weer in het "van" veld, tevens blijft hier het zoekgedeelte ook weer open staan.
Aha, dus de namen komen wel al in beeld te staan...
Maak van regel 42 in je ajaxfunctie eens:
xmlHttp.open ("GET", "ajax_straatnamen.php?straat="+ get +"&veld="+ element.id +"&result="+ result, true);
En van regel 28 in je phpscript:
<?php
echo '<p onclick="document.getElementById (\''.$_GET['veld'].'\').value = this.innerHTML; document.getElementById (\''.$_GET['result'].'\').style.display = \'none\'">'.$row['straat'].' ('.$row['gemeente'].')</p>';
?>
Ongelofelijk, het werkt!!!
Nu moet ik de divs die de straten showen nog even mooi met de css positioneren dat ze precies onder de invoervelden te voorschijn komen.
De locaties voer ik wel tussen de straten in hoor, zoveel zijn dat er ook weer niet.