Smarty und das selected in einem <select> feld

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

  • #16
    Ich habe da oben den Link zum Handbuch gepostet. Dort findest du 4 Beispiele, die alle mit selected arbeiten. Abgucken erlaubt!

    Kommentar


    • #17
      @onemorenerd

      Da ist auch nur ein Beispiel für ein Selectfeld.

      So ein Beispiel hab ich hier im Thread auch schon gepostet.

      Er hat aber das Problem mit mehreren Selectfeldern.

      Kommentar


      • #18
        Das Bild zeigt dir was erzeugt wird. so die selektfelder heißen wie das jeweilige Rennen, in diesem Fall 9 bzw 3 es können aber auch noch mehr sein. Wenn was selektiert ist kann ich darauf mittels $_POST[9] zugreifen.
        Das Array für die ausgabe wird mittels einer datenbankabfrage generiert
        PHP-Code:
        $selectedRennen = array();
        //falls checkboxen ausgewählt sind
        if(isset($_POST['rennen'])){
         
        $selectedRennen $_POST['rennen'];
        }

        $sql "SELECT Nr,Bezeichnung,Leistungsgruppen
           FROM rennen WHERE Klasse='"
        .$klasse."' AND
           Nr!='"
        .$rennen."';";
        $result mysql_query($sql) OR die(mysql_error());

        $rennen = array();

        while(
        $row=mysql_fetch_assoc($result)){
         
        $checked ="";
         
        $select ="";
         
        //falls das jetztige Rennen einem selektieretem Rennen entspricht 
         //soll es wieder ausgewählt sein
         
        if(isset($selectedRennen[$row['Nr']])){
          
        $checked "checked";
         }
         
        //falls eine Leistungsgruppe zu dem jetztigen Rennen ausgewählt wurde
         //soll dieses wieder selektiert werden
         
        if(isset($_POST[$row['Nr']])){
          
        $select $_POST[$row['Nr']];
         }
         
        //Leistungsgruppen ist ein SET
         
        $lg explode(",",$row['Leistungsgruppen']);
         
        $rennen[] = array("nr"=> $row['Nr'],
             
        "bezeichnung"=> $row['Nr'].")".$row['Bezeichnung']."(".$klasse.")",
             
        "lg"=> $lg,
             
        "checked"=> $checked,
             
        "select"=> $select);

        es wird also beim generieren des array überprüft ob dei dem jeweiligen Rennen nach dem drücken von submit die checkbox angeklickt ist und ob ein wert aus dem selektfeld selektiert ist

        Angehängte Dateien
        Zuletzt geändert von krel; 07.06.2007, 10:53.

        Kommentar


        • #19
          Ein var_dump($rennen) vor dem $smarty->assign() bitte.

          Kommentar


          • #20
            Dein Script ist absolut unübersichtlich:

            - nichts eingerückt

            - keine Kommentare

            - Du mußt zuerst die DB auslesen und das Formular erzeugen

            - DEUTLICH davon getrennt machst Du die POST-Auswertung

            - Deine DB-Aufbau ist falsch (Stichwort: Normalisierung
            benutz keine Werte in einer Zelle die per explode getrennt werden müssen)

            Also:

            DB ändern und dann nur den Teil machen der das Formular erzeugt

            Dann kannst den erzeugten Browser-Quelltext posten.

            Die einzelnen Selectfelder müssen <input name="sel[]" beinhalten
            -> Arraygrundlagen.

            Kommentar


            • #21
              wenn nichts angewählt wurde
              PHP-Code:
              <PRE>
              array(
              2) {
                [
              0]=>
                array(
              5) {
                  [
              "nr"]=>
                  
              string(1"9"
                  
              ["bezeichnung"]=>
                  
              string(34"9)Jungen achter mit Steuermann(8+)"
                  
              ["lg"]=>
                  array(
              1) {
                    [
              0]=>
                    
              string(2"II"
                  
              }
                  [
              "checked"]=>
                  
              string(0""
                  
              ["select"]=>
                  
              string(0""
                
              }
                [
              1]=>
                array(
              5) {
                  [
              "nr"]=>
                  
              string(1"3"
                  
              ["bezeichnung"]=>
                  
              string(19"3)Männer Achter(8+)"
                  
              ["lg"]=>
                  array(
              3) {
                    [
              0]=>
                    
              string(1"I"
                    
              [1]=>
                    
              string(2"II"
                    
              [2]=>
                    
              string(3"III"
                  
              }
                  [
              "checked"]=>
                  
              string(0""
                  
              ["select"]=>
                  
              string(0""
                
              }
              }
              </
              PRE
              3->checkbox selected und LG "III" ausgewählt
              PHP-Code:
              <PRE>
              array(
              2) {
                [
              0]=>
                array(
              5) {
                  [
              "nr"]=>
                  
              string(1"9"
                  
              ["bezeichnung"]=>
                  
              string(34"9)Jungen achter mit Steuermann(8+)"
                  
              ["lg"]=>
                  array(
              1) {
                    [
              0]=>
                    
              string(2"II"
                  
              }
                  [
              "checked"]=>
                  
              string(0""
                  
              ["select"]=>
                  
              string(0""
                
              }
                [
              1]=>
                array(
              5) {
                  [
              "nr"]=>
                  
              string(1"3"
                  
              ["bezeichnung"]=>
                  
              string(19"3)Männer Achter(8+)"
                  
              ["lg"]=>
                  array(
              3) {
                    [
              0]=>
                    
              string(1"I"
                    
              [1]=>
                    
              string(2"II"
                    
              [2]=>
                    
              string(3"III"
                  
              }
                  [
              "checked"]=>
                  
              string(7"checked"
                  
              ["select"]=>
                  
              string(3"III"
                
              }
              }
              </
              PRE
              PHP-Code:
              <table id="meldefeld" border="1 cellpadding="1" cellspacing="1" bordercolor="#111111">
               
              <tr>
                <
              td></td>
                <
              td>Rennen</td>
                <
              td>LG</td>
                <
              td></td>
               </
              tr>
               <
              tr>
                <
              td>
                 <
              input type="checkbox" name="rennen[9]" value="9" >
                </
              td>
                <
              td>
                 
              9)Jungen achter mit Steuermann(8+)
                </
              td>
                <
              td>
                 <
              select name="9" size="3">
                  <
              option label="II" value="II">II</option>
                 </
              select>
                </
              td>
                <
              td></td>
               </
              tr>
               <
              tr>
                <
              td>
                 <
              input type="checkbox" name="rennen[3]" value="3" checked>
                </
              td>
                <
              td>
                 
              3)Männer Achter(8+)III
                
              </td>
                <
              td>
                 <
              select name="3" size="3">
                  <
              option label="I" value="I">I</option>
                  <
              option label="II" value="II">II</option>
                  <
              option label="III" value="III">III</option>
                 </
              select>
                </
              td>
                <
              td></td>
               </
              tr>
              </
              table
              Zuletzt geändert von krel; 07.06.2007, 11:29.

              Kommentar


              • #22
                Jawohl, noch mehr Unformatiertes ohne Kommentar oder konkrete Frage.
                Glaubst du wirklich, das hilft diesem Thread?

                Kommentar


                • #23
                  mein problem ist immer noch das gleiche und du wolltest nen var_dump von $rennen vor dem assign haben und ich hab dir 2 gegeben...

                  mfg

                  Kommentar


                  • #24
                    if(isset($_POST['rennen'])){
                    $selectedRennen = $_POST['rennen'];
                    }

                    $_POST['rennen'] ist ein Array mit den Checkboxen.
                    (es gibt ja $_POST['rennen'][3] ect.)

                    in selectedRennen ist also ein Array drin wenn EINE oder mehrere der Chekcboxen aktiviert ist.

                    *******

                    scheint soweit alles ok zu sein.

                    Aber wo prüfst Du ob das Formular abgeschickt wurde ?

                    Und wo ist Dein assign für Smarty ?

                    *******

                    Zuletzt geändert von Koala; 07.06.2007, 12:02.

                    Kommentar


                    • #25
                      richtig aber darum geht es ja auch gar nicht. zu jeden selektieren $_POST['rennen'] sollte z.B. ein $_POST[3] $_POST[9] usw existieren und jenes ist der wert den ich wieder selektieren will

                      mfg

                      Kommentar


                      • #26
                        ich hab noch mal editiert

                        Kommentar


                        • #27
                          das wird weiter oben gemacht und
                          PHP-Code:
                          if(isset($_POST['submit'])){
                           
                          checkInput()

                          und checkInput ruft dann die Methode auf die das array bastelt

                          mfg

                          Kommentar


                          • #28
                            hats Du überhaupt error_reporting(E_ALL); drin ?

                            if(isset($_POST['submit'])){
                            checkInput()
                            }

                            sieht komisch aus - fehlt da nicht ein Semikolon ?

                            kein Rückgabewert ?

                            Ist das ein Funktion oder eine Methode ?

                            Methode von welcher Klasse ?

                            Kommentar


                            • #29
                              error_reporting(E_ALL)
                              sry hab das semikolon vergessen. die "Funktion" hat keinen Rückgabewert sondern steuert einfach das weitere Vorgehen des Scriptes. find ich übersichtlicher als alles in eine if else zweig zu packen

                              mfg

                              Kommentar


                              • #30
                                $lg = explode(",",$row['Leistungsgruppen']);
                                $rennen[] = array("nr"=> $row['Nr'],
                                "bezeichnung"=> $row['Nr'].")".$row['Bezeichnung']."(".$klasse.")",
                                "lg"=> $lg,
                                "checked"=> $checked,
                                "select"=> $select);
                                }

                                wo kommt $klasse her ?

                                wieso ist $klasse in {} ??

                                wieso nennst du das Array $rennen und das POST-Array auch $rennen ?

                                Benenn $rennen in $smartyrennen um (wenn register globals = on ist, könntest sonst ein Problem haben).

                                Kommentar

                                Lädt...
                                X