array & select -> selected

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

  • array & select -> selected

    N'abend,
    Also, ich hab in $id die Squad_id's aus dem user query.
    Nun hol ich mir die Squadliste aus der Datenbank und möchte jetzt anhand der Squad_id's die select-options schon auf selected setzen. Was wiederum nicht funktioniert mit dem Script:

    PHP-Code:
    <?php
    function getSquadListMulti($id)
    {
        global 
    $db;

        
    $squadlist "<select name=\"squad_id[]\"  size=\"5\" multiple>";

        
    $this->source $db->sql("SELECT * FROM `".$GLOBALS["table_squads"]."` WHERE `war` = 'yes'");

        
    $this->squad_id explode(",",$id);

        while (
    $this->data=$db->fetch_array($this->source))  {

            
    $squadlist $squadlist." <option value=\"".$this->data["id"]."\"";

            if (
    $this->data["id"]==$this->squad_id[$this->data["id"]]) $squadlist $squadlist." selected"

            
    $squadlist $squadlist." >".$this->data["sqdname"]."</option>";

            
    # print $this->squad_id[$this->data["id"]]." = ".$this->data["id"]."<br>"; dient zur Kontrolle... gib aber nur 
            # = 2 
            # = 3
            # = 4
            
    ...
            
    # = 16
            # aus.
            # 
            # $id hat folgenden wert
            # $id = "1,2,3,4,5,6,7,8,9......14,15,16";

        
    }

        
    $squadlist $squadlist." </select>";

        return 
    $squadlist;
    }
    ?>
    Hoffe da steigt jemand durch

  • #2
    wahrscheinlich ist ab dem punkt, wo was gefunden wurde, alles selected ... richtig? "else" ist dein freund (in dem fall)
    Kissolino.com

    Kommentar


    • #3
      huhu Wurzel,
      Wenn ich doch da n else rein mache, heisst das dann doch

      "wenn squadid(db) gleich squadid(array) ist machst ein selected ELSE ?? was denn ? lässte es leer "

      Aber wozu else ?

      Kommentar


      • #4
        stimmt auffallend bei dem code .... wie äussert sich denn "funktioniert nicht"? quelltext?
        Kissolino.com

        Kommentar


        • #5
          hab ma grad den array
          $this->squad_id
          ausgeben

          Code:
          array(2) {
            [0]=>
            string(1) "1"
            [1]=>
            string(1) "6"
          }
          Am Sourcecode sieht man nichts was darauf hinweist das es da einen Error gibt:

          Source-Code aus dem select:

          Code:
          <select name="squad_id[]"  size="5" multiple>
          	<option value="1" >Management</option>
          	<option value="2" >#level.one</option>
          	<option value="3" >#level.cz</option>
          	<option value="4" >#level.source</option>
          	<option value="5" >#level.wc3</option>
          	<option value="6" >#level.aao</option>
          	<option value="7" >#level.ut2k4</option>
          	<option value="8" >#level.cod</option>
          	<option value="9" >painkiller</option>
          	<option value="10" >myTeam-sFb</option>
          	<option value="12" >level one esl 2on2</option>
          	<option value="11" >Blueshift</option>
           </select>

          Ich hoffe nur das, auch wenn das ein clan script ist, hier einem wieder was von "clan-php-noob" vorgetragen wird.

          Kommentar


          • #6
            und ... getestet, ob 1 oder 6 in $this->data["id"] vorhanden ist? btw: string für 1/6

            EDIT:
            vergiss es ... steht ja oben im dump


            ... geh die werte mal einzeln durch mit echo ohne zu verschachteln ...
            Zuletzt geändert von Wurzel; 29.09.2004, 23:11.
            Kissolino.com

            Kommentar


            • #7
              hab mal grad was mit foreach probiert aber das bringt mehr unsinn als nutzbares

              Mhh bin schon am verzweifeln :/

              Wieder eine schlaflose Nacht *ehrgeiz*

              Kommentar


              • #8
                Hab ich ja mit dem print;

                Aber,...

                der zeigt mir nur die squad_id's aus der datenbank an nicht die aus dem array.

                [COLOR=red]EDIT:[/COLOR]
                Grad nochmal was probiert...


                PHP-Code:
                while ($this->data=$db->fetch_array($this->source))  {

                    print 
                "1: ".$this->squad_id[$this->data["id"]]." = ".$this->data["id"]."<br>";

                    if (
                $this->data["id"]==$this->squad_id[$this->data["id"]]) {
                    
                        print 
                "Treffer bei ".$this->squad_id[$this->data["id"]]." = ".$this->data["id"]."<br>";

                    }


                Ausgabe:

                Code:
                1: 6 = 1
                1: = 2
                1: = 3
                1: = 4
                1: = 5
                1: = 6
                1: = 7
                1: = 8
                1: = 9
                1: = 10
                1: = 12
                1: = 11
                Mhhhhh.......

                Ah logisch weil ja die squad_id "6" im array auf der 1 liegt.. aber wie "manipulier" ich das , bzw wie kann man das anders machen ?
                Zuletzt geändert von Skaschy; 29.09.2004, 23:17.

                Kommentar


                • #9
                  du würfelst schlüssel und werte durcheinander ... vielleicht hilft "in_array()" weiter
                  Kissolino.com

                  Kommentar


                  • #10
                    *würfel raushol* *schüttel* *schleuder* Jawohl, 2 sechser

                    Das war die rätsels, lösung:

                    Code:
                    PHP-Code:
                    function getSquadListMulti($id)
                    {
                        global 
                    $db;
                        
                    $squadlist "\n<select name=\"squad_id[]\"  size=\"5\" multiple>\n";
                        
                    $this->source $db->sql("SELECT * FROM `".$GLOBALS["table_squads"]."`");
                        
                    $this->squad_id explode(",",$id);
                        while (
                    $this->data=$db->fetch_array($this->source))  {
                            
                    $squadlist $squadlist."    <option value=\"".$this->data["id"]."\"";
                            if (
                    $this->data["id"]==in_array($this->data["id"],$this->squad_id)) {
                                
                    $squadlist $squadlist." selected";
                            }
                            
                    $squadlist $squadlist." >".$this->data["sqdname"]."</option>\n";
                        }
                        
                    $squadlist $squadlist." </select>\n";
                        return 
                    $squadlist;

                    Eventuell noch ein paar insider tips zum Optimieren ?


                    Und Danke nochma *in_array input save*

                    Kommentar


                    • #11
                      Original geschrieben von Skaschy
                      Eventuell noch ein paar insider tips zum Optimieren ?
                      - ersetz mal "SELECT * FROM " durch "SELECT felder, die, du, brauchst FROM ..."
                      - du bist in einer klasse? wozu "global $db" ... übergib die referenz der db-klasse und greif mit "$this->db->deineMethode()" drauf zu
                      - warum kommt $id als string? steht doch nicht etwa so in einer db-tabelle?
                      - mein veltins ist alle ... n8
                      Kissolino.com

                      Kommentar


                      • #12
                        dat mit dem Select feld1, feld2 mach ich normaler weisse nur hab das da erstma nicht gemacht weil ich das erst gern teste bis es funkt und dann leg ich das fest

                        - $this->db->klasse super da spar ich mir den globals krams danke.
                        - ID ? aus der db ? nein ! kommt als integer -> INT(4) in MySQL
                        - Super, mein Herforder is auch grad leer, time to say goodbye!

                        Kommentar

                        Lädt...
                        X