Buonasera, ho trovato del codice per realizzare delle select concatenate al seguente link : http://www.yourinspirationweb.com/20...-php-e-jquery/
Il codice originario è questo
index.php
select.class.phpcodice:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html charset=utf-8"> <meta name="author" content="Tarchini Maurizio"> <script type="text/javascript" src="jquery-1.3.2.js"></script> <link href="screen.css" rel="stylesheet" type="text/css" /> <title>Regioni, province, comuni | Your Inspiration Web</title> <script type="text/javascript"> $(document).ready(function(){ var scegli = '<option value="0">Scegli...</option>'; var attendere = '<option value="0">Attendere...</option>'; $("select#province").html(scegli); $("select#province").attr("disabled", "disabled"); $("select#comuni").html(scegli); $("select#comuni").attr("disabled", "disabled"); $("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"); $.post("select.php", {id_reg:regione}, function(data){ $("select#province").removeAttr("disabled"); $("select#province").html(data); }); }); $("select#province").change(function(){ $("select#comuni").attr("disabled", "disabled"); $("select#comuni").html(attendere); var provincia = $("select#province option:selected").attr('value'); $.post("select.php", {id_pro:provincia}, function(data){ $("select#comuni").removeAttr("disabled"); $("select#comuni").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> <form action="?" id="myform"> Seleziona una regione:<br /> <select id="regioni"> <?php echo $opt->ShowRegioni(); ?> </select> <br /><br /> Seleziona una provincia:<br /> <select id="province"> <option>Scegli...</option> </select> <br /><br /> Seleziona un comune:<br /> <select id="comuni"> <option>Scegli...</option> </select> </div> </form> </body> </html>
select.phpcodice:<?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['id_reg'] . '">' . utf8_encode($row['nome_regione']) . '</option>'; } return $regioni; } public function ShowProvince() { $sql = "SELECT * FROM province WHERE id_reg=$_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['id_pro'] . '">' . utf8_encode($row['nome_provincia']) . '</option>'; } return $province; } public function ShowComuni() { $sql = "SELECT * FROM comuni WHERE id_pro=$_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['id_com'] . '">' . $row['cap'] . ' - ' . utf8_encode($row['comune']) . '</option>'; } return $comuni; } } ?>
ho provato ad adattarlo un po' per farlo lavorare con il mio database, ma non sono riuscito, quindi ho provato a modificare il nome del campo e a vedere se funziona lo stesso, ma ancora nulla. Posto qui anche il codice modificato. Sapreste dirmi se devo effettuare delle ulteriori modifiche per farlo funzionare?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; } ?>
Posto il codice nella forma in cui l'ho modificato :
index.php
select.phpcodice:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html charset=utf-8"> <meta name="author" content="Tarchini Maurizio"> <script type="text/javascript" src="jquery-1.3.2.js"></script> <link href="screen.css" rel="stylesheet" type="text/css" /> <title>Regioni, province, comuni | Your Inspiration Web</title> <script type="text/javascript"> $(document).ready(function(){ var scegli = '<option value="0">Scegli...</option>'; var attendere = '<option value="0">Attendere...</option>'; $("select#province").html(scegli); $("select#province").attr("disabled", "disabled"); $("select#comuni").html(scegli); $("select#comuni").attr("disabled", "disabled"); $("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"); $.post("selectVecchio.php", {idregione:regione}, function(data){ $("select#province").removeAttr("disabled"); $("select#province").html(data); }); }); $("select#province").change(function(){ $("select#comuni").attr("disabled", "disabled"); $("select#comuni").html(attendere); var provincia = $("select#province option:selected").attr('value'); $.post("selectVecchio.php", {idprovincia:provincia}, function(data){ $("select#comuni").removeAttr("disabled"); $("select#comuni").html(data); }); }); }); </script> </head> <?php include_once 'select.classVecchio.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> <form action="?" id="myform"> Seleziona una regione:<br /> <select id="regioni"> <?php echo $opt->ShowRegioni(); ?> </select> <br /><br /> Seleziona una provincia:<br /> <select id="province"> <option>Scegli...</option> </select> <br /><br /> Seleziona un comune:<br /> <select id="comuni"> <option>Scegli...</option> </select> </div> </form> </body> </html>
select.class.phpcodice:<?php include_once 'select.classVecchio.php'; $opt = new SelectList(); if(isset($_POST['idprovincia'])) { echo $opt->ShowProvince(); die; } if(isset($_POST['idregione'])) { echo $opt->ShowComuni(); die; } ?>
La versione originale funziona correttamente, posto anche entrambe le versioni delle tabelle del database.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['idregione'] . '">' . utf8_encode($row['nome_regione']) . '</option>'; } return $regioni; } public function ShowProvince() { $sql = "SELECT * FROM province WHERE idregione=".$_POST[idregione]; $res = mysql_query($sql,$this->conn); $province = '<option value="0">scegli...</option>'; while($row = mysql_fetch_array($res)) { $province .= '<option value="' . $row['idprovincia'] . '">' . utf8_encode($row['nome_provincia']) . '</option>'; } return $province; } public function ShowComuni() { $sql = "SELECT * FROM comuni WHERE idprovincia=".$_POST[idprovincia]; $res = mysql_query($sql,$this->conn); $comuni = '<option value="0">scegli...</option>'; while($row = mysql_fetch_array($res)) { $comuni .= '<option value="' . $row['idComune'] . '">' . $row['cap'] . ' - ' . utf8_encode($row['comune']) . '</option>'; } return $comuni; } } ?>
database originario :
database da me modificato :codice:CREATE TABLE `comuni` ( `id_com` int(6) unsigned NOT NULL auto_increment, `id_pro` int(4) unsigned NOT NULL, `cap` int(8) unsigned NOT NULL, `comune` varchar(200) character set latin1 NOT NULL, PRIMARY KEY (`id_com`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=8101 ; CREATE TABLE `province` ( `id_pro` int(4) unsigned NOT NULL auto_increment, `id_reg` int(3) unsigned NOT NULL, `nome_provincia` varchar(200) character set latin1 NOT NULL, PRIMARY KEY (`id_pro`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=111 ; CREATE TABLE `regioni` ( `id_reg` int(3) unsigned NOT NULL auto_increment, `nome_regione` varchar(200) character set latin1 NOT NULL, PRIMARY KEY (`id_reg`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=21 ;
codice:CREATE TABLE IF NOT EXISTS `comuni` ( `idComune` int(6) unsigned NOT NULL AUTO_INCREMENT, `idprovincia` int(4) unsigned NOT NULL, `cap` int(8) unsigned NOT NULL, `comune` varchar(200) CHARACTER SET latin1 NOT NULL, PRIMARY KEY (`idComune`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=8101 ; CREATE TABLE IF NOT EXISTS `province` ( `idprovincia` int(4) unsigned NOT NULL AUTO_INCREMENT, `idRegione` int(3) unsigned NOT NULL, `nome_provincia` varchar(200) CHARACTER SET latin1 NOT NULL, PRIMARY KEY (`idprovincia`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=111 ; CREATE TABLE IF NOT EXISTS `regioni` ( `idregione` int(3) unsigned NOT NULL AUTO_INCREMENT, `nome_regione` varchar(200) CHARACTER SET latin1 NOT NULL, PRIMARY KEY (`idregione`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=21 ;

Rispondi quotando