Select concatenate Regioni-Province (con Variazione)

nofcfro

Utente Attivo
27 Mag 2012
72
0
6
Salve,
stavo modificando lo schema di select concatenate gestite con chiamata ajax e jquery.
Originariamente selezionando la prima select regioni, nella seconda select venivano stampate le sue province, selezionando la provincia infine i comuni.
Ciò che servirebbe nel mio caso è una concatenazione più breve: selezionando la prima select regioni mi deve stampare le province ma non in una select ma in una tabella!
Lo schema è questo:
(fonte: wwwPUNTOyourinspirationwebPUNTOcom/2010/09/09/come-realizzare-delle-select-concatenate-con-php-e-jquery/)

Select.php
PHP:
<?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;
}


?>

select.class.php
PHP:
<?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))
				{
					$riscond .= '<tr><td>' . $row['id_com'] . '</td><td>' . $row['comune'] . '</td><td>' . $row['citta'] . '</td></tr>';
				}
				
			return $comuni;
		}
}

?>

e infine la pagina.php di cui riporto solo il javascript che andrebbe modificato
Codice:
<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(){
			
		$("table#comuni").html(attendere);
			var provincia = $("select#province option:selected").attr('value');
			$.post("select.php", {id_pro:provincia}, function(data){
				
				$("table#comuni").html(data);	
			});
		});	
	});
	
	</script>
e nell'html normale di pagina.php c'è il richiamo: <table id="comuni"></table>

Come faccio ad accorciare queste tre concatenate? La regione dovrebbe stamparmi le province nella tabella!
Grazie anticipatamente! :)
 
ciao
non so se dico una put...ta, ma se vuoi solo regioni con la select e le province in una tabella perchè non provi ad eliminare tutto quello che si riferisce ai comuni
PHP:
<?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;
}
*/
?>
PHP:
<?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>';
            $province = '<table>';
            while($row = mysql_fetch_array($res)){
            	//$province .= '<option value="' . $row['id_pro'] . '">' . utf8_encode($row['nome_provincia']) . '</option>';
				$province .='<tr><td>' . $row['id_pro'] . '</td><td>' . utf8_encode($row['nome_provincia']) . '</td></tr>';
			}
			$province .='</table>';
            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)){
                    $riscond .= '<tr><td>' . $row['id_com'] . '</td><td>' . $row['comune'] . '</td><td>' . $row['citta'] . '</td></tr>';
                }
            return $comuni;
        }*/
}
?>
Codice:
<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(){
		//$("table#comuni").html(attendere);
			//var provincia = $("select#province option:selected").attr('value');
			//$.post("select.php", {id_pro:provincia}, function(data){
				//$("table#comuni").html(data);	
			//});
		//});	
	});
</script>
prova, mal che vada non funzia (non sono molto esperto di jq)
 
Sì esatto :) però servirebbe ora la forma abbreviata: cliccando sulla select "regioni" deve stamparmi le province nella tabella!
 
La prima parte del codice è semplice (tolgo le parti non essenz):
Codice:
<script type="text/javascript">
	$(document).ready(function(){

		var scegli = '<option value="0">Scegli...</option>';
		var attendere = '<option value="0">Attendere...</option>';	

		
		$("select#regioni").change(function()
		{
			var regioni= $("select#regioni option:selected").attr('value');
			
			$.post("select.php", {id_reg:regioni}, function(data)
			{
				$("select#province").removeAttr("disabled"); 
				$("select#province").html(data);	
			});
			
		});

Il problema viene ora: una volta che si è selezionato la regione, javascript deve cambiare la funzione e mandarmi i risultati nella tabella, io ho scritto una cosa del genere ma non funziona :(
Codice:
		$("table#province").change(function(){
			$("table#province").html(data);
					
			
	});	
	});

Qualcuno sa darmi una mano?
 
Ultima modifica:
Risolto!

Grazie ma ho risolto così :)
(spero possa essere utile!)

Codice:
<script type="text/javascript">
	$(document).ready(function(){

		var scegli = '<option value="0">Scegli...</option>';
		var attendere = '<option value="0">Attendere...</option>';
		
		$("table#province").html(scegli);
		$("table#province").attr("disabled", "disabled");
		
		
		$("select#regione").change(function(){
			var regione= $("select#regione option:selected").attr('value');
			$("table#province").html(attendere);
			$("table#province").attr("disabled", "disabled");
			
			$.post("select.php", {id_reg:regione}, function(data){
				$("table#province").removeAttr("disabled"); 
				$("table#province").html(data);	
			});
		});	
		
		$("table#province").html(data);
					
			
		
	});
	
</script>
 

Discussioni simili