enrico: Gelöst: Warnungen --- Erstellung einer univ. Funktion ?

Beitrag lesen

Hallo,

das Problem mit den Warnungen hätten wir gelöst, ich mußte die beiden Anweisungen
"array_unique" und "sort" in meinem Fall, u.U. auch generell, nur alleine notieren,
ohne eine erneute Zuweisung zu machen:

So funktionierte es nicht:

$_Array = array_unique ($_Array);
     $_Array = sort ($_Array);

So klappt es bestens:

array_unique ($_Array);
     sort ($_Array);

Nun stehe ich aber vor dem heftigen Vorhaben, eine Funktion zu entwickeln, die mir
die verschiedenen Auswahllisten den ausgewählten Kriterien entsprechend füllt, auch
unter Berücksichtigung der Abhängigkeiten.

Klingt kompliziert, sollte aber an folgender Erläuterung klar werden:

In Excel kann man verschiedene Filterkriterien auswählen, nach denen ein Sheet
sortiert werden kann, so will ich es auch handhaben:

Bislang habe ich folgende Schritte erfolgreich umgesetzt:

1. Festlegung der gewünschten Filterkriterien, wobei die Listen dynamisch um bereits
   gewählte Kriterien reduziert werden:

Liste 1:            Liste 2:            Liste 3:
   -Keine Auswahl      -Keine Auswahl      -Keine Auswahl
   -Anfangsbuchstabe   -Anfangsbuchstabe   -Anfangsbuchstabe
   -Genre              -Genre              -Genre
   -FSK                -FSK                -FSK

Verfügbare Kriterien nach Auswahl "Anfangsbuchstabe" aus Liste 1:

Liste 1:              Liste 2:         Liste 3:
   -[Anfangsbuchstabe]   -Keine Auswahl   -Keine Auswahl
   -Keine Auswahl        -Genre           -Genre
   -Genre                -FSK             -FSK
   -FSK

Verfügbare Kriterien nach Auswahl "FSK" aus Liste 2:

Liste 1:              Liste 2:         Liste 3:
   -[Anfangsbuchstabe]   -[FSK]           -Keine Auswahl
   -Keine Auswahl        -Keine Auswahl   -Genre
   -Genre
   -FSK

Diesen Mechanismus habe ich für alle drei Listen eingebaut, so dass man hier völlig
   freie Hand hat, was die Filterungwünsche angeht:

Anfangsbuchstabe -> Genre -> FSK
   Genre -> FSK
   FSK -> Genre
   Anfangsbuchstabe
   ...usw...

2. Über die Schaltfläche "Listen füllen" will ich nun die Auswahllisten entsprechend der
   zuvor ausgewählten Kriterien füllen lassen, zunächst ohne unmittelbare Abhängigkeiten
   zueinander, diese sollen erst im Schritt 3 greifen.

Das Befüllen ist ansich kein Problem, ich habe es, aus programmiertechnischer Sicht,
   sicherlich zu umständlich umgesetzt, aber es klappt:

[1]  $Array_Anfangsbuchstaben = Anfangsbuchstaben_zurueckliefern ($Inhalt);
   [A]  $Optionen_Filter_1       = Liste_fuellen ($Array_Anfangsbuchstaben);

[1]  function Anfangsbuchstaben_zurueckliefern ($Inhalt)
        {
           $Array_Temp = array ();

for ($i = 0; $i < count ($Inhalt); $i++)
           {
              $Erstes_Zeichen = substr ($Inhalt[$i]["Titel"], 0, 1);

if (is_numeric ($Erstes_Zeichen))
              {
                 $Erstes_Zeichen = "#";
              }

if (! in_array ($Erstes_Zeichen, $Array_Temp))
              {
                 array_push ($Array_Temp, $Erstes_Zeichen);
              }
           }

array_unique ($Array_Temp);
           sort ($Array_Temp);

return $Array_Temp;
        }

[2]  $Array_Genres      = Genres_zurueckliefern ($Inhalt);
   [A]  $Optionen_Filter_1 = Liste_fuellen ($Array_Genres);

[2]  function Genres_zurueckliefern ($Inhalt)
        {
           $Array_Temp = array ();

for ($i = 0; $i < count ($Inhalt); $i++)
           {
              if (! in_array ($Inhalt[$i]["Genre"], $Array_Temp))
              {
                 array_push ($Array_Temp, $Inhalt[$i]["Genre"]);
              }
           }

array_unique ($Array_Temp);
           sort ($Array_Temp);

return $Array_Temp;
        }

[A]  function Liste_fuellen ($Array_Optionen)
        {
           $Array_Temp = "";

for ($i = 0; $i < count ($Array_Optionen); $i++)
           {
              $Array_Temp .= '<option value="' . $Array_Optionen[$i] . '">' . $Array_Optionen[$i] . '</option>';
           }

return $Array_Temp;
        }

------------------------------

3. Erstellung einer universellen Funktion zum Befüllen der Listen, unter Berücksichtigung
   gegebener Abhängigkeiten:

Hier liegt mein Problem:

Mein Problem ist nun, wie ich eine universelle Funktion erstellen muß, so dass ich per Übergabe
spezifischer Parameter und unter Berücksichtigung etwaiger Abhängikeiten die Listen füllen kann:

Ein paar Beispiele zur Verdeutlichung, die Schritte 1 und 2 lasse ich jetzt weg:

Meine Textdatei enthält ausschnittsweise folgende Angaben (die Inhaltsbeschreibungen sind
unwichtig und deshalb ebenfalls ausgespart):

1|LIGHTHOUSE - INSEL DES GRAUENS|Horror/Thriller|16
2|ORIGINAL SIN|Drama/Thriller|16
3|OPEN WATER 2|Thriller|12
4|LEFT IN DARKNESS - DÄMONEN DER DUNKELHEIT|Horror/Fantasy|18

In diesem Fall ergäben sich bei den nachfolgenden Auswahlmöglichkeiten die genannten Abhängigkeiten:

Anfangsbuchstabe -> FSK
L                -> -16
                    -18

Es gibt 2 Filme, die mit "L" beginnen und die ab 16 bzw. 18 freigegeben sind

Genre            -> Anfangsbuchstabe
Horror/Thriller  -> L

Es gibt nur eine Film aus dem Genre "Horror/Thriller", somit steht auch nur der Anfangsbuchstabe "L"
zur Auswahl.

...usw...

Und hier eine universelle Funktion zu kreiren, die mir flexibel nach den übergebenen Kriterien (entweder
nur ein Kriterium, es können aber auch alle drei gewählt werden) die Listen befüllt, ist mein Problem.

Könnt Ihr mir hier weiterhelfen und mir Ratschläge geben, wie diese Funktion aussehen müsste ?

Wie immer: vielen, vielen, vielen lieben Dank für Eure Unterstützung.

Gruß
enrico