Riempire una combo da una scelta

  • Creatore Discussione Creatore Discussione minatore
  • Data di inizio Data di inizio

minatore

Utente Attivo
25 Set 2007
410
0
0
Buongiorno a tutti, è la prima volta che scrivo in questa sezione, vi dico subito che di javascript non ne capisco, ma ho dovuto farne uso solo perchè con php non è possibile fare ciò che mi appresto a dirvi.
Prima di postare ho girato un po nel web per trovare qualcosina che si avvicinasse al mio problema, ma invano.
E' sempre la solita storia, quella delle regioni e delle province e dei comuni
in una pagina php ho bisogno che a seconda della scelta della combo marche, mi si aggiornasse la cobo dei modelli.
In giro ho trovato questo script che vi copio pari pari
PHP:
<script type="text/javascript">
function Menu(links)
	{
     	location.href = links[links.selectedIndex].value;
	}
<select onChange="Menu(this)">
<?php
	$query_2=mysql_query("SELECT * FROM t_marche")
	or die("errore nella query;".mysql_error());
	for($b=0; $b<mysql_num_rows($query_2);$b++)
		{
			$elenco_marche=mysql_fetch_assoc($query_2);
				print"
					<option value='".intval($elenco_marche['id_marca'])."'>
					".$elenco_marche['desc_marca']."
					</option>";
		}
?>
</select>
questo no fa altro che alla scelta della voce nella combo mi va ad aprire un url (diciamo cosi, in parole povere)
io invece vorrei che mi aggiornasse un'altra combo avendo sempre dentro i dati presi da una tabella.
Avete già qualcosa di questo tipo?
Altrimenti con un poco di pazienza da parte vostra ci possiamo lavorare insieme
Grazie in anticipo
 
Ciao Alessandro, mi sono letto tutto l'articolo ed ho copiato tutto, spero di sbagliarmi manon da risultati, l'esempio è proprio quello giusto
index.php
PHP:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
// Select Province e Comuni dalla Regione. 
function selProvCom(idRegion)
	{
  		// Seleziono province di questa regione. 
  		$.get("select_abitativa.php", 
			{ 
				regionid: idRegion, requestItems: 'province'
			}, 
  		function(dataProvince)
			{
    			$("select[id='province']").empty();
    			var options = '<option value="">-- seleziona --</option>';
    			var arrayProvince = dataProvince.split( '||');
    			for (var i = 1; i < arrayProvince.length; i++) 
					{
      					var provincia = arrayProvince[i].split( /,/);
      					options += '<option value="' + provincia[0] + '">' + provincia[1] + '</option>';
    				}
    			$("select[id='province']").html(options);
  			});
  		// Seleziono comuni di questa regione. 
  		$.get("select_abitativa.php", 
			{ 
				regionid: idRegion, requestItems: 'comuni'
			}, 
  		function(dataComuni)
			{
    			$("select[id='city']").empty();
				var options = '<option value="">-- seleziona --</option>';
				var arrayComuni = dataComuni.split( '||');
    			for (var i = 1; i < arrayComuni.length; i++) 
					{
      					var comune = arrayComuni[i].split( /,/);
      					options += '<option value="' + comune[0] + '">' + comune[1] + '</option>';
    				}
    			$("select[id='city']").html(options);
  			});
	}

// Select Comuni dalla Provincia. 
function selCom(idProvincia) 
	{
  		// Seleziono comuni di questa provincia. 
  		$.get("select_abitativa.php", 
			{ 
				provinciaid: idProvincia, requestItems: 'comuni'
			}, 
  		function(dataComuni)
			{
    			$("select[id='city']").empty();
    			var options = '<option value="">-- seleziona --</option>';
    			var arrayComuni = dataComuni.split( '||');
    			for (var i = 1; i < arrayComuni.length; i++) 
					{
      					var comune = arrayComuni[i].split( /,/);
      					options += '<option value="' + comune[0] + '">' + comune[1] + '</option>';
    				}
    			$("select[id='city']").html(options);
  			});
	}
</script>
</head>
<body>

<p>
<label for="region">Regione:</label><br />
<select id="region" name="region" onchange="selProvCom(this.value);">
<option value="" selected="selected">-- seleziona --</option>
<?php
// Collegamento ad database. 
require 'connessione/Config.php';
require 'connessione/Connect.php';

// Query selezione tutte le regioni. 
$sql = mysql_query("select * from regioni order by regione"); 

// Eseguo la query. 
//$result = mysql_query($sql, $conn); 
while($region = mysql_fetch_array($sql)) {
?>
<option value="<?php echo $region['id']; ?>"><?php echo $region['regione']; ?></option>
<?php
}
?>
</select>
</p>
<p>
<label for="province">Provincia:</label><br />
<select id="province" name="province" onchange="selCom(this.value);">
<option value="" selected="selected">-- seleziona --</option>
<?php

// Query selezione tutte le province. 
$sql1 = mysql_query("select * from province order by provincia"); 

// Eseguo la query. 
//$result = mysql_query($sql, $conn); 
while($province = mysql_fetch_array($sql1)) {
?>
<option value="<?php echo $province['id']; ?>"><?php echo $province['provincia']; ?></option>
<?php
}
?>
</select>
</p>
<p>
<label for="city">Città:</label><br />
<select id="city" name="city">
<option value="" selected="selected">-- seleziona --</option>
</select>
</p>
</body>
</html>
select_abitativa.php
PHP:
<?php
// Seleziona Province e Comuni. 
require 'connessione/Config.php';
require 'connessione/Connect.php';	

// Seleziona Province e Comuni. 
//include("dbconfig.php");

if (isset($_GET['regionid']) and is_numeric($_GET['regionid'])) {
  if (isset($_GET['requestItems']) and $_GET['requestItems']==='province') {
    $regionID = intval($_GET['regionid']);
    //$query = <<<EOQ
$query = mysql_query("SELECT * 
FROM province 
WHERE id_regione = '$regionID' 
ORDER BY provincia");
//EOQ;
    //$result = mysql_query($query, $conn);
    $returnProvince = '';
    while ($row = mysql_fetch_array($query)) {
      $returnProvince .= "||".$row['id'].",".$row['provincia'];
    }
    print_r($returnProvince);
  } 
  else if (isset($_GET['requestItems']) and $_GET['requestItems']==='comuni') {
    $regionID = intval($_GET['regionid']);
    //$query2 = <<<EOQ
$query2 = mysql_query("SELECT * 
FROM comuni 
WHERE id_regione = '$regionID' 
ORDER BY comune");
//EOQ;
    //$result = mysql_query($query, $conn);
    $returnComuni = '';
    while ($row2 = mysql_fetch_array($query2)) {
      $returnComuni .= "||".$row2['id'].",".$row2['comune'];
    }
    print_r($returnComuni);
  }
} 
else if (isset($_GET['provinciaid']) and is_numeric($_GET['provinciaid'])) {
  if (isset($_GET['requestItems']) and $_GET['requestItems']==='comuni') {
    $provinciaID = intval($_GET['provinciaid']);
    //$query3 = <<<EOQ
$query3 = mysql_query("SELECT * 
FROM comuni 
WHERE id_provincia = '$provinciaID' 
ORDER BY comune");
//EOQ;
    //$result = mysql_query($query, $conn);
    $returnComuni = '';
    while ($row3 = mysql_fetch_array($query3)) {
      $returnComuni .= "||".$row3['id'].",".$row3['comune'];
    }
    print_r($returnComuni);
  }
}
?>
ho fatto un semplice copia e incolla, ed ho modificato un poco la struttura della query, ma nel concreto penso di non aver cambiato nulla
Grazie ancora
 
Ultima modifica:
Ciao, qualcuno potrebbe darmi un suggerimento
è vero che questa cosa già è stata fatta, ma che colpa ne ho io se sono arrivato adesso
lo script lo provato ma non funziona

Ciao:hammer:
 
Ma hai scaricato jQuery e lo hai copiato nella cartella appropriata?
:confused: Jquery da dove devo scaricarlo
ok scaricato jQuery.js, ma lo stesso non va
volevo anche chiedere perchè è piena anche la seconda combo quelle delle province per intenderci, non dovrebbe essere vuota come quella dei comuni e poi riempirsi alla scelta della regione?
Ciao
 
Ultima modifica:
:confused: Jquery da dove devo scaricarlo
ok scaricato jQuery.js, ma lo stesso non va
volevo anche chiedere perchè è piena anche la seconda combo quelle delle province per intenderci, non dovrebbe essere vuota come quella dei comuni e poi riempirsi alla scelta della regione?
Ciao

:mavieni::mavieni::mavieni:
Scusami, avevo fatto un errore, funziona
adesso cerco di adattarlo a ciò che mi serve poi ti farò sapere
spero di non avere problemi

Ciao e grazie0:)
 
Ciao Alessandro, ho un piccolo problema ho inserito il tuo script in 2 pagine come da esempio e funziona, poi lo trasferisco dove mi serve e non funziona più
ti posto lo script
reg_articolo.php
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<meta http-equiv="Content-type" content="text/html;charset=utf-8">
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
----------------------------------------------------------------------------------
// Select Province e Comuni dalla Regione. 
function selProvCom(idRegion) {
  // Seleziono province di questa regione. 
  $.get("select_abitativa.php", { regionid: idRegion, requestItems: 'province'}, 
  function(dataProvince){
    $("select[id='province']").empty();
    var options = '<option value="">-- seleziona --</option>';
    var arrayProvince = dataProvince.split( '||');
    for (var i = 1; i < arrayProvince.length; i++) {
      var provincia = arrayProvince[i].split( /,/);
      options += '<option value="' + provincia[0] + '">' + provincia[1] + '</option>';
    }
    $("select[id='province']").html(options);
  });
--------------------------------------------------------------------------------
  // Seleziono comuni di questa regione. 
  $.get("select_abitativa.php", { regionid: idRegion, requestItems: 'comuni'}, 
  function(dataComuni){
    $("select[id='city']").empty();
    var options = '<option value="">-- seleziona --</option>';
    var arrayComuni = dataComuni.split( '||');
    for (var i = 1; i < arrayComuni.length; i++) {
      var comune = arrayComuni[i].split( /,/);
      options += '<option value="' + comune[0] + '">' + comune[1] + '</option>';
    }
    $("select[id='city']").html(options);
  });
}

// Select Comuni dalla Provincia. 
function selCom(idProvincia) {
  // Seleziono comuni di questa provincia. 
  $.get("select_abitativa.php", { provinciaid: idProvincia, requestItems: 'comuni'}, 
  function(dataComuni){
    $("select[id='city']").empty();
    var options = '<option value="">-- seleziona --</option>';
    var arrayComuni = dataComuni.split( '||');
    for (var i = 1; i < arrayComuni.length; i++) {
      var comune = arrayComuni[i].split( /,/);
      options += '<option value="' + comune[0] + '">' + comune[1] + '</option>';
    }
    $("select[id='city']").html(options);
  });
}
</script>
</head>
<body>
<form name="Form" method="post" action="add_articoli">
<table cellpadding="0" cellspacing="0" border="0" width="430">
	<tr>
    	<td align="left" height="18" bgcolor="#333333">
        	<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFFF">
            	&nbsp;Registrazione articolo
            </font>
        </td>
    </tr>
    <tr><td height="9"></td></tr>
</table>
<table cellspacing="0" cellpadding="0" border="0">
   <tr>
    	<td align="left" width="110" height="25">
        	<font size="1" face="Verdana, Arial, Helvetica, sans-serif">
            	Codice articolo
            </font>
        </td>
        <td align="left">
        	<input type="text" name="cod_a"
            style="font-family: Verdana, Palatino Linotype, Arial, Century Gothic, Helvetica;
			font-size: 8pt; width:130px; height:15px;">
        </td>
    </tr>
    <tr>
    	<td align="left" width="110" height="25">
        	<font size="1" face="Verdana, Arial, Helvetica, sans-serif">
            	Codice originale
            </font>
        </td>
        <td align="left">
        	<input type="text" name="cod_o"
            style="font-family: Verdana, Palatino Linotype, Arial, Century Gothic, Helvetica;
			font-size: 8pt; width:130px; height:15px;">
        </td>
    </tr>
    <tr>
    	<td align="left" width="110" height="25">
        	<font size="1" face="Verdana, Arial, Helvetica, sans-serif">
            	Selez. categoria
            </font>
        </td>
        <td align="left">
        	<select name="doc" style="font-family: Verdana, Palatino Linotype, Arial, Century Gothic, Helvetica;
			font-size: 8pt; width:136px; height:21px;">
            <?php
				require 'connessione/Config.php';
				require 'connessione/Connect.php';			
				$query_1=mysql_query("SELECT * FROM t_categorie")
				or die("errore nella query;".mysql_error());
				for($a=0; $a<mysql_num_rows($query_1);$a++)
					{
						$elenco_categ=mysql_fetch_assoc($query_1);
							print"
								<option value='".intval($elenco_categ['id_categoria'])."'>
								".$elenco_categ['desc_categoria']."
								</option>";
					}
			?>
            </select>
        </td>
    </tr>
    <tr>
    	<td align="left" width="110" height="25">
        	<font size="1" face="Verdana, Arial, Helvetica, sans-serif">
            	Seleziona marca
            </font>
        </td>
        <td align="left">
        	<select id="region" name="region" onChange="selProvCom(this.value);"
            style="font-family: Verdana, Palatino Linotype, Arial, Century Gothic, Helvetica;
			font-size: 8pt; width:136px; height:21px;">
            <option value="" selected="selected">seleziona marca</option>
            <?php
				$query_2=mysql_query("SELECT * FROM t_marche")
				or die("errore nella query;".mysql_error());
				for($b=0; $b<mysql_num_rows($query_2);$b++)
					{	
						$elenco_marche=mysql_fetch_assoc($query_2);
							print"
								<option value='".intval($elenco_marche['id_marca'])."'>
								".$elenco_marche['desc_marca']."
								</option>";
					}
			?>
            </select>
        </td>
    </tr>
    <tr>
    	<td align="left" width="110" height="25">
        	<font size="1" face="Verdana, Arial, Helvetica, sans-serif">
            	Selez. modello
            </font>
        </td>
        <td align="left">
        	<select id="city" name="city"
            style="font-family: Verdana, Palatino Linotype, Arial, Century Gothic, Helvetica;
			font-size: 8pt; width:136px; height:21px;">
			<option value="" selected="selected">seleziona modello</option>
			</select>
        </td>
    </tr>
    <tr>
    	<td align="left" width="110" height="25">
        	<font size="1" face="Verdana, Arial, Helvetica, sans-serif">
            	Nome articolo
            </font>
        </td>
        <td align="left">
        	<input type="text" name="nome_a"
            style="font-family: Verdana, Palatino Linotype, Arial, Century Gothic, Helvetica;
			font-size: 8pt; width:300px; height:15px;">
        </td>
    </tr>
    <tr>
    	<td align="left" width="110" height="25">
        	<font size="1" face="Verdana, Arial, Helvetica, sans-serif">
            	Imponib acquisto
            </font>
        </td>
        <td align="left">
        	<input type="text" name="nome_a"
            style="font-family: Verdana, Palatino Linotype, Arial, Century Gothic, Helvetica;
			font-size: 8pt; width:80px; height:15px;">
        </td>
    </tr>
    <tr>
    	<td align="left" width="110" height="25">
        	<font size="1" face="Verdana, Arial, Helvetica, sans-serif">
            	Imposta %
            </font>
        </td>
        <td align="left">
        	<select name="doc" style="font-family: Verdana, Palatino Linotype, Arial, Century Gothic, Helvetica;
			font-size: 8pt; width:50px; height:21px;">
            <?php
				$query_3=mysql_query("SELECT * FROM t_iva")
				or die("errore nella query;".mysql_error());
				for($c=0; $c<mysql_num_rows($query_3);$c++)
					{
						$elenco_iva=mysql_fetch_assoc($query_3);
							print"
								<option value='".intval($elenco_iva['id_iva'])."'>
								".$elenco_iva['desc_iva']."
								</option>";
					}
			?>
            </select>
        </td>
    </tr>
    <tr>
    	<td align="left" width="110" height="25">
        	<font size="1" face="Verdana, Arial, Helvetica, sans-serif">
            	Imponib vendita
            </font>
        </td>
        <td align="left">
        	<input type="text" name="nome_a"
            style="font-family: Verdana, Palatino Linotype, Arial, Century Gothic, Helvetica;
			font-size: 8pt; width:80px; height:15px;">
        </td>
    </tr>
    <tr>
    	<td align="left" width="110" height="25">
        	<font size="1" face="Verdana, Arial, Helvetica, sans-serif">
            	Quantit&agrave;
            </font>
        </td>
        <td align="left">
        	<input type="text" name="nome_a"
            style="font-family: Verdana, Palatino Linotype, Arial, Century Gothic, Helvetica;
			font-size: 8pt; width:43px; height:15px;">
        </td>
    </tr>
    <tr>
    	<td align="left" width="110" height="75">
        	<font size="1" face="Verdana, Arial, Helvetica, sans-serif">
            	Note
            </font>
        </td>
        <td align="left">
        	<textarea name="nome_a"
            style="font-family: Verdana, Palatino Linotype, Arial, Century Gothic, Helvetica;
			font-size: 8pt; width:300px; height:65px;">
            </textarea>
        </td>
    </tr>
    <tr>
    	<td align="left" width="110" height="25">
        	<font size="1" face="Verdana, Arial, Helvetica, sans-serif">
            	Seleziona
            </font>
        </td>
        <td align="left">
        	<font size="1" face="Verdana, Arial, Helvetica, sans-serif">
            	3 porte
            </font>
        	<input type=checkbox name="nome_a">
        </td>
    </tr>
</table>
</form>
</body>
</html>
select_abitativa.php
PHP:
<?php
// Seleziona Province e Comuni. 
require 'connessione/Config.php';
require 'connessione/Connect.php';

if (isset($_GET['regionid']) and is_numeric($_GET['regionid'])) {
  if (isset($_GET['requestItems']) and $_GET['requestItems']==='province') {
    $regionID = intval($_GET['regionid']);
    $query = <<<EOQ
SELECT * 
FROM t_modelli 
WHERE id_marca = '$regionID' 
ORDER BY desc_modello
EOQ;
    $result = mysql_query($query);
    $returnProvince = '';
    while ($row = mysql_fetch_array($result)) {
      $returnProvince .= "||".$row['id_modello'].",".$row['desc_modello'];
    }
    print_r($returnProvince);
  } }
  /*else if (isset($_GET['requestItems']) and $_GET['requestItems']==='comuni') {
    $regionID = intval($_GET['regionid']);
    $query = <<<EOQ
SELECT * 
FROM comuni 
WHERE id_regione = '$regionID' 
ORDER BY comune
EOQ;
    $result = mysql_query($query);
    $returnComuni = '';
    while ($row = mysql_fetch_array($result)) {
      $returnComuni .= "||".$row['id'].",".$row['comune'];
    }
    print_r($returnComuni);
  }
} 
else if (isset($_GET['provinciaid']) and is_numeric($_GET['provinciaid'])) {
  if (isset($_GET['requestItems']) and $_GET['requestItems']==='comuni') {
    $provinciaID = intval($_GET['provinciaid']);
    $query = <<<EOQ
SELECT * 
FROM comuni 
WHERE id_provincia = '$provinciaID' 
ORDER BY comune
EOQ;
    $result = mysql_query($query);
    $returnComuni = '';
    while ($row = mysql_fetch_array($result)) {
      $returnComuni .= "||".$row['id'].",".$row['comune'];
    }
    print_r($returnComuni);
  }
}*/
?>
inoltre ti ho segnato la parte jscript che non ho capito come modificare
 

Allegati

  • 3.jpg
    3.jpg
    29,9 KB · Visite: 458
Ciao di nuovo, adesso funziona, avevo mancato il codice che riempiva la seconda combo, però sembra strano, se volessi una cosa del genere, ti spiego
se la combo marche non ha nessuna selezione, la combo modelli dovrebbe essere vuota
sto dicendo una cavolata o questa cosa è fattibile
Se mi potresti spiegare il codice js che ti ho selezionato sopra così da modificarlo per il mio script
Comunque ti ringrazio per tutto
Ciao:hammer:
 

Discussioni simili