Problem mit Funktion zur Erstellung einer select-Liste

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

  • Problem mit Funktion zur Erstellung einer select-Liste

    Hi,

    ich arbeite gerade an einer Funktion die mir aus Datenbankwerten eine Multiple Select-Liste erstellt. Zusätzlich sollen bereits Werte ausgewählt sein die ich per Array an die Funktion übergebe.

    PHP-Code:
    editselect($typ$array); 
    Im Moment ist die Funktion selber noch nicht wirklich dynamisch.
    Ich teste noch ein paar Sachen, aber ansich sollte sie breits funktionieren. Tut sie aber nicht.
    Ich bekomme zwar die Liste, es sind aber keinerlei Einträge ausgewählt.

    Hier die Funktion:
    PHP-Code:
    function editselect ($typ$recent) {

        global 
    $dbname$db;
        
        
    $query mysql_select_db($dbname$db);
        
    $sql "SELECT person_id AS id, name, vname FROM person WHERE $typ = 1 ORDER BY name";
        
    $result mysql_query($sql) or die(mysql_error());
        echo 
    "<select multiple name=\"comp[]\" size=\"4\">";
        while(
    $select mysql_fetch_array($result)){
            for(
    $i=0;$i<count($recent);$i++) {
                if (
    $select[id]==$recent[$i]) {
                    
    $isselected "selected";
                } else {
                    
    $isselected "";
                }
            }
    // do
            
    echo "<option value=$select[id] $isselected>";
            echo 
    "$select[name]$select[vname]";
            echo 
    "</option>\n";
        } 
    // while
        
    echo "</select>";


    Vielleicht kann mir jemand helfen das Problem zu lösen.

    Gruss Fish

  • #2
    Guck dir mal inarray() an.

    Kommentar


    • #3
      Original geschrieben von TobiaZ
      Guck dir mal inarray() an.
      Danke für den Hinweis Tobiaz.
      Mittlerweile habe ich die Funktion entsprechend umgeschrieben. Trotzdem habe ich noch ein paar Probleme damit.
      Der erste Wert wird auch als selected ausgegeben, die restlichen aber nicht (im Test sind es insgesamt 8 Werte).

      Hier mal der wichtige Teil der Funktion:

      PHP-Code:
      while($select mysql_fetch_array($result)){
          
              
      $selected false;
              
              if (
      in_array($select[id], $recent)) {
                  
      $selected true;
              }
              else {
                  
      $selected false;
              }
              
              if (
      $selected==true) {
              
                  echo 
      "<option value=$select[id] selected>";
                  echo 
      "$select[name]$select[vname]";
                  echo 
      "</option>";
                  
              }
              else {
                  
                  echo 
      "<option value=$select[id]>";
                  echo 
      "$select[name]$select[vname]";
                  echo 
      "</option>";
                  
              }
              
          } 
      // while 
      Die entsprechenden Werte sind in der sowohl in der Liste als auch im übergebenen Array enthalten.

      Kommentar


      • #4
        der code ist ein bissle umständlich geschrieben

        beschreib das problem bitte etwas genauer, ich kann nicht so ganz folgen. sag auch immer welche werte die vars haben.

        Kommentar


        • #5
          Original geschrieben von TobiaZ
          der code ist ein bissle umständlich geschrieben

          beschreib das problem bitte etwas genauer, ich kann nicht so ganz folgen. sag auch immer welche werte die vars haben.
          Hi,

          ich hole also die als selected darzustellenden Werte vor Aufruf der Funktion aus der DB.
          Ich habe allerdings festgestellt das es da wohl ein kleines Problem gibt :

          var_dump gab mir folgendes aus
          PHP-Code:
          Array ( [0] => 10 
          Eigentlich müssten es insgesamt 8 Werte sein. Geb ich das ganze in einer while-Schleife aus, werden alle 8 angezeigt.
          PHP-Code:
          Array ( [0] => 10 
          Array ( [
          0] => 40 
          Array ( [
          0] => 41 
          Array ( [
          0] => 42 
          Array ( [
          0] => 
          Array ( [
          0] => 44 
          Array ( [
          0] => 43 
          Array ( [
          0] => 45 
          Also müsste ich doch sicher innerhalb der Funktion eine Schleife durchlaufen um alle Werte zu bekommen und diese dann vergleichen oder?

          Wie könnte ich denn den Code besser schreiben?

          Gruss Marcus

          Kommentar


          • #6
            Also müsste ich doch sicher innerhalb der Funktion eine Schleife durchlaufen um alle Werte zu bekommen und diese dann vergleichen oder?
            um alle werte zu bekommen brauchst du uf jeden dfall irgendwo ne schleife.

            Wie könnte ich denn den Code besser schreiben?
            naja, du fragst erst ab, ob die bedingung erfüllt ist und schreibst dann in ne variable true oder false. obwohl die variable ohnehin schon false enthält. dann fragst du die variable ab, ob die true oder falsch ist. kann man das nicht zusammenfassen?

            Kommentar


            • #7
              Ich glaub ich überdenke die ganze Sache nochmal etwas.

              Danke für deine Tipps.

              Kommentar


              • #8
                ok, bei fragen kommste wieder.

                Kommentar

                Lädt...
                X