Doppelte Einträge in Select-Feld

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

  • Doppelte Einträge in Select-Feld

    Ich habe eine Funktion, die aus einer DB-Abfrage (Benutzer) ein Select-Formular-Feld erstellt und alle in $selUser gespeicherten Werte auf "selected" stellen soll.
    $selUser kann dabei ein String (also ein Wert) oder ein Array sein.
    In dem Selectfeld können folglich auch mehrere Werte (Benutzer) markiert werden.
    Jedoch werden alle Werte (Benutzer) in meiner HTML-Ausgabe doppelt angezeigt und ich kriege es nicht weg.
    Der Code sieht so aus
    PHP-Code:
    <?php

    // $selUser ist ein Array ...
    if (is_array($selUser)) {
        foreach (
    $selUser as $key => $user) {
            if (
    $result->anb_userid == $user) {
                
    $return .= "<option value=\"$result->anb_userid\" selected>$result->anb_vorname $result->anb_name [$result->anb_userid]</option>"
            } else {
                
    $return .= "<option value=\"$result->anb_userid\">$result->anb_vorname $result->anb_name [$result->anb_userid]</option>"
            } 
        }
    // ... oder String
    } else {
        if (
    $result->anb_userid == $selUser) {
            
    $return .= "<option value=\"$result->anb_userid\" selected>$result->anb_vorname $result->anb_name [$result->anb_userid]</option>";
        } else {
            
    $return .= "<option value=\"$result->anb_userid\">$result->anb_vorname $result->anb_name [$result->anb_userid]</option>";
        } 


    ?>
    Die fehlerhafte HTML-Ausgabe mit den doppelten Werten sieht immer so aus
    PHP-Code:
    // Der Array:
    //  Array ( [0] => 000101 [1] => 000103 )
    <select name="anb_userid[]" size="8" multiple>
        <
    option>-- Bitte Benutzer w&auml;hlen --</option>
        <
    option value="000100">heinz pimpelhuber [000100]</option>
        <
    option value="000100">heinz pimpelhuber [000100]</option>
        <
    option value="000101" selected>Marta Erwählte [000101]</option>
        <
    option value="000101">Marta Erwählte [000101]</option>
        <
    option value="000103">Guido Nultsch [000103]</option>
        <
    option value="000103" selected>Guido Nultsch [000103]</option>
    </
    select
    Kann mir bitte jemand sagen, wo da der Fehler sein kann?

  • #2
    Huääääähhhhh!
    carpe noctem

    [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
    [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

    Kommentar


    • #3
      Original geschrieben von goth
      Huääääähhhhh!
      wird´s denn gehen? ich hab den fehler zwar auch nicht gesehen aber ...
      h.a.n.d.
      Schmalle

      http://impressed.by
      http://blog.schmalenberger.it



      Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
      ... nur ohne :-)

      Kommentar


      • #4
        Hmmmnnn ... bezog sich allerdings auf die Aussage "... und ich kriege es nicht weg." ... im übrigen denke ich der Ausschnitt ist etwas kurz ... !
        carpe noctem

        [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
        [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

        Kommentar


        • #5
          na dann können wir jetzt ja über sowas hier lästern:
          PHP-Code:
          "<option value=\"$result->anb_userid\">$result->anb_vorname $result->anb_name[..] [$result 
          h.a.n.d.
          Schmalle

          http://impressed.by
          http://blog.schmalenberger.it



          Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
          ... nur ohne :-)

          Kommentar


          • #6
            Hab es jetzt so probiert:
            PHP-Code:
            <?php 
            // $selUser ist ein Array ...
            if (is_array($selUser)) {
                foreach (
            $selUser as $key => $user) {
                    if (
            strstr($result->anb_userid$user)) {
                        
            $sel "selected";
                    } else {
                        
            $sel "";
                    } 
                    
            $return .= "<option value=\"$result->anb_userid\" $sel>$result->anb_vorname $result->anb_name [$result->anb_userid]</option>";
                } 
                
            // ... oder String
            } else {
                if (
            strstr($result->anb_userid$selUser)) {
                    
            $sel "selected";
                } else {
                    
            $sel "";
                } 
                
            $return .= "<option value=\"$result->anb_userid\" $sel>$result->anb_vorname $result->anb_name [$result->anb_userid]</option>";
            }
            ?>
            und es geht auch nicht, auch alles doppelt ...

            Kommentar


            • #7
              Ach nee .. so böse bin ich heute gar nicht drauf ...
              carpe noctem

              [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
              [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

              Kommentar


              • #8
                @goth ich muss jetzt eh einkaufen gehen
                @guido bitte poste mehr code. wie kollega schon sagte, muss der fehler von weiter gher kommen
                h.a.n.d.
                Schmalle

                http://impressed.by
                http://blog.schmalenberger.it



                Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
                ... nur ohne :-)

                Kommentar


                • #9
                  @schmalle: dto.
                  carpe noctem

                  [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                  [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                  Kommentar


                  • #10
                    Original geschrieben von schmalle
                    @goth ich muss jetzt eh einkaufen gehen
                    OffTopic:
                    habt ihr keine frauen?


                    @guido
                    schau dir mal an, was aus deiner db geliefert wird ...
                    Kissolino.com

                    Kommentar


                    • #11
                      Ein "Heureka" verkneif ich mir, aber in meiner jetzigen Variante geht es.

                      Für den Fall, dass $selUser ein Array ist, hat er folgende Struktur:
                      Code:
                      Array ( [0] => 000101 [1] => 000103 )
                      Hier noch mal die komplette Funktion
                      Hinweis: ich nutze ezSQL als DB-Klasse
                      PHP-Code:
                      /**
                       * selectUserArr()
                       * 
                       * Select-Box aller User optional mit multiselect
                       * Zu selektierende User werden als
                       * array $selUser Bsp: Array ( [0] => 000101 [1] => 000103 )
                       * oder als
                       * string $selUser
                       * übergeben
                       * 
                       * @param string $selUser -> ID eines zu selektierenden Users
                       * @param array $selUser -> Array mit ID's zu selektierender User
                       * @param int $multi -> Multiselect WAHR (1) oder FALSCH (0)
                       * @param int $selsize -> sichtbare Zeilen der Select-Box
                       * @return string
                       **/
                      function selectUserArr($selUser$multi 0$selsize "1")
                      {
                          global 
                      $db$DB_TableUser;
                          
                      $nam "anb_userid";
                          if (
                      $multi == 1) {
                              
                      $nam "anb_userid[]";
                              
                      $mul "multiple";
                          } 
                          
                      $return "<select name=\"$nam\" size=\"$selsize\" $mul>";
                          
                      $return .= "<option>-- Bitte Anbieter w&auml;hlen --</option>";
                          if (
                      $options $db->get_results("SELECT * FROM $DB_TableUser WHERE 1 AND anb_activ='true' ORDER BY anb_userid")) {
                              foreach (
                      $options as $option) {
                                  
                      $sel "";
                                  if (
                      is_array($selUser)) {
                                      if (
                      in_array($option->anb_userid$selUser)) {
                                          
                      $sel "selected";
                                      } 
                                  } else {
                                      if (
                      $option->anb_userid == $selUser) {
                                          
                      $sel "selected";
                                      } 
                                  } 

                                  
                      $return .= "<option value=\"$option->anb_userid\" $sel>$option->anb_vorname $option->anb_name [$option->anb_userid]</option>";
                              } 
                          } 
                          
                      $return .= "</select>";
                          return 
                      $return;

                      Warum die alte Variante nicht geht, weiss ich aber immer noch nicht.
                      Die auch noch mal komplett:
                      PHP-Code:
                      function selectUserArr($selUser$multi 0$selsize "1")
                      {
                          global 
                      $db$DB_TableUser;
                          
                      $nam "anb_userid";
                          if (
                      $multi == 1) {
                              
                      $nam "anb_userid[]";
                              
                      $mul "multiple";
                          } 
                          
                      $return "<select name=\"$nam\" size=\"$selsize\" $mul>";
                          
                      $return .= "<option>-- Bitte Anbieter w&auml;hlen --</option>";
                          if (
                      $results $db->get_results("SELECT * FROM $DB_TableUser WHERE 1 AND anb_activ='true' ORDER BY anb_userid")) {
                              foreach (
                      $results as $result) {
                                  if (
                      is_array($selUser)) {
                                      foreach (
                      $selUser as $key => $user) {
                                          if (
                      $result->anb_userid == $user) {
                                              
                      $return .= "<option value=\"$result->anb_userid\" selected>$result->anb_vorname $result->anb_name [$result->anb_userid]</option>";
                                          } else {
                                              
                      $return .= "<option value=\"$result->anb_userid\">$result->anb_vorname $result->anb_name [$result->anb_userid]</option>";
                                          } 
                                      } 
                                  } else {
                                      if (
                      $result->anb_userid == $selUser) {
                                          
                      $return .= "<option value=\"$result->anb_userid\" selected>$result->anb_vorname $result->anb_name [$result->anb_userid]</option>";
                                      } else {
                                          
                      $return .= "<option value=\"$result->anb_userid\">$result->anb_vorname $result->anb_name [$result->anb_userid]</option>";
                                      } 
                                  } 
                              } 
                          } 
                          
                      $return .= "</select>";
                          return 
                      $return;

                      Kommentar

                      Lädt...
                      X