Smarty und das selected in einem <select> feld

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

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

    Comment


    • #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.

      Comment


      • #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

        Attached Files
        Last edited by krel; 07-06-2007, 10:53.

        Comment


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

          Comment


          • #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.

            Comment


            • #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
              Last edited by krel; 07-06-2007, 11:29.

              Comment


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

                Comment


                • #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

                  Comment


                  • #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 ?

                    *******

                    Last edited by Koala; 07-06-2007, 12:02.

                    Comment


                    • #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

                      Comment


                      • #26
                        ich hab noch mal editiert

                        Comment


                        • #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

                          Comment


                          • #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 ?

                            Comment


                            • #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

                              Comment


                              • #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).

                                Comment

                                Working...
                                X