Ciao a tutti posto la soluzione a cui sono arrivato, funziona, ma non so se sia corretta al 100%.
Ho preso il database su un sito e parte del codice da un altro sito.
Il db tra quelli trovati mi sembra il fatto meglio con 4 tabelle e non 3 come molti. Regioni Province Comuni e Cap purtroppo sembrano mancare dei cap.
Premetto che funziona, ma non so se sia corretto al 100%.
----------------------------
SELECT.php
codice:
<?php
include_once 'select.class.php';
$opt = new SelectList();
if(isset($_POST['id_reg']))
{
echo $opt->ShowProvince();
die;
}
if(isset($_POST['id_pro']))
{
echo $opt->ShowComuni();
die;
}
if(isset($_POST['id_com']))
{
echo $opt->ShowCap();
die;
}
if(isset($_POST['id_reg']))
{
echo $opt->ProvinceDEST();
die;
}
if(isset($_POST['id_pro']))
{
echo $opt->ComuniDEST();
die;
}
if(isset($_POST['id_com']))
{
echo $opt->CapDEST();
die;
}
?>
--------------------------------------------------------------
SELECT.CLASS.php
codice:
<?php
class SelectList
{
protected $conn;
public function __construct()
{
$this->DbConnect();
}
protected function DbConnect()
{
include "db_config.php";
$this->conn = mysql_connect($host,$user,$password) OR die("Impossibile connettersi al database");
mysql_select_db($db,$this->conn) OR die("Impossibile selezionare il database $db");
return TRUE;
}
public function ShowRegioni()
{
$sql = "SELECT * FROM regioni";
$res = mysql_query($sql,$this->conn);
$regioni = '<option value="0">scegli...</option>';
while($row = mysql_fetch_array($res))
{
$regioni .= '<option value="' . $row['cod_regione'] . '">' . utf8_encode($row['regione']) . '</option>';
}
return $regioni;
}
public function ShowProvince()
{
$sql = "SELECT * FROM province WHERE cod_regione=$_POST[id_reg]";
$res = mysql_query($sql,$this->conn);
$province = '<option value="0">scegli...</option>';
while($row = mysql_fetch_array($res))
{
$province .= '<option value="' . $row['cod_provincia'] . '">' . utf8_encode($row['provincia']) . '</option>';
}
return $province;
}
public function ShowComuni()
{
$sql = "SELECT * FROM comuni WHERE cod_provincia=$_POST[id_pro]";
$res = mysql_query($sql,$this->conn);
$comuni = '<option value="0">scegli...</option>';
while($row = mysql_fetch_array($res))
{
$comuni .= '<option value="' . $row['comune'] . '">' . utf8_encode($row['comune']) . '</option>';
}
return $comuni;
}
//CAP capiiiiii
public function ShowCap()
{
$sql = "SELECT * FROM cap WHERE comune='$_POST[id_com]'";
$res = mysql_query($sql,$this->conn);
$cap = '<option value="0">scegli...</option>';
while($row = mysql_fetch_array($res))
{
$cap .= '<option value="' . $row['cap'] . '">' . utf8_encode($row['cap']) . '</option>';
}
return $cap;
}
// E DUEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
public function RegioniDEST()
{
$sql = "SELECT * FROM regioni";
$res = mysql_query($sql,$this->conn);
$regdes = '<option value="0">scegli...</option>';
while($row = mysql_fetch_array($res))
{
$regdes .= '<option value="' . $row['cod_regione'] . '">' . utf8_encode($row['regione']) . '</option>';
}
return $regdes;
}
public function ProvinceDEST()
{
$sql = "SELECT * FROM province WHERE cod_regione=$_POST[id_reg]";
$res = mysql_query($sql,$this->conn);
$prodes = '<option value="0">scegli...</option>';
while($row = mysql_fetch_array($res))
{
$prodes .= '<option value="' . $row['cod_provincia'] . '">' . utf8_encode($row['provincia']) . '</option>';
}
return $prodes;
}
public function ComuniDEST()
{
$sql = "SELECT * FROM comuni WHERE cod_provincia=$_POST[id_pro]";
$res = mysql_query($sql,$this->conn);
$comdes = '<option value="0">scegli...</option>';
while($row = mysql_fetch_array($res))
{
$comdes .= '<option value="' . $row['comune'] . '">' . utf8_encode($row['comune']) . '</option>';
}
return $comdes;
}
//Cap dest
public function CapDEST()
{
$sql = "SELECT * FROM cap WHERE comune='$_POST[id_com]'";
$res = mysql_query($sql,$this->conn);
$capdes = '<option value="0">scegli...</option>';
while($row = mysql_fetch_array($res))
{
$capdes .= '<option value="' . $row['cap'] . '">' . utf8_encode($row['cap']) . '</option>';
}
return $capdes;
}
}
?>
------------------------------------------------------------------------------------------
INDEX.php
codice:
<html>
<head>
<title>Regioni, province, comuni </title>
<script type="text/javascript">
$(document).ready(function(){
var scegli = '<option value="0">Scegli...</option>';
var attendere = '<option value="0">Attendere...</option>';
//uno
$("select#province").html(scegli);
$("select#province").attr("disabled", "disabled");
$("select#comuni").html(scegli);
$("select#comuni").attr("disabled", "disabled");
//PROVA CAP
$("select#cap").html(scegli);
$("select#cap").attr("disabled", "disabled");
// CAP DEST
$("select#capdes").html(scegli);
$("select#capdes").attr("disabled", "disabled");
//e DUEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
$("select#prodes").html(scegli);
$("select#prodes").attr("disabled", "disabled");
$("select#comdes").html(scegli);
$("select#comdes").attr("disabled", "disabled");
//uno
$("select#regioni").change(function(){
var regione = $("select#regioni option:selected").attr('value');
$("select#province").html(attendere);
$("select#province").attr("disabled", "disabled");
$("select#comuni").html(scegli);
$("select#comuni").attr("disabled", "disabled");
//aggiunta per il cap
$("select#cap").html(scegli);
$("select#cap").attr("disabled", "disabled");
$.post("select.php", {id_reg:regione}, function(data){
$("select#province").removeAttr("disabled");
$("select#province").html(data);
});
});
//da correggere per province
$("select#province").change(function(){
var provincia = $("select#province option:selected").attr('value');
$("select#comuni").html(attendere);
$("select#comuni").attr("disabled", "disabled");
$("select#cap").html(scegli);
$("select#cap").attr("disabled", "disabled");
$.post("select.php", {id_pro:provincia}, function(data){
$("select#comuni").removeAttr("disabled");
$("select#comuni").html(data);
});
});
//da corregere per il cap
$("select#comuni").change(function(){
$("select#cap").attr("disabled", "disabled");
$("select#cap").html(attendere);
var comune = $("select#comuni option:selected").attr('value');
$.post("select.php", {id_com:comune}, function(data){
$("select#cap").removeAttr("disabled");
$("select#cap").html(data);
});
});
//Destinatario
$("select#regdes").change(function(){
var regione = $("select#regdes option:selected").attr('value');
$("select#prodes").html(attendere);
$("select#prodes").attr("disabled", "disabled");
$("select#comdes").html(scegli);
$("select#comdes").attr("disabled", "disabled");
$.post("select.php", {id_reg:regione}, function(data){
$("select#prodes").removeAttr("disabled");
$("select#prodes").html(data);
});
});
//da correggere per province destinatario
$("select#prodes").change(function(){
var provincia = $("select#prodes option:selected").attr('value');
$("select#comdes").html(attendere);
$("select#comdes").attr("disabled", "disabled");
$("select#capdes").html(scegli);
$("select#capdes").attr("disabled", "disabled");
$.post("select.php", {id_pro:provincia}, function(data){
$("select#comdes").removeAttr("disabled");
$("select#comdes").html(data);
});
});
//da corregere per il cap destinatario
$("select#comdes").change(function(){
$("select#capdes").attr("disabled", "disabled");
$("select#capdes").html(attendere);
var comune = $("select#comdes option:selected").attr('value');
$.post("select.php", {id_com:comune}, function(data){
$("select#capdes").removeAttr("disabled");
$("select#capdes").html(data);
});
});
});
</script>
</head>
<?php
include_once 'select.class.php';
$opt = new SelectList();
?>
<body>
<div id="container">
<h1>La cascata regioni - province - comuni</h1>
<h2>Seleziona una regione e nella select successiva compariranno le province di quella regione</h2>
<h3>Selezionando una provincia, nella select successiva compariranno i comuni di quella provincia</h3>
Seleziona una regione:
<select id="regioni">
<?php echo $opt->ShowRegioni(); ?>
</select>
Seleziona una provincia:
<select id="province">
<option>Scegli...</option>
</select>
Seleziona un comune:
<select id="comuni">
<option>Scegli...</option>
</select>
Seleziona cap:
<select id="cap">
<option>Scegli...</option>
</select>
<h3><center>DESTINATARIO</center></h3>
<select id="regdes">
<?php echo $opt->RegioniDEST(); ?>
</select>
Seleziona una provincia:
<select id="prodes">
<option>Scegli...</option>
</select>
Seleziona un comune:
<select id="comdes">
<option>Scegli...</option>
</select>
Seleziona cap:
<select id="capdes">
<option>Scegli...</option>
</select>
</div>
</body>
</html>