Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2014
    Messaggi
    22

    Creazione 2° select in base alla scelta effettuata sulla 1° select

    Buongiorno a tutti! ho un problema a compilare la seconda select in base alla scelta effettuata sulla prima select.
    Io non conosco per niente javascript perciò provo a chiedere a voi.

    Codice PHP:
    /* 1° SELECT */
     
    <select id="esame" name="esame" onChange="check(this.value)">
          <option value="" selected="selected">---Seleziona un esame---</option>
          <?php
                 $q 
    "SELECT id, fullname, shortname FROM course;";            
                 
    $result mysql_query($q$con);        
                 while(
    $row=mysql_fetch_array($result))        
                 {    
    ?>
                      <option value=<?php echo $row['id']; ?>><?php echo $row['fullname']; ?></option>    
         <?php        
                 
    }    ?>
    </select>

    In pratica questa select mi elenca una serie di esami. In base all'esame scelto voglio un ulteriore scelta che mi elenca le lezioni di quell'esame; quindi dovrò effettuare una query in base all'id (value) del corso scelto

    Codice PHP:
    /* 2° SELECT */
     
    <select id="videolezioni" name="videolezioni" disabled="">     
         <option value="" selected="selected">---Seleziona una videolezione---</option>    
         <?php        
              $q 
    "SELECT id, name FROM url WHERE course=$idcorso;";    // dove $idcorso deve essere il value della prima select        
              
    $result mysql_query($q$con);       
              while(
    $row=mysql_fetch_array($result))        
             {        
    ?>                        
                    <option value=<?php echo $row['id']; ?>><?php echo $row['name']; ?></option>     
      <?php        
              
    }    ?>  
    </select>

    Come posso fare ciò?


    Navigando su internet sono riuscita a fare questo misero script:
    Codice PHP:
    function check(val)
    {    
           
    document.getElementById('videolezioni').disabled false;

    E' possibile passare la variabile 'val' (che contiene il value, quindi l'id del corso) alla seconda select in modo che poi mi esegua correttamente la query?

    Altrimenti che metodo mi consigliate?

    Ringrazio tutti in anticipo.

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Fondamentalmente si fa tutto in Javascript.
    La creazione degli option non la devi far fare a PHP, è impossibile a meno di ricaricare la pagina ogni volta che si cambia selezione nel primo select (che se uno cambia spesso diventa un casino).

    Funziona così:
    - Crei il form con solo il primo campo select popolato, il secondo lo crei, ma vuoto e disabilitato
    - quando si seleziona qualcosa nel primo select devi recuperare tale valore con Javascript
    - tramite AJAX invii una chiamata asincrona contenente come parametro il valore scelto nel primo select ad uno script PHP
    - lo script PHP esegue una query sul DB e restituisce il risultato (suggerisco in formato JSON) con un echo alla fine
    - AJAX recupera la stringa JSON con i dati per generare gli option, li aggiunge al secondo select e lo abilita

    Quindi con PHP c'è poco o niente da fare.
    Per la parte Javascript chiedi nell'apposita sezione del forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2014
    Messaggi
    22
    Ti ringrazio, ho capito i vari passaggi da fare... ma il mio problema è che proprio non conosco il linguaggio javascript confido nella sezione forum di javascript.

    Grazie ancora

  4. #4
    Ma che ti frega di javascript, fallo in php, al limite ricarichi la pagina solo una volta per popolare la seconda select. Nel caso io ce l' ho uno scriptino in ajax che fa quella cosa li, te lo posso dare ma ti posso dire solo dove andare a smanettare per cambiare le query perchè ajax lo conosco solo a livello teorico.

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2014
    Messaggi
    22
    Ti ringrazio camionistaxcaso ma ho già trovato una semplice soluzione con ajax

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Quote Originariamente inviata da camionistaxcaso Visualizza il messaggio
    Ma che ti frega di javascript, fallo in php, al limite ricarichi la pagina solo una volta per popolare la seconda select. Nel caso io ce l' ho uno scriptino in ajax che fa quella cosa li, te lo posso dare ma ti posso dire solo dove andare a smanettare per cambiare le query perchè ajax lo conosco solo a livello teorico.
    Beh dai, non siamo più nel 2000, sforziamoci un po' per fare le cose un po' più usabili.

  7. #7
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Beh dai, non siamo più nel 2000, sforziamoci un po' per fare le cose un po' più usabili.
    Quoto in pieno, ma lui dice di non conoscere jacascript

Tag per questa discussione

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 © 2024 vBulletin Solutions, Inc. All rights reserved.