Autocomplete mit scriptaculous in mehrere Formularfelder setzen

swamp1001

Mitglied
Hoffe mir kann jemand helfen ich weiss auch nicht ob das hier die richtige Rubrik ist.
Also ich schreibe in ein Formularfeld die ersten 3 Buchstaben einer Strasse, dann zeigt er mir alle Strassen die mit den Buchstaben beginnen und die PLZ den Ort und den Bezirk.
Hier die Search.php
Code:
<?php

require_once 'Configuration.php';
require_once 'MyDB.php';

$sql = "SELECT * FROM  adressen    WHERE strasse LIKE :strasse    LIMIT 10"; 
$stmt = MyDB::getInstance()->prepare($sql); 
$stmt->execute(array( 
    ':strasse' => "%".$_REQUEST['sourceInput']."%", 
)); 
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);

echo '<ul style="overflow:auto;height:250px">';
foreach($result as $row) {
    printf('<li><b>%s</b><br>%s %s<br><span class="informal">%s</span>', $row['strasse'], $row['plz'], $row['ort'], $row[bezirk']);
}
echo '</ul>';
?>
Dann zeigt er mir das so an:
Ackerstr.
12345 Berlin
Tegel

Bis hier hin schon sehr schön jetzt muss er mir das nur noch in die
4 Textfelder des Formulares schreiben.
Die id der Felder sind sourceInput, plz, ort den Bezirk brauch ich nicht ist nur zur besseren unterscheidung und wird auch nicht übergeben.

Hier mein Code:
Code:
<script type="text/javascript">//<![CDATA[
new Ajax.Autocompleter("sourceInput", "destinationDiv", "search.php", {
  afterUpdateElement : getSelectionId
});

function getSelectionId(text, li) {
      document.getElementById('sourceInput').value=li.innerHTML;
     }
Jetzt schreibt er mir alles in in das Feld sourcheInput.

Bitte kann mir da jemand helfen, habe nix gefunden.
 
Hi,

wenn du die Antwort in der Search.php dahingehen änderst, dass alle relevanten Teile in spans stehen, könntest du über den Tag-Name und den zugehörigen Index darauf zugreifen.

Search.php
Code:
foreach($result as $row) {
    printf('<li <b><span>%s</span></b><br><span>%s</span> <span>%s</span><br><span>%s</span></li>', $row['strasse'], $row['plz'], $row['ort'], $row['bezirk']);
}

Jetzt ist es möglich, in der Callbackfunktion getSelectionId über
Code:
li.getElementsByTagName('span')[index].innerHTML // index = {0, 1, 2, 3}
auf die gewünschte Information zuzugreifen und in das entsprechende Feld einzutragen.

Ciao
Quaese
 
Zuletzt bearbeitet:
Danke für deine Hilfe, funktioniert leider nicht, wenn ich das mit den <span> </span> mache dann geht die suche nicht mehr.

Vieleicht hast du eine andere idee.


EDIT

Ich habe es hinbekommen, dein ansatz war schon gut.
Es geht jetzt so in der search.php:
Code:
printf('<li <b><span>%s</span></b><br><span>%s</span> <span>%s</span><br><span>%s</span></li>', $row['strasse'], $row['plz'], $row['ort'], $row['bezirk']);
und im Formular:

Code:
<script type="text/javascript">//<![CDATA[
new Ajax.Autocompleter("sourceInput", "destinationDiv", "search.php", {
  afterUpdateElement : getSelectionId
});

function getSelectionId(text, li) {
	  document.getElementById('sourceInput').value=li.getElementsByTagName('span')[0].innerHTML
	  document.getElementById('textfield').value=li.getElementsByTagName('span')[1].innerHTML
	  document.getElementById('ort').value=li.getElementsByTagName('span')[2].innerHTML
     }

										  
//]]>

</script>

Vielen dank
 

Neue Beiträge

Zurück