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.
Heb hem leeg gegooid en het veranderd, maar krijg nu 658 keer de volgende melding:
Notice: Cannot add or update a child row: a foreign key constraint fails (`taxikalf/straten_gemeenten`, CONSTRAINT `straten_gemeenten_ibfk_2` FOREIGN KEY (`gemeente_id`) REFERENCES `straten_gemeenten` (`id`) ON DELETE CASCADE ON UPDATE CASCADE)
In query: INSERT INTO straten_gemeenten ( straat_id, gemeente_id ) VALUES ( 2, 0 ) in D:\wamp\www\werk\invoer_straten.php on line 90
Volgens mij blijft de tabel straten_gemeenten leeg, want als ik over verkennen ga in phpmyadmin krijg ik een rode kruis te zien.
(maar ik ben superblij met je hulp hoor!!!)
EDIT: wat mij wel opviel is dat in de tabel gemeenten, de eerste id 0 is, en in straten de eerste id 2 is?
Blanche, het heeft gewerkt, alle straten zitten nu in mijn test omgeving.
Nu komt denk ik het moeilijkste punt, hoe gaan we het nu werkend maken in bijv. mijninvoer.php.
Zodat wanneer ik dus een A in typ, ook werkelijk alle straatnamen met de A naar boven komen.
Dit is natuurlijk het uiterste, want normaal gesproken zal ik 2 o f 3 letters in typen om de juistenaam naar boven te krijgen om het aantal records aanzienlijk te verkleinen.
Ik post even mijn invoer.php.
Ik zal je even uitleggen hoe ik werk.
Bij het invoeren van een taxirit in de DB, stuurt het script ook een mail naar mij en mijn collega's wat en wanneer er iets is ingevoerd, dit is een extra controlle op ons zelf om iedereen te laten weten dat er een bepaalde rit op een bepaaldedatum en tijd is bijgekomen.
Dit zelfde doe ik bij het bewerken van een een reeds bestaande rit, en het verwijderen van een bepaalde rit(alhoewel dat nog niet perfect is omdat ik niet voor elkaar krijg welke rit wn met welke gegevens er dan wel verwijderd is omdat ik niets post, en het email-gedeelte de variabelen overneemt als er daadwerkelijk iets gepost word, maar dat voor later zorg)
De eerste stap van het ontwikkelen van deze functionaliteit is het aanmaken van de pagina die de request naar de database verzorgt en de namen teruggeeft...
Het scriptje zal dus een input parameter moeten accepteren, hier kiezen we een GET variabele voor die in de url zetten. Vervolgens zal het scriptje een query uitvoeren aan de hand van deze variabele, de gegevens uitlezen en teruggeven. Dat teruggeven doe je dmv een simpele echo, deze response vang je namelijk straks op met je AJAX request.
De output die je wilt krijgen kun je bijvoorbeeld in het volgende formaat zetten:
ps. Misschien overbodig, maar even voor de duidelijkheid: dit scriptje draait dus in een heel ander bestand dan waar je bovenstaande code in hebt staan.
Is het mogelijk om deze fuctionaliteit in te passen in de bovenstaande code?
Daar zit nl. het invoerveld in van het ophaaladres en het bestemmingsadres.
Of werkt dit systeem net als het kalendertje bij een datepicker?
Ah, ik dacht dat er iets mogelijk was dat wanneer je een letter intikt, dat dat het sein naar de database kon zijn om de desbetreffende gegevens al op te halen.
Over Ajax weet ik helemaal niets, ja dat dat mijn club is die schandalig de boot in is gegaan tegen Excelcior.
IK heb een boekje over mysql gehad gisteren, misschien vind ik daar iets over wat jij beschrijft.
Ah, ik dacht dat er iets mogelijk was dat wanneer je een letter intikt, dat dat het sein naar de database kon zijn om de desbetreffende gegevens al op te halen.
Dat is inderdaad mogelijk met AJAX.
Jan Koehooorn had een tijdje geleden dit gepost:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>AJAX suggest script</title>
<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 ('plaats').value;
if (get.length > 0) {
xmlHttp.open ("GET", "ajax_plaatsnamen.php?plaats=" + get, true);
xmlHttp.send (null);
}
else {
lijst.display = 'none';
lijst.innerHTML = '';
}
}
</script>
<style type="text/css">
h1 {
font: bold 14px verdana;
color: #369;
}
p, input {
font: 12px verdana;
color: #639;
padding: 3px;
margin: 3px;
}
#form {
position: relative;
}
#lijst {
/*display: none;*/
position: absolute;
border: 1px solid #99f;
left: 48px;
background: white;
z-index: 1000;
}
#lijst p {
margin: 0px;
padding: 2px;
cursor: pointer;
}
#lijst p:hover {
background: #ccf;
}
pre {
margin: 20px;
padding: 20px;
border: 2px solid red;
}
</style>
</head>
<body>
<h1>Plaatsnaam suggest</h1>
<p>Typ de eerste paar letters van een plaatsnaam in Noord-Holland.</p>
<p>Het script moet suggesties geven over plaatsnamen waarin de letters voorkomen.</p>
<div id="form">
<form name="myForm" action="#" method="post">
<p>
<label for="plaats">plaats:</label>
<input id="plaats" name="plaats" type="text" onkeyup="ajaxFunction ();">
<input type="submit" value="verzenden">
</p>
</form>
<div id="lijst">
</div>
</div>
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
echo '<pre>';
print_r ($_POST);
echo '</pre>';
}
?>
</body>
</html>
<?php
require 'db_config.php';
if (isset ($_GET['plaats'])) {
$sql = "
SELECT DISTINCT plaats
FROM ckvwijzer_instellingen
WHERE plaats LIKE '%" . mysql_real_escape_string ($_GET['plaats']) . "%'
ORDER BY plaats ASC
";
if ($res = mysql_query ($sql)) {
if (mysql_num_rows ($res) > 0) {
while ($row = mysql_fetch_assoc ($res)) {
echo '<p onclick="document.getElementById (\'plaats\').value = this.innerHTML; document.getElementById (\'lijst\').innerHTML = \'\'">' . $row['plaats'] . '</p>';
}
}
}
}
?>