Per fare selezionare un comune dal database servirebbe una tendina di 8000 voci… una possibilità è fare due tendine, una per provincia e una per comune, facendo popolare la seconda in base alla scelta fatta nella prima. Serve:
Una funzione Javascript per il popolamento:
<script type="text/javascript">
function change(ref)
{
var selid = ref.selectedIndex;
var value = ref.options[selid].value; var url = "popola.php";
var pars="id_provincia="+value;
var myAjax = new Ajax.Request( url,
{
method: 'get',
parameters: pars,
onComplete: function (data)
{
$('selectComune').innerHTML = data.responseText;
}
});
}
</script>
Uno script PHP che esegua la query per il popolamento:
<?
if (isset($_GET["id_provincia"])){ $strSQL="SELECT * FROM comuni";
if (is_numeric($_GET["id_provincia"]) AND $_GET["id_provincia"]>0) $strSQL.=" WHERE id_provincia=".$_GET["id_provincia"];
$strSQL.=" ORDER BY comune";
// connessione al db
$connessione=mysql_connect("localhost", "utente", "password");
$db=mysql_select_db("nomedb") OR DIE ("Impossibile connettersi al database");
$risultati=mysql_query($strSQL) OR DIE ("Impossibile eseguire la query");
// scrivo la select per intero
echo "<select class=\"testo_input\" style=\"width: 147px; float: left;\" title=\"selezionare il comune\"
name=\"comune_mod\" id=\"comune_mod\"><option value=\"0\">Scegli un
comune</option>";
while ($rs=mysql_fetch_array($risultati)){
if($rs["id_comune"] == $_POST[comune_mod]) $selected = "selected"; else $selected = "";
echo "<option value=\"".$rs["id_comune"]."\">".htmlentities($rs["comune"])."</option>";
}
echo "</select>";
$chiudi=mysql_close($connessione);
}
?>
Il form:
<form action="index.php?page=lista&sezione=turismo&lang=<?=$lang?>" enctype="multipart/form-data" method="POST" target="_self">
<select style="width:147px; float:left;" class="testo_input" title="selezionare la provincia di appartenenza" name="comune_mod_p" id=
"comune_mod_p" onchange="change(this);">
<option value="">Prima scegli la provincia</option>
<?
$strProvince="SELECT id_provincia, nomeprovincia FROM province";
$risultati=mysql_query($strProvince) OR DIE ("Impossibile eseguire la query");
// scrivo la select per intero
while ($rs=mysql_fetch_array($risultati)){
// if($rs["id_provincia"] == $_POST[comune_mod_p]) $selected = "selected"; else $selected = "";
echo "<option value=\"".$rs["id_provincia"]."\"".$selected.">".$rs["nomeprovincia"]."</option>";
}
?>
</select>
<br/>
<span id="selectComune">
<select class="testo_input" style="visibility: hidden;width:147px; float:left;"></select>
</span><input type="submit" value=<? echo $l_cerca["$lang"]?> class="tasto_cerca" name="cerca_comune">
</form>