Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Select dinamica

  1. #1

    Select dinamica

    Buongiorno, come consigliatomi dai moderatori sposto in questa sezione il mio problema. Ho una pagina php dove ho inserito delle SELECT (due) dinamiche in ajax (che ammetto di non conoscere) adattando un codice postato su queste pagine qualche anno fa. In pratica al cambiare del valore della prima SELECT cambiano quelli della seconda. All’inizio sembrava funzionare ma poi mi sono accorto che quando seleziono il primo campo della SELECT 2 e invio il form, nel DB mysql collegato viene memorizzato sempre il valore 0 e non l’ID relativo alla selezione effettuata. Questo succede solo per il primo campo in elenco, dal secondo in poi i dati vengono inviati correttamente al DB. Non capisco dove sbaglio. Il tutto si compone di 3 pagine:

    - inserimento.php
    - get.php
    - select.class.php

    Ecco il codice delle pagine:

    inserimento
    .php

    codice:
    <head>
    <?php
    include('select.class.php');
    $obj = new select();
    $l1 = $obj->getL1();
    ?>
    </head>
    <body>
    <script type="text/javascript">
    //Script per il menu a concatenazione
     var http = createRequestObject();
     
     function createRequestObject() {
     var ro;
     var browser = navigator.appName;
     if(browser == "Microsoft Internet Explorer"){
     ro = new ActiveXObject("Microsoft.XMLHTTP");
     }else{
     ro = new XMLHttpRequest();
     }
     return ro;
     }
     
     function loading(){
     var id = document.getElementById('gruppi').value;
     http.open('GET','get.php?id='+id, true);
     http.onreadystatechange = getState;
     http.send(null);
     }
     
     function getState(){
     var newOption;
     var where = (navigator.appName == "Microsoft Internet Explorer") ? -1 : null;
     var State = document.getElementById('sezioni');
     while (State.options.length) {
     State.remove(0);
     }
     id = document.getElementById('gruppi').value;
     if(id == 'sel'){
     document.getElementById('sezioni').disabled = true;
     newOption = document.createElement("option");
     newOption.value = 'sel';
     newOption.text = 'Seleziona una Sezione:';
     State.add(newOption, where);
     }else{
     if(http.readyState == 4){
     if (http.status == 200) {
     var response = http.responseText;
     if(response == ''){
     document.getElementById('sezioni').disabled = true;
     newOption = document.createElement("option");
     newOption.value = 'sel';
     newOption.text = 'Nessuna voce';
     State.add(newOption, where);
     }else{
     coppia = response.split(',');
     max = coppia.length;
     newOption = document.createElement("option");
     newOption.value = 'sel';
     newOption.text = 'Seleziona una Sezione:';
     State.add(newOption, where);
     for(x=0;x<max;x++){
     val = coppia[x].split('-');
     newOption = document.createElement("option");
     newOption.value = val[0];
     newOption.text = val[1];
     State.add(newOption, where);
     }
     document.getElementById('sezioni').disabled = false;
     }
     }
     }
     }
     }
     </script>
    
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" name="ins_mobilia" method="post">
    <table width="900" cellpadding="2" align="center" style="font-size:12;">
    <tr><td align="right">GRUPPO *</td><td><select style="width: 400;" name="gruppi" id="gruppi" onchange="loading()">
    <option value="sel" selected="selected" required">Seleziona un Gruppo</option>
                    <?php
                    for($x=0;$x<count($l1);$x++){
                    ?>
    <option value="<?=$l1[$x]['ID_gruppo']?>"><?=$l1[$x]['nome_gruppo']?></option>
                    <?php
                    }
                    ?>
    </select> </td>
    <td align="right">SEZIONE *</td><td><select name="sezioni" id="sezioni" disabled>
    <option value="sel" selected="selected" required>Seleziona una Sezione</option></select></td></tr>
    
    </body>
    get.php

    codice:
    <?php
     include('connessione_mobilia.php');
     include('select.class.php');
     $id = $_REQUEST['id'];
     $obj = new select();
     $l1 = $obj->getL1($id);
     $Js = '';
     for($x=0; $x<count($l1); $x++){
     $l2 = $obj->getL2($l1[$x]['ID_gruppo']);
     for($y=0;$y<count($l2);$y++){
     if($y < (count($l2)-1)){
     $end = ",";
     }else{
     $end = "";
     }
     $Js .= $l2[$y]['ID_sezione']."-".$l2[$y]['nome_sezione'].$end;
     }
     } 
     //echo "text";
     echo $Js; 
     ?>
    select.class.php

    codice:
    <?php
     class select{
     
     function select(){
     }
     
     function getL1($id=''){
     if(!empty($id)){
     $sSQL = "SELECT * FROM gruppi WHERE ID_gruppo = $id";
     }else{
     $sSQL = "SELECT * FROM gruppi Order by nome_gruppo";
     } 
     include "../connessione_no_session.php";
     $ris = mysqli_query($conn, $sSQL);
     while($row = mysqli_fetch_assoc($ris)){
     $list[] = array('ID_gruppo' => $row["ID_gruppo"],
     'nome_gruppo' => $row["nome_gruppo"]); 
     } 
     return $list; 
     }
     
     function getL2($id){
     $sSQL = "SELECT * FROM sezioni WHERE ID_gruppo = $id Order By nome_sezione";
     include "../connessione_no_session.php";
     $ris = mysqli_query($conn, $sSQL);
     while ($row = mysqli_fetch_assoc($ris)) {
     $list[] = array('ID_sezione' => $row["ID_sezione"],
     'nome_sezione' => $row["nome_sezione"]);
     }
     return $list; 
     }
     
      }
     ?>
    Spero di essere stato chiaro e che qualcuno abbia la pazienza e la voglia di aiutarmi.

    Grazie in anticipo

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Posta un link alla/e pagina/e pubbliche, così non dobbiamo replicare il processo
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Quote Originariamente inviata da cavicchiandrea Visualizza il messaggio
    Posta un link alla/e pagina/e pubbliche, così non dobbiamo replicare il processo
    Grazie della risposta... in realtà stamattina ho provato a fare un tentativo... quando chiudo il processo di inserimento faccio stampare a video l'ID incriminato della seconda SELECT e la cosa incredibile è che il valore è "corretto". Ora quindi il problema è nel momento in cui lo faccio memorizzare nel DB... a questo punto posso dire che lo script sopra funziona benissimo... il pollo sono io... ora provo a risolverlo. Anche se non ho capito perché momorizzi male solo il primo valore e non tutti... SIGH ...
    Grazie ancora

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.