Vinzenz Mai: [PHP / MySQL] Mehrere Drop Downs -> select

Beitrag lesen

Hallo Phillip,

zum einen ein paar Bedienungshinweise zum Forum, die Du auch in der Forums-Hilfe unter Postings formatieren findest. Du hast es mit "Trial and Error" probiert, halt nicht getroffen, was kein Beinbruch ist. Leerzeichen bei meinen Angaben weglassen. [1]

Bilder kannst Du hier mit [ image:url ] einbinden.

dazu soll man zu einer quasi gleichen ansicht wie beim eintragen gelangen. in höhre der anzahl der tore die drop downs mit jeweils allen spielern des vereins. allerdings sollen die bereits gespeicherten torschützen unter den spielern "selected" werden. ihr wisst denk ich mal, was ich meine :)
das habe ich versucht nur leider funktioniert das irgendwie nicht (min noch ausser acht lassen):

hier ist mein zugehöriger code:

Syntaxhighlightning geht mit [ code lang=... ]Hier Dein Code[ /code ]. Es sind viele Sprachen möglich, siehe oben verlinkte (nicht vollständige) Doku. [2]

<?php

$tore2 = $row["ergebnis_2"];

[...]

?>

  

> zur sicherheit auch nochmal hier: <http://nopaste.php-q.net/183833>  
  
anklickbare Links mit [ link:url ] erzeugen  
  

> hier sind meine beiden datenbankstrukturen:  
>   

sql ist eine gültige Sprache für code :-)  
  
~~~sql
  

> CREATE TABLE dfc_liga_torschuetzen (  
>   id int(11) NOT NULL auto_increment,  
>   match_id int(11) NOT NULL default '0',  
>   links text NOT NULL,  
>   rechts text NOT NULL,  
>   spieler_id int(11) NOT NULL default '0',  
>   minute int(11) NOT NULL default '0',  
>   liga text NOT NULL,  
>   PRIMARY KEY  (id)  
> ) TYPE=MyISAM;  

Hmm, ich habe Deinen Code nicht wirklich verstanden, weil er aus dem Zusammenhang gerissen ist, und die Initialisierung und der Zweck mancher Variablen mir unklar oder zweifelhaft ist. Deshalb einfach ein paar grundsätzliche Anmerkungen zur Problemlösung:

Du fragst innerhalb von Schleifen mehrfach die Daten ab, die Du bereits im vorhergehenden Durchlauf abgefragt hast. Datenbankabfragen sind im Vergleich teuer, d.h. ressourcenintensiv. Du könntest diese deutlich einschränken.

Weiterhin könntest Du die Gesamtaufgabe in einzelne überschaubare Abschnitte. Du wirst feststellen, dass einzelne Abschnitte sich immer wieder wiederholen, nur mit etwas anderen Ausgangsdaten. Dies sind ideale Kandidaten für Funktionen.

Es ist eine gute Idee, innerhalb dieser Funktionen _keine_ Ausgabe zu generieren, sondern statt dessen Zeichenketten zusammenzubauen, die Du später ausgeben kannst.

Du hast ein bestimmtes Match
// Vier Abfragen an die Datenbank liefern Dir alle Daten,
// die Du benötigst. [3] Speichere die Ergebnisse in Arrays ab.
Ermittle die Spielerliste der Heimmannschaft
Ermittle die Spielerliste der Gastmannschaft
Ermittle die Details zu den Toren der Heimmannschaft
Ermittle die Details zu den Toren der Gastmannschaft

// Verarbeite die Tore der Heimmannschaft
Du benötigst die Spielerliste der Heimmannschaft
und die Torliste der Heimmannschaft

Gebe ein numeriertes Array zurück. Jeder Array-Eintrag
ist ein assoziatives Array mit den zwei Schlüsseln
'Mannschaftsliste' und 'Zeitpunkt'

Für jedes Tor dieser Mannschaft
    Beginne eine Select-Liste
    Für jeden Spieler der Mannschaft
        Erstelle einen <option>-Eintrag
        Wenn der Spieler der Torschütze ist
            Markiere den Eintrag als ausgewählt
        Ende Wenn
        Schreibe den Spielernamen
        Schliesse den Eintrag
    Ende Für
    Schliesse die Liste
    Speichere die Liste im Array-Eintrag
    Wenn der Zeitpunkt bekannt ist
        Speichere den Zeitpunkt im Array-Eintrag
    Ende Wenn
Ende Für
Gebe das Array zurück

// Gehe diese Aufgaben mit den Toren der Gastmannschaft
// auf gleiche Art und Weise durch

// Gebe die Arrays in geeigneter Reihenfolge aus.

Mit diesem Ansatz kannst Du die Anzahl der Datenbankzugriffe deutlich reduzieren und Deine Ergebnisse flexibel ausgeben, z.B. als Liste von Toren mit Detailangaben oder als Tabelle von Torschützen (Heim), Zeitpunkt (Heim), Torschützen (Gast), Zeitpunkt (Gast).

Die benötigten Funktionen sollten sich aus dieser Vorgehensweise ebenfalls von selbst anbieten (mit Übergabe- und Rückgabeparametern).

Freundliche Grüße

Vinzenz

[1] Ich bin im Moment zu bequem, um nach der Methode "Gunnar" vorzugehen.
[2] Mal schauen, ob ich den Bugtracker noch bedienen kann.
[3] Man käme mit zwei Abfragen aus, aber die vier hier scheinen mir angebracht.