Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Select dinamico con selezione precisa

    Il titolo è un po idiota...


    ho questo script per avere 2 select dinamiche... in pratica quello che seleziono nella prima determina il contenuto della seconda.

    nel tag head
    codice:
    <script>
    var elementi = new Array(
    {text:"Prova1", value:"1", indicatore:"2"},
    {text:"Prova2", value:"2", indicatore:"2"},
    {text:"Prova3", value:"3", indicatore:"2"},
    {text:"Prova4", value:"4", indicatore:"2"},
    {text:"c1", value:"5", indicatore:"3"},
    {text:"c2", value:"6", indicatore:"3"},
    {text:"c3", value:"12", indicatore:"3"});
    
    function travasa(dove, valore) {
     var k=0;
     for (i=0; i<elementi.length; i++)
      if (elementi[i].indicatore==valore) {
       dove.options[k]=new Option(elementi[i].text, elementi[i].value);
       k++
      }
     dove.options.length=k;  
    }
    </script>
    nel body

    codice:
    onLoad="travasa(document.form.sub, '<?php echo $row_punto['ID_area']; ?>');">

    ed ecco i due select

    il primo
    codice:
    <select name="area" class="form-admin" id="select3" onChange="travasa(this.form.sub, this.options[this.selectedIndex].value);">
                          <?php
    do {  
    ?>
                          <option value="<?php echo $row_aree['ID_area']?>"<?php if (!(strcmp($row_aree['ID_area'], $row_punto['ID_area']))) {echo "SELECTED";} ?>><?php echo $row_aree['nome']?></option>
                          <?php
    } while ($row_aree = mysql_fetch_assoc($aree));
      $rows = mysql_num_rows($aree);
      if($rows > 0) {
          mysql_data_seek($aree, 0);
    	  $row_aree = mysql_fetch_assoc($aree);
      }
    ?>
                        </select>
    prendo dal database i valori della select che combaciano con quelli dell'array


    la seconda select

    <select name="sub" class="form-admin" id="sub">
    </select>




    ORA IL PROBLEMA...
    In questo metodo seleziono sulla select area, direttamente il valore che mi interessa tramite la variabile php.

    Ma riesco a farlo solo con la select area..
    Dovrei farlo anche sulla seconda select, prendere lo stesso valore che ho sul database.

    Come devo modificare il javascript?
    MITTICCOOOOOOOOO!

  2. #2
    Scusate, ecco lo script corretto integrato con php, quello che ho scritto qui sopra è l'output della pagina...
    Tenete conto di questo sotto

    Codice PHP:
    <?
    echo "<script>var elementi = new Array(";
    do{ 
    echo
    "{text:\"$row_sub[nome_sub]\", value:\"$row_sub[ID_sub]\", indicatore:\"$row_sub[ID_area]\"},";
    } while (
    $row_sub mysql_fetch_assoc($sub));
    echo
    "{text:\"\", value:\"\", indicatore:\"en\"});";
    echo
    "function travasa(dove, valore, selezionato) {
     var k=0;
     for (i=0; i<elementi.length; i++)
      if (elementi[i].indicatore==valore) {
       dove.options[k]=new Option(elementi[i].text, elementi[i].value);
       k++
      }
     dove.options.length=k;  
    }
    </script>"
    ;

    ?>
    MITTICCOOOOOOOOO!

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    3,259
    non ho capito...

    hai la select 1, cambiando l'opzione dalla select 1 la select2 cambia le proprie opzioni... io sono restato qui col ragionamento

  4. #4
    Si è cosi.

    ho una pagina per modificare un record sul database.
    sul modulo restituisco i dati già presenti.


    quindi con
    Codice PHP:
    <?
    echo "<script>var elementi = new Array(";
    do{ 
    echo
    "{text:\"$row_sub[nome_sub]\", value:\"$row_sub[ID_sub]\", indicatore:\"$row_sub[ID_area]\"},";
    } while (
    $row_sub mysql_fetch_assoc($sub));
    echo
    "{text:\"\", value:\"\", indicatore:\"en\"});";
    echo
    "function travasa(dove, valore) {
     var k=0;
     for (i=0; i<elementi.length; i++)
      if (elementi[i].indicatore==valore) {
       dove.options[k]=new Option(elementi[i].text, elementi[i].value);
       k++
      }
     dove.options.length=k;  
    }
    </script>"
    ;

    ?>
    prendo nell'arrai la tabella che contiene i valori che sono della seconda select

    la prima select, le prendo da un'altra tabella ma che combaciano con l'indicatore....

    La prima select funziona a meraviglia, riesco in effetti a far combaciare il valore che è gia salvato sul database.
    il problema è sulla seconda che i valori vengono presi dal primo cioè

    codice:
    {text:"Prova1", value:"1", indicatore:"2"},
    {text:"Prova2", value:"2", indicatore:"2"},
    {text:"Prova3", value:"3", indicatore:"2"},
    {text:"Prova4", value:"4", indicatore:"2"},
    {text:"c1", value:"5", indicatore:"3"},
    {text:"c2", value:"6", indicatore:"3"},
    {text:"c3", value:"12", indicatore:"3"});
    se nella prima select seleziono il valore 2, la seconda mi restituisce il primo valore qui sopra quindi

    text:"Prova1", value:"1", indicatore:"2"},

    io dovrei fare in modo di fargli restituire non sempre dal primo valore in poi, ma voglio farlo dipendere dal VALUE che ho salvato sul database....


    Dimmi se hai capito
    MITTICCOOOOOOOOO!

  5. #5
    up.
    MITTICCOOOOOOOOO!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.