• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

F-W P

Neues Mitglied
Wie kann ich auf einer HTML-Page eine Combobox erzeugen, die dynamisch auf Eingaben reagiert, und sich dann, z.B. nach dem dritten Zeichen dynamisch aus einer Datenbanktabelle füllt.

Hintergrund:

In der Datenbanktabelle, die zum füllen der Combobox dient stehen mehrere tausend Begriffe, die aber nicht alle in aus der Datenbank in die Combobox geladen werden sollen. Zum anderen sollen Begriffe, die nicht in der Datenbank gespeichert sind dennoch eingebbar sein, dann zwar kein Ergebnis bei der Abfrage zu diesem Begriff liefern, aber für eine spätere Erweiterung in der Datenbank gemerkt werden.

Geht so etwas mit HTML und PHP, oder muss ich da andere technische Hilfsmittel verwenden?
 
Werbung:
Danke für die schnelle Antwort,

das heißt ich benötige also als dritte Komponente noch AJAX? Mal sehen, ob das bei dem Hoster auch unterstützt wird.
 
Werbung:
Ajax hat nichts mit dem Hoster zu tun :D

Ajax = Asynchronous JavaScript and XML
 
Danke für die Antworten,

das heißt also (jeder) Server, der PHP unterstützt, kann automatisch AJAX "verwenden".

Muss ich die bisherigen Seiten (meist HTML und PHP) vollständig umstellen? Und worauf sollte ich dabei in erster Linie achten? (Softwareentwicklung mittels Delphi, Pascal, Fortran, Basic, ... und Datenbankanwendungen mittels SQL sind mir ja bekannt, aber mit der Webentwicklung hatte ich bislang noch nicht viel zu tun).

Gibt es für die beschriebene Anwendung schon Beispiele hier im Forum?

Die erste Seite, bei der ich dynamische Comboboxen benötige ist eine Suchabfrage, mit momentan zwei Eingabefeldern (dynamische Combobox) mit den Inhalten für "Was wird gesucht" und "Wo wird gesucht". Beide Boxen sollten nach dem Eintippen von Zeichen automatisch Vorschläge bringen, die durch Auswahl übernommen werden können und die sich mit dem Eintippen von weiteren Zeichen immer weiter präzisieren. Die Inhalte für beide Comboboxen sind in separaten MySQL-Datenbanktabellen hinterlegt.

Die erste Box ("Was") sollte außerdem die Möglichkeit zulassen, neue Begriffe die noch nicht in der Datenbank hinterlegt sind zuzulassen, um sie dann in der Datenbank für zukünftige Suchanfragen zu speichern.

Bei der zweiten Box ("Wo") ist das Hinzufügen von bislang in der Datenbank nicht hinterlegten Begriffen nicht notwendig, allerdings wäre hier eine "fehlertolerante Suche" ähnlich wie bei Google mit "meinten Sie ..." hilfreich, wenn es Orte mit ähnlichen Schreibweisen gibt (Mülheim an der Ruhr, Müllheim [Baden], Mühlheim am Main, ...), da viele Mülheim direkt von Mühle ableiten.
 
Werbung:
Gibt es für die beschriebene Anwendung schon Beispiele hier im Forum?
Glaube ich kaum, aber in den Weiten des Internets wird sich da vielleicht was finden lassen.

Dir sollte aber klar sein, dass, wenn man damit bisher nicht zu tun hatte, dein Vorhaben keine kleine Hausnummer ist, da wirst du einiges an Zeit investieren müssen.
 
Glaube ich kaum, aber in den Weiten des Internets wird sich da vielleicht was finden lassen.
Da liegt schon ein Problem, weil eine "Auf gut Glücksuche" mit den Begriffen
HTML PHP Combobox dynamisch editierbar
lieferte nicht wirklich brauchbares, wahrscheinlich heißen diese "comboboxen" mal wieder anders als man es von den anderen Programmiersprachen kennt.

Dir sollte aber klar sein, dass, wenn man damit bisher nicht zu tun hatte, dein Vorhaben keine kleine Hausnummer ist, da wirst du einiges an Zeit investieren müssen.
Der Zeitfaktor ist genau mein Problem, denn um neben meiner regulären Arbeit mal eben schnell so etwas aufzusetzen fehlt mir irgendwie Zeit mich auch noch in dieses umfrangleiche Thema einzuarbeiten, zumal die meisten Tutorials wie SelfHTML, SelfPHP, ... auf solche speziellen Fragen auch nicht so tiefgründig eingehen.
 
Werbung:
Aber ich denke bei mehr als Hundert Einträgen sieht das nicht so schön aus im Quellcode. Deswegen lass mein Vorschlag lieber weg. Das Plugin, welches bdt600 gepostet hatte, sollte dir besser helfen.
 
Werbung:
Noch eine Möglichkeit, die perfekt mit PHP und einer SQL-Abfrage im Hintergrund funktioniert.
Code:
source: "search.php"
und man kann Datenbanken recht schön abfragen.
Ein Parameter für eine Mindesteingabe, wann die Suche gestartet werden soll ist ebenfalls vorhanden. Ich setzte das für die Suche nach Artikeln ein und konnte bisher keinerlei Probleme (insbesondere Performance) festellen.

https://jqueryui.com/autocomplete/
 
Aber ich denke bei mehr als Hundert Einträgen sieht das nicht so schön aus im Quellcode.

Müsste sowieso aus einer DB-Tabelle gelesen werden, da ich nicht bei jeder Erweiterung den Quellcode anpassen möchte. Würde wahrscheinlich auch gehen, dass die "Option Values" aus einer MySQL-Datenbanktabelle gelesen werden können.
 

Anhänge

  • suche.txt
    10,4 KB · Aufrufe: 4
Werbung:
Puuuuhhhhh.

  1. Wieso den DocType doppelt?
  2. Wieso den Head doppelt?
  3. Wieso den Body doppelt?
  4. Was soll der echo-Marathon?
  5. Wo wird die jquery-Basis eingebunden?
Und bitte poste den Quellcode und nicht als Text-Datei anhängen. Noch besser ist ein Link zur Seite
 
Werbung:
Ganz verstehe ich die Fehlermeldungen aber nicht, denn wenn ich mir den Quellcode ansehe

Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
  <link rel="stylesheet" type="text/css" href="db1112.css">
  <link href="dist/jquery-editable-select.min.css" rel="stylesheet" />
  <link href="http://www.jqueryscript.net/css/jquerysctipttop.css" rel="stylesheet" type="text/css">
</head>
<body>
<?php
  /* Verbindung aufnehmen und Datenbank auswählen */
  include "db1112.inc.php";

  $sql1  = "SELECT * FROM Seitenaufrufe WHERE Seite = upper('Suche')";
  $res1  = mysql_query($sql1);
  $num1  = mysql_num_rows($res1);
  $dsatz1 = mysql_fetch_assoc($res1);

echo "<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>";
echo "<html xmlns='http://www.w3.org/1999/xhtml' lang='en' xml:lang='en'>";
echo "<head>";
dann müssen sich die Fehlermeldungen irgendwo anderes drauf beziehen oder?

  1. error.png
    Line 4, Column 61: end tag for "link" omitted, but OMITTAG NO was specified
    <link rel="stylesheet" type="text/css" href="db1112.css">


    You may have neglected to close an element, or perhaps you meant to "self-close" an element, that is, ending it with "/>" instead of ">".

  2. info.png
    Line 4, Column 4: start tag was here
    <link rel="stylesheet" type="text/css" href="db1112.css">
 
Siehe #16

Weiterhin:

  • Stelle auf HTML5 um
  • Nutze UTF-8
  • Die MySQL-Extension von PHP ist veraltet, nutze die MySQLi-Extension
 
Zurück
Oben