Dynamisches Dropdown auslesen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Dynamisches Dropdown auslesen

    So nun habe ich eine echte Nuss zu knacken. Ich sitze an dem Problem bereits seit einigen Tagen und drehe mich im Kreis. Es geht ummer noch um eine Liga, Teams und Spiele. Stellt Euch einfach eine Fussballliga vor.

    Es gibt Spieltage, an dem die verschiedenen Teams gegenaneinander antreten. (Weiß jeder)

    Ich möchte nun in der Lage sein, Spieltage anzulegen. Dafür habe ich ein Formular das aus lauter Dropdownfeldern besteht. In jedem Dropdown sind alle Teams die zur Liga gehören auswählbar. Man geht nun also jedes Reihe durch und wählt jeweils Heimmanschaft und Gastmanschaft. Wenn am Ende alle Paarungen ausgewählt sind klickt man auf speichern.

    So, nun die erste Feinheit. Eine Liga kann 8 Manschaften haben, eine andere nur 4. Bei 8 wären es also 4 Spiele, bei 4 Teams nur 2.

    Das Formular muss also dynamisch erstellt werden.

    Ich ermittle also erst die Anzahl der Teams und teile das dann durch 2.
    Die Anzahl benutze ich in der Schleife, die die Dropdownfelder aufbaut.

    PHP-Code:
    $countDropdown=0;

    for (
    $count=0;$count<$AmountTeams;$count++)
    {

    If (
    $row 3)
    {
    echo 
    '<td>';
    echo 
    '<select name="Match['.$countDropdown.'][LeagueMatches]">';
    echo 
    $Teams;
    echo 
    '</select>';
    echo 
    '</td>';
    $row=$row+1;
    $countDropdown=$countDropdown+1;
    }
    else
    {    
    echo 
    '</tr>';
    echo 
    '<br/>';
    echo 
    '<tr>';
    $row=1;

    Ok, danach kommt das Auslesen:

    PHP-Code:
    for ($i=0$i <count($_POST['Match']);$i++)
    {              {
    $Match[$i]=$_POST['Match'][$i];
                
    $Spiele[$i]=$Match[$i]['LeagueMatches'];

    gebe ich jetzt mal $Spiele[$i] aus, bekomme ich alle 4 Werte (bei 4 Teams) angezeigt. So schön so gut. Ich möchte das nun aber in die DB schreiben, wobei im Datensatz jeweils Spieltag, Spielnr, Datum, Heimmanschaft, Gastmanschaft steht.

    Ich muss also jeweils 2 zusammengehörige Werte haben (Heimmanschaft, Gastmanschaft)

    Doch wie ist das Möglich? Ich habe es damit versucht:

    PHP-Code:
    for ($k=0$k 1$k++)
    {
    $Matches[$k]=$Match[$k]['LeagueMatches'];
    $Spiel=array("Teams" => array("Home" => "'$Matches[0]'",
                  
    "Guest" => "'$Matches[1]'"));

    Aber es waren am Ende immer alle 4 Werte drinn und kann ich wirklich hoffen dass die Werte alle sauber im Array gelandet sind und ich ohne spezielle Abfrage des Selectfeldes die Werte durchlaufen kann? Ich meine, wenn mal was schief läuft und ich das value vom select Match1 nach Match2 kommt im Array, ich wei? nicht ob das Möglich ist oder nicht, aber wenn dann würde natürlich alles durcheinander kommen. Muss ich also explizit die Felder mit den Namen checken, so dass ich sicher gehen kann das wirklich die richtigen Teams am Ende gegeneinander spielen?

    Das ist wirklich knifflig, aber ich hoffe jemand hat einen Ansatz, wie man an so etwas rangeht. Vielen, vielen Dank im voraus. Ihr seit meine letzte grosse Hoffnung.

  • #2
    ich denk da wär ne zweite Tabelle "Ligen" sinnvoll
    mit dem Namen der Liga als Spaltenname und den Mannschaften
    als Inhalt.

    So kannst einfach die Anzahl der Mannschaften per sql auslesen (COUNT) und Du kannst beim Auslesen die Dropdownfelder erstellen.

    Kommentar


    • #3
      Hi Koala,

      vielen Dank erstmal. Leider hast Du mich aber falsch verstanden. Die Dropdownfelder erhalte ich ja ohne Probleme, ich habe auch bereits eine extra Tabelle Liga incl. Teams in der DB. Das ist nicht das Problem.

      Das Problem ist wie ich das abgeschickte Formular auslese, wenn alle Spielpaarungen gewählt sind und diese dann in meine Tabelle Spielpläne reinschreibe. Damit habe ich halt Probleme.

      Vielleicht hat noch jemand eine Idee?

      Kommentar


      • #4
        tja - dann schau Dir einfach mal an was Dein Formular
        im POST-Array übergibt:

        PHP-Code:
        echo '<pre>';
        print_r($_POST);
        echo 
        '</pre>'
        Zuletzt geändert von Koala; 16.09.2006, 11:46.

        Kommentar


        • #5
          Die Ausgabe sieht etwas komisch aus, gehört aber wohl so:

          Array ( [Spieltag] => [Match] => Array ( [0] => Array ( [LeagueMatches] =>
          110 ) [1] => Array ( [LeagueMatches] => 109 ) [2] => Array (
          [LeagueMatches] => 102 ) [3] => Array ( [LeagueMatches] => 103 ) ) )

          Hilft das weiter?

          Kommentar


          • #6
            statt secho muß es in der ersten Zeile natürlich echo heißen.
            Poste bitte noch mal das Ergebnis.

            Kommentar


            • #7
              Oh okay, mit echo sieht es so aus:

              rray109 109 110 110 102 102 103 103

              Die Werte sind also dort bereits doppelt. Interessant.

              Kommentar


              • #8
                ok - egal.

                Wo sind denn in Deinem Formualr die option-Tags?

                Normalerweise sieht das so aus:

                PHP-Code:
                <form name="form1" method="post" action="">
                  
                sd
                  
                <select name="select">
                    <
                option value="1">f1</option>
                    <
                option value="2">f2</option>
                    <
                option value="3">f3</option>
                  </
                select>
                </
                form
                in den values trägst du dann die Mannschaftsnamen ein.

                Kommentar


                • #9
                  Die sind hier:

                  PHP-Code:
                  while ($Season mysql_fetch_array($select1))
                  {
                  $Teams$Teams.'<option value="'.$Season['TeamID'].'">'.$Season['LeagueTeam'].'</option><br/>';

                  Ich speichere das also erstmal in die Variable $Teams.

                  Kommentar


                  • #10
                    ich hab jetzt noch mal Deine älteren Postings durchgelesen.

                    Ich denk, das müßte schon alles funktionieren.

                    Vielleicht etwas umständlich, aber das kann ich so schwer beurteilen,
                    da müßte man das ganze Script kennen.

                    Kommentar


                    • #11
                      Aber ist es denn nicht falsch das wenn ich 4 Teams habe ein solches Array ausgegeben wird ?

                      Array109 109 110 110 102 102 103 103

                      es müsste doch einfach nur 109 110 102 103 sein oder nicht?

                      Kommentar


                      • #12
                        Sorry, jetzt sehe ich gerade, wenn ich echo ($_POST); eingebe bekomme ich nur Array ausgegeben, bei print_r($_POST); bekomme ich


                        Array ( [Spieltag] => [Match] => Array ( [0] => Array ( [LeagueMatches] =>
                        110 ) [1] => Array ( [LeagueMatches] => 109 ) [2] => Array (
                        [LeagueMatches] => 102 ) [3] => Array ( [LeagueMatches] => 103 ) ) )


                        Wenn ich nun das hier eingebe zum Auslesen:

                        PHP-Code:
                        for ($i=0$i <count($_POST['Match']);$i++)
                        {
                        $Match[$i]=$_POST['Match'][$i];
                        echo 
                        $Match[$i]['LeagueMatches']; 

                        bekomme ich einfach die 4 Werte angezeigt. Soweit so gut, aber wie geht es danach weiter das ich in die DB jeweils Heim und Gastmanschaft speichern kann?

                        Kommentar


                        • #13
                          Ok, neuer Ansatz. Ich werde das jetzt mal so versuchen, dass ich jedes Select Feld einfach so benenne:

                          <select name="Match1_Team1_Home">
                          <option value="TeamA">.... </option>
                          <option value="TeamB">.... </option>
                          <option value="TeamC">.... </option>
                          <option value="TeamD">.... </option>
                          </select>

                          <select name="Match1_Team2_Gast">
                          <option value="TeamA">.... </option>
                          <option value="TeamB">.... </option>
                          <option value="TeamC">.... </option>
                          <option value="TeamD">.... </option>
                          </select>

                          usw.
                          Match2_Team1_Home
                          Match2_Team2_Gast

                          Es wird ja eine Möglichkeit geben, den Namen des Select Feldes nach dem Abschicken des Formulars auszulesen. Damit könnte ich sicher gehen das alle Werte, die zusammengehören, wirklich zusammenbleiben.

                          Aber wie sollte ich da wirklich vorgehen? Mir geht es alleine schon darum den richtigen Weg einzuschlagen, bevor ich lange rumspiele und er Weg eh Mist ist.

                          Jemand eine Idee, ob dieser Weg besser ist?

                          Kommentar


                          • #14
                            SO sieht das POST-Array aus:


                            PHP-Code:
                            Array ( 
                                [
                            Spieltag] => 
                                    [
                            Match] => Array (
                                         [
                            0] => Array ( 
                                            [
                            LeagueMatches] => 110 
                                         [
                            1] => Array ( 
                                            [
                            LeagueMatches] => 109 
                                         [
                            2] => Array (
                                            [
                            LeagueMatches] => 102 )
                                         [
                            3] => Array ( 
                                            [
                            LeagueMatches] => 103 )
                                         )
                                     ) 
                            In Match[0][LeagueMatches] ist z.B. das erste Select-Feld.

                            Du hast also 4 (!!!) Select-Felder hintereinander
                            mit jeweils einem Option-Feld zur "Auswahl"

                            - wie soll man da was auswählen ???

                            Kommentar


                            • #15
                              Ja, es sind 4 Select Felder, das ist richtig. Ich will ja einen Spielplan erstellen. Also muss ich für die jeweiligen Spielpaarungen ja Dropdownfelder haben. Ich gehe hier also von 4 Teams aus, das bedeutet 2 Spiele, also 4 Dropdownfelder.

                              Ich habe es jetzt tatsächlich mit dem ersten Ansatz hinbekommen, weiss nur nicht, ob man das wirklich so machen sollte.

                              Die Lösung für Ansatz 1:

                              PHP-Code:
                              for ($i=0$i count($_POST['Match']);$i++)
                              {
                                
                              $Match[$i]=$_POST['Match'][$i];
                                          
                                
                              $Array each($Match[$i]); 

                                if (
                              $Auswahl == "Guest")
                                {
                                  
                              $Home =  $Array[1];
                                  
                              $Auswahl="Home"
                                }
                                else
                                {
                                  
                              $Guest$Array[1]; 
                                  
                              $Auswahl="Guest"
                                }


                                if (
                              $Guest != "" && $Home != "")
                                {
                                   
                              $DBConnection->query("INSERT INTO tblSpielplan
                                   (MatchNo,HomeTeamID,GuestTeamID) VALUES 
                                   ('
                              $MatchNo','$Home','$Guest')");

                                   
                              $Guest="";
                                   
                              $Home="";
                                 } 
                              Kann man das wirklich so machen oder gibt es eine bessere Lösung?

                              Kommentar

                              Lädt...
                              X