Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Combo box a cascata

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2014
    Messaggi
    9

    Combo box a cascata

    Combo box a cascata

    Salve a tutti. Sono da pochissimo entrato nel mondo HTML e PHP e pertanto scusatemi se non capirò al volo le vs. risposte. Ho costruito in una form 3 combo box (vedi sotto).


    MODIFICA.PHP

    <div prova="content">
    <h2>Modifica NON CONFORMITA' num. <?php echo $id ?></h2>
    <br/>


    <!--<center><div id="warning"> in campi con * sono obbligatori</div></center>-->
    <form name="mod" action="index.php" method="post" >
    <center>
    <!--PARTE CHE SI COMPILA IN AUTOMATICO-->
    <table class="datiBox" align="center">
    <?php
    /*riempi i campi anno prog e data*/
    // include 'contatore.php';
    /*sotto prende i valori dall'include benvenuto che seleziona i dati operatore dalla login*/
    ?>
    <input type="hidden" name="ID" value="<?php echo $id;?>" readonly="readonly">
    <tr align="left">
    <td>Setting</td>
    <td><input type="text" class="text" name="Setting" value="<?php echo $get_info['Zona'];?>" readonly="readonly" style="width:150px;"></td>
    <td></td>
    <td>Sede</td>
    <td><input type="text" class="text" name="Sede" value="<?php echo $get_info['Sede'];?>" readonly="readonly" style="width:200px;"></td>
    <td></td>
    <td>Operatore</td>
    <td><input type="text" class="text" name="Op_view" value="<?php echo $get_info['Nome'].' '.$get_info['Cognome'];?>" readonly="readonly" style="width:150px;">
    <input type="hidden" name="Operatore" value="<?php echo $get_info['UserId'];?>" />
    </td>
    </tr>
    </table>
    <br/>
    <h3>I campi contrassegnati con * sono OBBLIGATORI !</h3>
    <!--PARTE DA INSERIRE TIPOLOGIA e TEMPI-->
    <table class="datiBox2" align="center">
    <tr align="left">
    <td class="bold"><h3>TIPO STRUTTURA </h3></td>
    <tr>
    <td class="bold">Struttura Dipartimentale :</td>
    <td><?php SlCheck($link,'struttura_dip','STRUTTURA_DIP','ID' ,'DESCRIZIONE_DIP','200',$mod['STRUTTURA_DIP']);?></td>
    <td></td>
    <td class="bold">Struttura U.F.C. :</td>
    <td><?php SlCheck($link,'struttura_ufc','STRUTTURA_UFC','ID' ,'DESCRIZIONE_UFC','200',$mod['STRUTTURA_UFC']);?></td>
    </tr>
    <tr align="left">
    <td class="bold">Struttura Setting :</td>
    <td><?php SlCheck($link,'struttura_setting','STRUTTURA_SETTI NG','ID','DESCRIZIONE_SETTING','200',$mod['STRUTTURA_SETTING']);?></td>
    <td></td>
    </table>
    <br/>

    FUNCTIONS.PHP

    function SlCheck($link,$nometabella, $sel_name, $nomeid, $nomedesc, $width,$datimod){
    // selected sul valore della query
    //query per estrarre i dati
    $query2="SELECT * FROM $nometabella ORDER BY $nomeid";
    //echo $query;
    $result2 = mysqli_query($link,$query2)or die("SELECT Error: ".mysqli_error($link));

    //genera select
    echo "<select name=".$sel_name." id=\"select\" style=width:$width>\"";
    echo "<OPTION value=\"\"> ";
    while ($get_info = mysqli_fetch_array($result2)){
    if ($datimod==$get_info[$nomeid]){
    echo "<OPTION value=".$get_info[$nomeid]." SELECTED> ".$get_info[$nomedesc]."";
    } else {
    echo "<OPTION value=".$get_info[$nomeid]."> ".$get_info[$nomedesc]."";
    }
    }//chiude while
    echo "</select>\n";

    }


    Attualmente seleziono in modo indipendente le tre combo box. Vorrei migliorare la cosa in modo che selezionando un elemento della 1° combo box possa filtrare i dati della 2° combo box sulla base della scelta della 1° combo box. Anche la 3° combo box dovrebbe far visualizzare solo gli elementi pertinenti sulla base della scelta della 1° e 2° combo box. Per esempio se scelgo sulla 1° combo box il valore "Dipartimento" le altre due combo box devono essere vuote mentre se sempre nella 1° combo box se scelgo il valore vuoto (campo vuoto) devo poter vedere tutti i dati della 2° combo box e se seleziono "PISLL" devo vedere sulla 3° combo box solo i dati "PISLL Nord-Ovest" "PISLL Sud-Est" ecc. I dati delle tre combo box sono in tre tabelle distinte MySQL.
    Sicuramente siete in grado di aiutarmi e vi ringrazio già in anticipo.

  2. #2
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Ciao, in pratica diciamo che è abbastanza semplice. Dipende se il db è strutturato bene o meno.
    Se hai delle voci a db correlate ad altre (presumendo un submit senza javascript o ricaricamento via ajax) dovresti rifare la query e prendere i dati della secondae della terza select selezionando i dati collegati al primo valore.

    Un esempio banale potrebbero essere 3 tabelle con regioni, province e comuni.
    Ogni provincia avrà un campo riferito all ID della regione ed ogni comune un campo con l'ID della provincia

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2014
    Messaggi
    9
    Ti ringrazio per la tua sollecita risposta che ho solo visto adesso rientrando da lavoro. Il db posso strutturarlo come meglio credi e cioè se ho ben capito serve che ogni record abbia un campo che possa correlarsi ad ogni altra tabella. Ad esempio se un record della mia prima tabella deve correlarsi con più record della seconda tabella pensavo di immettergli un campo sulla seconda tabella dove riporti l'identificativo univoco del record della prima tabella (tabella 1 con visualizzato nella combo box il record con campi ID=1 e NOME=DIPARTIMENTO se voglio che sulla seconda e terza tabella non mi si visualizzi niente metterò sulla seconda tabella e terza tabella un campo denominato ID_PRIMA_TABELLA dove nessun dei record avrà il valore =1.
    Ho interpretato bene quello che mi dicevi ?
    Visto che citavi un esempio, potresti mandarmelo in modo che posso capire come rifare le query ?
    Devo fare query diverse per ogni combo box ?
    Attendo una tua cortese risposta.
    Grazie per ora ...

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.