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

    Select relazionate popolate da DB MySQL

    Ciao a tutti,

    mi trovo in una situazione un pò intricata. Devo poter popolare una select multiselezione in base alla scelta che faccio su un'altra select. Praticamente è così:

    SELECT 1 -> popolata da tabella 1
    SELECT 2 -> popolata da tabella 2 in relazione a tabella 1

    Questo è il codice che ho provato ma che non riesco a far funzionare:

    Codice PHP:
    <form name="contratto" id="contratto" action=./salva_contratto.php>
          <table>
          <tr>
          <td>
    <label>Cliente


      <select name="cliente" id="cliente" multiple="multiple" CHE CODICE JAVASCRIPT METTO?>
      <?
    $cliente
    =mysql_query("SELECT * FROM clienti ORDER BY ragione_sociale;");
    while (
    $res mysql_fetch_array($cliente)){
    ?>
    <option value="<? print($res["ragione_sociale"]);?>"><?print($res["ragione_sociale"]);?></option>
    <?
    }

    ?>
       </select>
     </label>
    </td>
    </tr>
    <tr>
    <td>
    <label>Conducenti


      <select name="conducente" id="conducente" multiple="multiple">
    <?
    $conducente
    =mysql_query("SELECT * FROM conducenti WHERE ragione_sociale = VARIABILE GENERATA DAL JAVASCRIPT CHE NON CONOSCO;");
    while (
    $res2 mysql_fetch_array($cconducente)){
    ?>
    <option value=""><?php print($res2["conducente"]);?></option>
    <?php 
    }
    ?>
      </select>
     </label>
    </td>
    </tr>
    <tr>
    <td>
    <label>Flotta


      <select name="l2" id="l2" multiple="multiple" disabled>

      </select>
     </label>
    </td>
    </tr>
    </table>
    </form>
    Come posso risolvere? Vi prego perchè è un problema che devo assolutamente risolvere
    Errare è umano, ma per fare veramente casino ci vuole la password di root

  2. #2
    Veramente non funziona proprio così...non puoi usare variabili javascript all'interno di script PHP dato che javascript è lato client e a quel punto lo script PHP è stato già eseguito.
    Hai due possibilità per fare quello che chiedi:
    1. Crei la pagina popolando solo la prima select ed alla selezione di una voce ricarichi la pagina passando l'id del valore selezionato tramite il quale caricherai la seconda select.
    2. Se non vuoi ricaricare la pagina devi utilizzare Ajax, ma in ogni caso lancerai una script PHP che recupererà i valori della seconda select in base all'id della prima.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Utente di HTML.it L'avatar di Luke70
    Registrato dal
    Jul 1999
    Messaggi
    767
    Così non può funzionare: JS entra in gioco dopo il php e quindi non puoi avere una "VARIABILE GENERATA DAL JAVASCRIPT CHE NON CONOSCO".

    Le strade sono due:
    1. utilizzi ajax per popolare la seconda select
    2. mostri solo la prima select e, dopo la selezione, ricarichi la pagina popolando la seconda select con i dati derivati dalla prima (chiaramente soluzione meno bella, ma funziona se non hai altri campi e se non te la senti di gestire con ajax)

  4. #4
    Originariamente inviato da Luke70
    Così non può funzionare: JS entra in gioco dopo il php e quindi non puoi avere una "VARIABILE GENERATA DAL JAVASCRIPT CHE NON CONOSCO".

    Le strade sono due:
    1. utilizzi ajax per popolare la seconda select
    2. mostri solo la prima select e, dopo la selezione, ricarichi la pagina popolando la seconda select con i dati derivati dalla prima (chiaramente soluzione meno bella, ma funziona se non hai altri campi e se non te la senti di gestire con ajax)
    come faccio quindi ad ottenere lo stesso risultato della seconda query però implementata con ajax? Mi potresti postare un esempio?
    Errare è umano, ma per fare veramente casino ci vuole la password di root

  5. #5
    Ciao a tutti,

    ho trovato uno script che forse fa al caso mio, però non riesco a farlo funzionare:

    Javascript
    codice:
    <script type="text/javascript" src="./js/ajax.js"></script>
    <script type="text/javascript">
    var ajax = new Array();
    
    
    
    function getConducente(sel)
    {
    	var countryCode = sel.options[sel.selectedIndex].value;
    	document.getElementById('conducenti').options.length = 0;	// Empty city select box
    	if(countryCode.length>0){
    		var index = ajax.length;
    		ajax[index] = new sack();
    		
    		ajax[index].requestFile = 'conducentiselect.php?ragione_sociale='+ragione_sociale;	// Specifying which file to get
    		ajax[index].onCompletion = function(){ creaConducenti(index) };	// Specify function that will be executed after 
        //file has been found
    		ajax[index].runAJAX();		// Execute AJAX function
    	}
    }
    
    function creaConducenti(index)
    {
    	var obj = document.getElementById('clienti');
    	eval(ajax[index].response);	// Executing the response from Ajax as Javascript code	
    }
    
    
    </script>
    XHTML
    codice:
    <form action="" method="post">
    <table>
    	<tr>
    		<td><select id="clienti" name="clienti" onchange="getConducente(this)" multiple>
    			<?php 
          $exp = mysql_query("SELECT ragione_sociale FROM clienti ORDER BY ragione_sociale;");
          while($cliente=mysql_fetch_array($exp)){
          
    			print("<option value='".$cliente["ragione_sociale"]."'>".$cliente["ragione_sociale"]."</option>");
    			
    			} ?>
    		</select>
    		</td>
    	</tr>
    	<tr>
    <td><select id="conducenti" name="conducenti" multiple>
    		
    		</select>
    		</td>
    	</tr>
    	<tr>
    		<td><select id="flotta" name="flotta" multiple>
    			<?php 
          $exp3 = mysql_query("SELECT * FROM flotta ORDER BY targa;");
          while($flotta=mysql_fetch_array($exp3)){
          
    			print("<option value='".$flotta["targa"]."'>".$flotta["targa"]." - ".$flotta["modello"]." - ".$flotta["versione"]."</option>");
    			
    			} ?>
    		</select>
    		</td>
    	</tr>	
    </table>
    </form>
    PHP
    Codice PHP:
    <?php
    $exp2 
    mysql_query("SELECT * FROM conducenti WHERE ragione_sociale = '".$_GET["ragione_sociale"]."';");
          while(
    $conducente=mysql_fetch_array($exp2)){
          
                print(
    "<option value='".$conducente["conducente"]."'>".$conducente["conducente"]."</option>");
                
                }                                  
    ?>
    Mi sapere indicare l'errore?
    Errare è umano, ma per fare veramente casino ci vuole la password di root

  6. #6
    nessuno mi sa aiutare?
    Errare è umano, ma per fare veramente casino ci vuole la password di root

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.