Problem mit Autocomplete von script.aculo.us
Simon
- php
Hi,
hab da ein kleines Problem. Und zwar handelt es sich um etwas wie bei Google, dort wo einem die Suchergebnisse vorgeschlagen werden.
Man gibt z.B. Self ein und es zeigt einen direkt eine Liste an und daneben die Anzahl der Ergebnisse.
Wenn ich jetzt auf eines dieser Suchwörter in der Liste klicke steht dieses Suchwort dann im Inputfeld aber nicht die Anzahl der Ergebnisse.
Ich hoffe jemand kennt dieses Script, wenn nicht kann ich es hier reinstellen.
MfG
Simon
Hi,
Und zwar handelt es sich um etwas wie bei Google, dort wo einem die Suchergebnisse vorgeschlagen werden.
Da werden keine Such*ergebnisse* vorgeschlagen, sondern Such*begriffe*.
Wenn ich jetzt auf eines dieser Suchwörter in der Liste klicke steht dieses Suchwort dann im Inputfeld aber nicht die Anzahl der Ergebnisse.
Die Anzahl der Ergebnisse steht ja auch erst dann fest, wenn die Suche durchgeführt wurde.
MfG ChrisB
Da werden keine Such*ergebnisse* vorgeschlagen, sondern Such*begriffe*.
Ja kann schon sein :)
Die Anzahl der Ergebnisse steht ja auch erst dann fest, wenn die Suche durchgeführt wurde.
Um dass geht es mir ja gar nicht. Bei Google stehen ja auch die Ergebnisse rechts.
Mein Problem ist nur, wie ich es schaffe dass ich die Zusatzinfo (in dem Fall die Ergebnisse) nicht im Inputfeld landet.
MfG
Simon
Hi,
Mein Problem ist nur, wie ich es schaffe dass ich die Zusatzinfo (in dem Fall die Ergebnisse) nicht im Inputfeld landet.
Gerade hast du noch geschrieben, *dass* das nicht so wäre, und gesagt, das wäre dein Problem - geht es etwas weniger konfus?
Wenn das, was ins Inputfeld geschrieben wird, Bestandteile enthält, die du nicht haben willst - dann entferne sie vorher. Bei reinem Text sollten Stringfunktionen bzw. ggf. ein recht einfacher regulärer Ausdruck ausreichen.
MfG ChrisB
Hi,
Mein Problem ist nur, wie ich es schaffe dass ich die Zusatzinfo (in dem Fall die Ergebnisse) nicht im Inputfeld landet.
Gerade hast du noch geschrieben, *dass* das nicht so wäre, und gesagt, das wäre dein Problem - geht es etwas weniger konfus?
sry hab das irgenwie falsch beschrieben
Wenn das, was ins Inputfeld geschrieben wird, Bestandteile enthält, die du nicht haben willst - dann entferne sie vorher. Bei reinem Text sollten Stringfunktionen bzw. ggf. ein recht einfacher regulärer Ausdruck ausreichen.
Ich hab hier das Script:
<?php
require_once 'Configuration.php';
require_once 'MyDB.php';
$sql = "SELECT kommentar,
email
FROM comments
WHERE autor LIKE :username
LIMIT 10";
$stmt = MyDB::getInstance()->prepare($sql);
$stmt->execute(array(
':username' => "%".$_REQUEST['sourceInput']."%",
));
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo '<ul style="overflow:auto;>';
foreach($result as $row) {
printf('<li><b>%s</b><span style="float: right;"> %s</span></li>', $row['kommentar'], $row['email']);
}
echo '</ul>';
?>
Wie du siehst bekomme ich 2 Sachen aus der DB email und kommentar.
Unten gebe ich als Liste die Ergebnisse zurück.
Wenn du dir z.B. Google anschaust ist dass ja auch so.
Es Steht z.B. selfhtml 2323233Ergebnisse.
Wenn ich auf "Selfhtml 2323233Ergebnisse" in der Liste klicke, verschwindet die Liste und im Inputfeld steht nur "Selfhtml".
So hoffe dass ich mich jetzt verständlicher ausgedrückt habe.
Hi,
Ich hab hier das Script:
Das ist ja nur der serverseitige Teil, der die Daten ermittelt.
Davon, wie die Daten dann clientseitig aus der Liste ins Inputfeld gelangen, sehe ich hier aber nichts. Und nein, ich will es auch gar nicht - nicht noch mal einfach den Code hinklatschen, sondern zeigen, wie du versucht hast, den Vorschlag umzusetzen!
MfG ChrisB
Hi,
Ich hab hier das Script:
Das ist ja nur der serverseitige Teil, der die Daten ermittelt.
Davon, wie die Daten dann clientseitig aus der Liste ins Inputfeld gelangen, sehe ich hier aber nichts. Und nein, ich will es auch gar nicht - nicht noch mal einfach den Code hinklatschen, sondern zeigen, wie du versucht hast, den Vorschlag umzusetzen!
Ok, schaus mir noch mal an und poste es dann morgen nochmal.
Danke, schon mal
MfG
Simon
So wie ich gestern gesagt habe, hab ich mirs nochmal angeschaut und habs fast geschaft.
Ich hab gelesen dass man als Option eine eigene "Einfügefunktion" ausführen kann.
Dass heißt ich hab hier:
<script type="text/javascript">//<![CDATA[
new Ajax.Autocompleter('sourceInput','destinationDiv','search.php', {
updateElement: insert,
frequency: 0.4
});
//functions
function insert(li){
$('sourceInput').value = li.attributes.getNamedItem("kommentar").value;
}
//]]></script>
"updateElement" hinzugefügt um die "insert" Funktion aufzurufen.
Jetzt häng ich bei der Funktion.
Also wenn mir da jemand helfen könnte wär es perfekt.
MfG
Simon
Hi,
Jetzt häng ich bei der Funktion.
Also wenn mir da jemand helfen könnte wär es perfekt.
Wenn du sagst, wobei - dass du "hängst", ist eine ebenso unbrauchbare Problembeschreibung wie "funzt nich".
MfG ChrisB
Wenn du sagst, wobei - dass du "hängst", ist eine ebenso unbrauchbare Problembeschreibung wie "funzt nich".
Ja dass is ja dass Problem, dass ich dir nicht sagen könnte wo mein Problem liegt, weil ich überhaupt keine Ahnung von JS habe.
Hab bis jetzt nur mit HTML, CSS und PHP gearbeitet.
MfG
Simon
Hi,
printf('<li><b>%s</b><span style="float: right;"> %s</span></li>', $row['kommentar'], $row['email']);
Wenn du von diesen beiden Werten, Kommentar und E-Mail, nur einen übernehmen willst - dann brauchst du ja gar nicht gross mit Stringfunktionen rangehen, denn sie sind ja schon getrennt.
MfG ChrisB