Articoli

PHP+Ajax: tendina province e comuni

di eugy

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&amp;sezione=turismo&amp;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>

Lascia una risposta

Dovete essere loggati per inviare un commento.

Archivi e link