Ankündigung

Einklappen
Keine Ankündigung bisher.

Auswahlliste dynamisch selektieren

Einklappen

Neue Werbung 2019

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

  • Auswahlliste dynamisch selektieren

    Hallo

    Habe folgendes Problem bei dem Formular zur User editierung kann man den User in eine bestimmte Rechte Gruppe setzen ( User, Moderator, Admin, Superadmin) nach dem auswählen und neuladen der Seite ist zwar die richtige Gruppe in MYSQL gesetzt worden ( z.B. Moderator) aber in der Auswahlliste steht noch immer User. D.h ich will das wenn man den User nochmal editiert die richtige Gruppe bereits angezeigt wird, den Befehl value hab ich schon probiert gab aber kein Ergebnis

    Meine Frage wie kann ich eine Auswahlliste vorselektieren

    Hier der Code zum Verständnis :
    PHP-Code:
    <select name="level"  value="row->level" >
    <
    option value="1">User</option>
    <
    option value="2">Moderator</option>
    <
    option value="3">Admin</option>
    <
    option value="4">Super-Admin</option>
    </
    select> 
    Danke jetzt schon

  • #2
    Nun das musst du mit der richtigen Abfrage zum User machen und dann einfach ein selected="selected".

    Mehr kann ich nicht schreiben da ich dein Code nicht kenne.

    PHP-Code:
    //nach abfrage des Users
    echo '<select name="level">';
     echo 
    '<option value="1"';
     if(
    $row->level == 1)
     echo 
    'selected="selected"';
     echo 
    '>User</option>';
    echo 
    '</select>'; 
    So halt für alle optionen.

    Kommentar


    • #3
      die abfrage besteht bereits ... d.h so sollt es richtig sein ...

      PHP-Code:
      <select name="level"  >
      <
      option value="1" if($row->level == 1) selected="selected"> User </option>
      <
      option value="2" if($row->level == 2) selected="selected"> Moderator </option>
      <
      option value="3" if($row->level == 3) selected="selected"> Admin </option>
      <
      option value="4" if($row->level == 4) selected="selected"> Super-Admin </option>
      </
      select> 
      Ich hab das so probiert, er selektiert jetzt automatisch superadmin vor obwohl das nicht zutrifft

      Fehler im Code ? die echo befehle habe ich weggelassen daher das durch ein Template läuft

      Kommentar


      • #4
        hi likemike90,
        das könnte vielleicht helfen ..

        PHP-Code:
        $iAuswahl = 2; // Hier den Index des Array welcher Vorgewählt werden soll
        $aArray = array( "User", "Moderator", "Admin", "Super-Admin" );
        $sDropdown = "<select name='level'>";
        for( 
        $x=0, $i=1; $x!=count($aArray); $x++, $i++ )
        {
          
        $sSelected = ( $x == $iAuswahl )? " selected": "";
          
        $sDropdown .= "<option value='" . $i . "'" . $sSelected . ">" . $aArray[$x] . "</option>";
        }
        $sDropdown .= "</select>"; 
        sollte soweit funktionieren, aber nicht getestet ..

        Kommentar


        • #5
          DeinCode hat einen Fehler.

          Du musst natürlich das selected="selected" in ein echo setzen.

          @maller86

          Wenn du mit einem Array arbeitest warum suntzt du dann nicht foreach()?
          Die ist doch gerade richtig auf Arrays zugeschnitten.

          Kommentar


          • #6
            @litterauspirna

            Ich arbeite da aber mit einer Template, sicher das ich das in ein echo setzen muss ?

            Kommentar


            • #7
              Das kommt darauf an ob deine Templete richtig ist.

              Das hier kannst mit einer foreacg machen ist übersichtlicher als das Beispiel mit for.

              Müsste gehen ist nicht getestet.
              PHP-Code:
              $array = array(
                  
              '1' => "User",
                  
              '2' => "Moderator",
                  
              '3' => "Admin",
                  
              '4' => "Superadmin"
                  
              );
              echo 
              '<select name="level">';
               foreach(
              $array as $key => $value)
               {
                echo 
              '<option value="'.$key.'"';
                if(
              $row->level == $key)
                echo 
              'selected="selected"';
                echo 
              '>'.$value.'</option>';
               }
              echo 
              '</select>'; 
              Mit welcher Templete Engine arbeitest du denn?

              Kommentar


              • #8
                das is die template function :
                function gettemplate($template,$endung="html") {
                $templatefolder = "templates";
                return str_replace("\"","\\\"",implode("",file($templatef older."/".$template.".".$endung)));
                }

                werd morgen das mal aus testen ... schon mal danke für die Hilfe

                Kommentar


                • #9
                  Ich arbeite da aber mit einer Template, sicher das ich das in ein echo setzen muss ?
                  Entweder ja, dann fehlen auch noch die php Begrenzer ( <? )
                  oder nein, dann ist normalerweise die Syntax aber komplett verschieden (Variablen / Bedingungen ...)

                  Kommentar


                  • #10
                    Zitat von litterauspirna Beitrag anzeigen
                    @maller86

                    Wenn du mit einem Array arbeitest warum suntzt du dann nicht foreach()?
                    Die ist doch gerade richtig auf Arrays zugeschnitten.
                    ja, hast recht ^^
                    foreach ist dazu besser geeignet ..

                    Kommentar


                    • #11
                      Ok die foreach methode is ja ok, aber wollte es erstmal testen ohne ein array zu benützen, warum funzt den diese art hier nicht :

                      PHP-Code:
                      <select name="level"  >
                      <
                      option value="1" if($row->level == 1) selected="selected"> User </option>
                      <
                      option value="2" if($row->level == 2) selected="selected"> Moderator </option>
                      <
                      option value="3" if($row->level == 3) selected="selected"> Admin </option>
                      <
                      option value="4" if($row->level == 4) selected="selected"> Super-Admin </option>
                      </
                      select> 
                      daher ich in einen template bin brauch ich kein echo setzen nehm ich an

                      Wär super wenn ihr mir da helft

                      Kommentar


                      • #12
                        daher ich in einen template bin brauch ich kein echo setzen nehm ich an
                        Siehe #9. Weniger ignorieren, mehr probieren. Durch Nachdenken (oder annehmen) allein wirst Du das Problem nicht lösen. Man kann aber auch tagelang darüber diskutieren, ob man ein echo benötigt oder nicht. Oder Du probiesrt es mal innerhalb von 2 Sekunden

                        Kommentar


                        • #13
                          das hab ich schon mal gemacht und dann is super admin die ganze zeit vorselektriert obwohl es nicht den status entspricht :

                          PHP-Code:
                          <select name="level"  >
                          <
                          option value="1" if($row->level == 1) {echo selected="selected;}"> User </option>
                          <
                          option value="2" if($row->level == 2) {echo selected="selected; }"> Moderator </option>
                          <
                          option value="3" if($row->level == 3) {echo selected="selected; }"> Admin </option>
                          <
                          option value="4" if($row->level == 4) {echo selected="selected; }"> Super-Admin </option>
                          </
                          select> 

                          Kommentar


                          • #14
                            Lies #9! Die GANZE ANTWORT.

                            Kommentar


                            • #15
                              das habe ich doch schon ausprobiert ergab nur kein ergebnis :

                              habs jetzt so gemacht und es kommt das selbe raus

                              PHP-Code:
                              <select name="level"  >
                              <option value="1" <?php if($row->level == 1) {echo 'selected="selected"'; }?>>  User </option>
                              <option value="2" <?php if($row->level == 2) {echo 'selected="selected"'; }?>>  Moderator </option>
                              <option value="3" <?php if($row->level == 3) {echo 'selected="selected"'; }?>> Admin </option>
                              <option value="4" <?php if($row->level == 4) {echo 'selected="selected"'; }?>>  Super-Admin </option>
                              </select>
                              nur statt user kommt jetzt >user ... hab das > aber auch schon in ein eigenes echo geschrieben das zerlegt dann den php code fast komplett

                              Kommentar

                              Lädt...
                              X