molily: Nur Ein "Input", aber Mehrere "Names"?

Beitrag lesen

Hallo, Jean,

Ich möchte nur EIN Input(Eingabefeld), aber hätte gerne die
Option zwischen Mehreren Names(Kategorien) zu wählen. Z.B.
mittels Checkboxen.

Mit Checkboxen realisiert man eine multiple Auswahlmöglichkeiten, welche man gleichzeitig aktivieren kann.

D.h. ich möchte, dass der Nutzer der Abfrage sich z.B.
zwischen den Kategorien "Ort" und "Datum" entscheiden muss
(Checkbox) und anschliessend nur Einen von beiden Wunsch-
begriffen in das Eingabefeld einträgt.

In diesem Fall wären Radiobuttons geeignetere Formularelemente, da du eine Entweder-Oder-Auswahl möchtest, beispielsweise:

(o) Ort          oder         ( ) Ort
( ) Datum                     (o) Datum

Zu Radiobuttons findest du in Selfhtml die nötigen Informationen: http://selfhtml.teamone.de/html/formulare/auswahl.htm#radiobuttons

Es gibt für mich keine andere Lösung, da meine Datenbank
bereits vorgegeben ist. Sonst wäre es ja viel einfacher,
man könnte gleich alle Begriffe in beliebiger Reihenfolge
in das Feld eingeben.

Nein, ich finde es viel benutzerfreundlicher, dass der Besucher speziell nach den einzelnen Kriterien suchen kann. Falls du eine UND-Suche (Suche nach Datum UND Ort) realisieren willst, würde ich dir vorschlagen, dass du dafür zwei Eingabefelder vorsiehst, eines mit der Beschriftung »Ort« und eines mit der Beschriftung »Datum«. Daneben solltest du schreiben, dass der Benutzer eines der beiden oder beide ausfüllen kann.
Wenn du nur ein Eingabefeld benutzt, musst du erstens damit rechnen, dass du erst alle Suchbegriffe auseinanderdividieren musst und sie einzeln überprüfen musst. Stell dir vor, dass in das eine Eingabefeld (möglicherweise fehlerhafte) Suchabfragen wie »Castrop-Rauxel +1.1.2003« oder »5.05.03 frankfurt am main« eingegeben werden. Nun bedenke, dass du diese Eingaben in Datum und Ort aufsplitten musst, um sie dann anschließend auf ihre Syntax zu überprüfen, um erst im folgenden Schritt die Datenbankabfrage mit den zwei Kriterien zu starten.

Sowohl für die Programmierung als auch für die Bedienung ist für diesen Fall (bei der UND-Suche) aus den genannten Gründen von einem einzigen kombinierten Eingabefeld abzuraten.

Mein aktueller Quelltext sieht so aus:

<INPUT type="hidden" name="db" value="abfrage.csv">

Argh! Das würde in unbedingt im Skript hartkodieren, denn das kann eine Sicherheitslücke darstellen. Womöglich liegt abfrage.csv sogar im selben Verzeichnis und ist world readable.

<INPUT TYPE="text" NAME="Datum" SIZE="20">
<INPUT TYPE="text" NAME="Ort" SIZE="20">

Momentan habe ich also 2 "Inputs". Ich möchte aber nur Eins,
mit dem man nach beiden "Names" suchen kann.

Ich bin mir nicht einmal so sicher, ob das die intuitivste Lösung ist, selbst bei einer exklusiven statt kombinierten Suche - ich persönlich benutze für so etwas zwei Eingabefelder, weil ich dies am verständlichsten finde. Wie auch immer, eine Lösung mit zwei Radiobuttons und einem Eingabefeld sähe ungefähr folgendermaßen aus:

Radiobuttons (Auswahl Datum XOR Ort):

<input type="radio" name="suchmethode" value="datum" id="datum" /> <label for="datum">Nach Datum suchen</label>
<input type="radio" name="suchmethode" value="ort" id="ort" /> <label for="ort">Nach Ort suchen</label>

Dann einfach das eine Eingabefeld:

<label for="abfrage">Suchkriterium (entweder Ortsname oder Datum im Format TT.MM.YYYY)</label> <input type="text" name="suchabfrage" id="abfrage" />

Das allerwichtigste ist natürlich, dass du oben/neben/unter dem Formular eine Erklärung lieferst, wie das Formular zu bedienen ist, was es mit der Auswahl auf sich hat und wie beispielsweise das Datum eingegeben werden muss, damit es das Skript interpretieren kann.

Im Skript fragst du einfach ab, welchen Wert der Parameter »suchmethode« hat und behandelst entsprechend - natürlich nach vorheriger Prüfung - den Parameter »suchabfrage« entweder als Ortsnamen oder Datum. Die name-Eingabefeldnamen sowie die value-Attribute und die Beschreibungen in den label-Elementen kannst du natürlich anpassen, der Code ist nur ein Beispiel.

Grüße,
Mathias

--
Mein Leben, ein Leben ist es kaum, / Ich gehe dahin als wie im Traum.
Wie Schatten huschen die Mensch hin, / Ein Schatten dazwischen ich selber bin.
Und im Herzen tiefe Müdigkeit - / Alles sagt mir: Es ist Zeit ...
(Theodor Fontane, Mein Leben)