Christian Hofer: Textfeld nach Eingabe der ersten Buchstaben vervollständigen

Hallo,

folgende Situation:

-> Datenbank mit gespeicherten Namen
-> Textfeld

Wenn ich jetzt ins Textfeld z.B. "Her" eingebe, dann soll automatisch vervöllständigt werden, wenn es z.B. den Namen "Herrmann" in der Datenbank gibt...

Gibt es einen Lösungsansatz für Javascript oder muss man z.B. auf ein Java-Applet zurückgreifen, um diese Funktionalität zu erreichen!

Danke im Voraus,
Christian

  1. Hallo Christian,

    -> Datenbank mit gespeicherten Namen
    -> Textfeld

    Wenn ich jetzt ins Textfeld z.B. "Her" eingebe, dann soll automatisch vervöllständigt werden, wenn es z.B. den Namen "Herrmann" in der Datenbank gibt...

    Es gibt durchaus die Möglichkeit, dies in Javascript zu machen. Hierzu müsstest Du  alle Namen der Datenbank zuerst in ein Array schreiben, das dann mit der Eingabe im Textfeld verglichen wird. Genaueres könnte ich Dir noch posten...

    Allerdings wird die Sache ab einer gewissen Anzahl von Datensätzen extrem unperformant. Wieviele Datensätze (Namen) sind es denn?

    Grüße,
    bluntburn

    --
    jeden Tag 'ne Currywurst...
    1. Wieviele Datensätze (Namen) sind es denn?

      Es ist eine Kundendatenbank und da kann man schon von einigen tausend Einträgen ausgehen. An deinen Vorschlag habe ich auch schon gedacht, 5.000 Einträge mit einem search durchzugehen - und das bei jeder Eingabe - ist einfach nicht performant genug...

      Meinst du es gibt eine Möglichkeit dies mit einem Java-Applet performanter zu gestalten??

      1. hi,

        Es ist eine Kundendatenbank und da kann man schon von einigen tausend Einträgen ausgehen. An deinen Vorschlag habe ich auch schon gedacht, 5.000 Einträge mit einem search durchzugehen - und das bei jeder Eingabe - ist einfach nicht performant genug...

        dann sorge doch selber dafür, dass du die suche etwas performanter gestalten kannst.
        du könntest ja mehrdimensionale arrays verwenden, in denen du die begriffe ablegst. auf der ersten ebene für jeden buchstaben ein array, also
        begriffe[a][0] = "a...";
        begriffe[a][1] = "a...";
        begriffe[b][0] = "b...";
        begriffe[b][0] = "b...";

        so bräuchtest du nach der eingabe des ersten buchstabens schon nur noch eine teilmenge durchsuchen.
        bei bedarf weitest du das ganze dann noch auf eine oder zwei weitere array-ebenen aus, also
        begriffe[a][a] = "aa..";
        begriffe[a][b] = "ab..";

        gruss,
        wahsaga

        1. hi,

          bei bedarf weitest du das ganze dann noch auf eine oder zwei weitere array-ebenen aus, also
          begriffe[a][a] = "aa..";
          begriffe[a][b] = "ab..";

          korrektur:

          begriffe[a][a][0] = "aa..";
          ...
          begriffe[a][b][1] = "ab..";
          ...

          gruss,
          wahsaga

          1. Danke für eure Hilfe, werde die Arraysortierung mal durchprobieren.

            Gruß,
            Christian

      2. Hi Christian,

        Meinst du es gibt eine Möglichkeit dies mit einem Java-Applet performanter zu gestalten??

        Definitiv ja! Allerdings ist das jetzt nicht mal eben so zu machen.
        Den Vorschlag von wahsaga kann man sicherlich auch nochmal überdenken... es bleibt aber das Problem einer Clierntseitige Lösung, dass alle Datensätze mitgeladen werden müssen, was dann eine beachtliche Datenmenge ausmachen wird...

        Grüße,
        bluntburn

        --
        jeden Tag 'ne Currywurst...
  2. hi,

    Gibt es einen Lösungsansatz für Javascript oder muss man z.B. auf ein Java-Applet zurückgreifen, um diese Funktionalität zu erreichen!

    gibt es sicherlich - aber wäre ein select-feld an so einer stelle nicht sinnvoller?

    gruss,
    wahsaga