Edgar Ehritt: Flexible Umsetzung dreier abh. Auswahllisten (Struktur)

Beitrag lesen

Hallo Enrico,

mit gewisser Wahrscheinlichkeit wirst Du die Daten der Auswahllisten aus einer Datenbank holen und in ein Datenfeld umwandeln, aber vielleicht fällt Dir auch etwas anderes ein.

  
# Beispieldatenfeld:  
$select_listen=array(  
#        Titel                      Genre     Alter  
   array('Fightclub',               'Komödie', 9),  
   array('Was vom Tage übrig blieb','Romanze', 24),  
   array('Zeugin der Anklage',      'Drama',   39)  
#  weitere...  
);

Sollte die Struktur eine andere sein, bitte ich um eine beispielhafte Darstellung.

  1. Anfangsbuchstaben
  2. Genre
  3. Altersfreigabe

Alle drei Listen sind zu Beginn mit allen, dem jeweiligen Kriterium, entsprechenden
Möglichkeiten gefüllt,...

(Anmerkung: Daraus folgte, dass der gesamte Datensatz an den Client ausgeliefert würde. Je nach Bestand, kann das schon recht/zu viel sein, wenn ich beispielsweise an Videotheken denke.)

Nun möchte ich mein Vorhaben so steuern, dass man nicht zwangsläufig hierarchisch vorgehen
muß (Auswahl Anfangsbuchstabe -> Auswahl Genre -> Auswahl Altersfreigabe), sondern hier
absolute Freiheiten hat, so dass man beispielsweise die beiden Auswahllisten "Anfangsbuchstabe"
und "Genre" leer lässt und nur einen Wert aus der Auswahlliste "Altersfreigabe" selektiert. ...

Da ja die Daten komplett dem Client vorliegen, würde ich sie dort auch verarbeiten lassen (also Javascript). Jedem Element <select> sind zwei Atribute zuzuweisen, die die Möglichkeiten der jeweils anderen Auswahllisten indizieren. Per Auswahl (onchange) werden die anderen Auswahllisten durch Funktionsaufruf durchlaufen (DOM) und angepasst. Hierbei würde ich jedoch nicht mit "disabled" arbeiten. Es ist der Übersichtlichkeit IMHO zuträglicher, die nicht weiter benötigten Elemente durch .removeChild() zu entfernen.

Für die Implementierung in PHP, in dem Sinne auch für sehe ich schlichtweg Dein Problem nicht, wenn Du nach Struktur fragst. Wird bsw. das Alter angegeben, wird alles, was nicht ($alter<=$select_listen[$n][2]) entspricht, nicht mehr beachtet. Genauso sieht es mit den anderen beiden Möglichkeiten aus: ($genre==$select_listen[$n][1]) ($titel_abc==$select_listen[$n][0]{0}). Welche Auswahl (Titel, Genre, Alter) getroffen wurde, wirst Du sicher mit if, elseif und else ermitteln können.

Gruß aus Berlin!
eddi

--
Hasen schießt man breit streuend mit Schrot unter Gebrauch der "Büchse", Hochwild will anders erlegt werden ^,-