select - multiple

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

  • select - multiple

    Ich muss hier ein script bearbeiten das ein formular mit einem multiple select feld beinhaltet:

    PHP-Code:
    <select name="cat[]" multiple onChange="update_drp2(1)" size="6">
                          <?php
    require("../class/mysql.class");
    require(
    "../cfg/mysql.inc");

    $getCat = new Mysql($db_cfg);
    $getCat->setSql("SELECT id, name_de FROM categories");
    $getCat->fetchArray();

        for(
    $i=0;$i<count($getCat->data);$i++)
         {
           echo 
    "<option value='".$getCat->data[$i][0]."'>".$getCat->data[$i][1]."</option><br />";
         }
         
    $getCat->closeConnection();
    unset(
    $getCat);
             
    ?>
                          </select>
    wie man sieht ist der name des feldes "cat[]".
    ich habe dem ganzen allerdings ein script hinzugefügt für das ich die eckigen klammern entfernen muss.
    Sobald ich diese entfernt habe übergibt das formular per post allerdings nicht mehr alle daten in einem array an das folgende script sondern nur die letzte selektierte option!
    Frage: warum ist das? (bei selfhtml.org verwenden die net die eckigen klammern)
    und gibt es eine möglichkeit das ganze ohne eckige klammern hinzukriegen??

    MfG
    ranzi
    Die Milch bleibt ranzig!

  • #2
    die eckigen Klammer wird in PHP genutzt, da dadurch es als Array auf dem Server ankommt. Wenn du aber in ASP machst, das interessiert dem Server nicht Bohne. Es ist auch eines der Schwäche von ASP, dass man bei multiselect zu JS zurückgreifen muss.

    Ach ja ohne [] dann muss du per JS auslesen, in einem hidden-Feld schreiben und senden, so wird meist in ASP gemacht.
    Zuletzt geändert von asp2php; 24.11.2005, 10:43.

    Kommentar


    • #3
      Re: select - multiple

      Original geschrieben von RanzigeMilch
      wie man sieht ist der name des feldes "cat[]".
      ich habe dem ganzen allerdings ein script hinzugefügt für das ich die eckigen klammern entfernen muss.
      Wieso das?
      Sobald ich diese entfernt habe übergibt das formular per post allerdings nicht mehr alle daten in einem array an das folgende script sondern nur die letzte selektierte option!
      Frage: warum ist das? (bei selfhtml.org verwenden die net die eckigen klammern)
      Weil PHP sich ansonsten nicht in der Lage sieht zu erkennen, dass es aus mehreren per GET oder POST übergebenen Werten clevererweise ein Array machen sollte - PHP stellt sich so doof an, jeweils den Wert des vorherigen Parameters zu berschreiben, sollte ein Parametername ohne eckige Klammern wiederholt vorkommen.
      und gibt es eine möglichkeit das ganze ohne eckige klammern hinzukriegen??
      In PHP - wohl nur, wenn du $HTTP_RAW_POST_DATA selber parsen würdest.

      Aber vermutlich gibt es eine Möglichkeit, dein "Problem" auch mit eckigen Klammern zu lösen.
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        hm ok mag sein also was ich hinzugefügt habe is ein script
        das ich nach anleitung des tutorials "abhängige listen" erstellt hab:

        PHP-Code:
        <script type="text/javascript">
        <!--
        <?php
            $host
        ="xx"//Hostname
            
        $user="xx"//Benutzername
            
        $pass="xx"//Passwort
            
        $dbase="xx";  //Datenbankname
            
        $db mysql_connect($host$user$pass);
        // abhängiges Kombifeld erzeugen

            
        $rs=mysql_db_query($dbase"select * from users where cat='7' ORDER BY agegroup DESC;");    
            
        $rows=mysql_num_rows($rs);
            echo 
        "\tvar liste2=new Array($rows)\n"
            
        "\tfor(var i=0;i<liste2.length;i++)\n"
            
        "\t\tliste2[i]=new Array(2);\n";
            
        $n=0;
            while(
        $zeile=mysql_fetch_assoc($rs)) 
            {
                echo 
        "\tliste2[$n][0]=".$zeile['cat'].";\n"
                
        "\tliste2[$n][1]='".$zeile['agegroup']."';\n";
                
        $n++;
            }
        ?>

        function update_drp2() {

        var x=document.newsletter.drp2.length;
            for(var n=0; n<x; n++) {
                document.newsletter.drp2.options[0]=null;
                }
                var NeuerEintrag=new Option('alle', 'alle');
                    document.newsletter.drp2.options[document.newsletter.drp2.length]=NeuerEintrag;
            for(n=0; n<liste2.length; n++) {
            var m=n-1;
                if(liste2[n][0]==document.newsletter.cat.value) {
                if(m>=0) {
                if(liste2[n][1] != liste2[m][1] && liste2[n][1] != 0) {
                    var NeuerEintrag=new Option(liste2[n][1], liste2[n][1]);
                    document.newsletter.drp2.options[document.newsletter.drp2.length]=NeuerEintrag;
                    }
                  }
                  else
                  {
                  var NeuerEintrag=new Option(liste2[n][1], liste2[n][1]);
                    document.newsletter.drp2.options[document.newsletter.drp2.length]=NeuerEintrag;
                    }
                }
            }
        }
        sobald ich hier cat bzw drp2 eckige klammern hinzufüge taucht natürlich n js-fehler auf das ein objekt erwartet wird.
        haste da ne idee oder n ansatz?

        mfg
        ranzi
        Die Milch bleibt ranzig!

        Kommentar


        • #5
          Original geschrieben von RanzigeMilch
          haste da ne idee oder n ansatz?
          Yes - RTFM, once again.

          http://de.selfhtml.org/javascript/ob...tm#allgemeines, "Schema 4"
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            argh ich esel!
            thx jetzt funtzt es
            manchmal sieht man den wald vor lauter bäumen net

            mfg
            ranzi
            Die Milch bleibt ranzig!

            Kommentar

            Lädt...
            X