Select concatenate Regioni-Province-Comuni (con Variazione)

nofcfro

Utente Attivo
27 Mag 2012
72
0
6
Salve a tutti!
Da questo sito:

wwwPUNTOyourinspirationwebPUNTOcom/2010/09/09/come-realizzare-delle-select-concatenate-con-php-e-jquery/

è possibile scaricare l'esempio di select concatenate Regioni->Province->Comuni. Lo schema proposto in questo esempio è il seguente:
Prima Select Regione (popolata dal database) -> chiamata Ajax che popola la Seconda Select Province (sempre popolata dal database) -> chiamata Ajax che popola la Terza Select Comuni (sempre popolata dal database).
A me servirebbe che il terzo popolamento non andasse sotto forma di select bensì mi stampasse a video in una tabella o div tutti i comuni della provincia selezionata.
Qualcuno può darmi una mano? :)
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Puoi provare cosi

in select.class.php modifichi il metodo ShowComuni in questo modo
PHP:
public function ShowComuni()
		{
			$sql = "SELECT * FROM comuni WHERE id_pro=$_POST[id_pro]";
			$res = mysql_query($sql,$this->conn);
			$comuni = "";			
				while($row = mysql_fetch_array($res))
				{
					$comuni .= '<tr><td>' . $row['id_com'] . '</td><td>' . $row['cap'] . '</td><td>' . utf8_encode($row['comune']) . '</td></tr>';
				}                        
			return $comuni;
		}
in index.php modifichi la select dei comuni cosi;:
HTML:
<table id="comuni">
			
</table>
e la chiamata jquery cosi:
Codice:
$("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);	
			});
		});

personalizza la tabella con i css
 

nofcfro

Utente Attivo
27 Mag 2012
72
0
6
Ma una domanda: perché nella select.class.php la variabile $comuni = ""; rimane vuota?
E come faccio a creare una tabella più complessa? Ad esempio a più righe? Io ho messo:

PHP:
$comuni.=   '<table width="100%"><tr><td>' . $row['ccc'] . '</td></tr>' . '<tr><td>' . $row['aaa'] . '</td></tr><tr><td>' . $row['bbb'] . '</td></tr></table>';

Grazie! ;)
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
la variabile $comuni = ""; rimane vuota?

Viene inizializzata vuota per non generare un warning ma poi concatenata nel ciclo con le varie <tr>

$comuni.= ( punto uguale ) serve per concatenare una stringa

Nel ciclo non devi mettere <table> perche la hai gia nell'html della index

se vuoi essere piu ordinato puoi scrivere cosi

PHP:
public function ShowComuni()
		{
			$sql = "SELECT * FROM comuni WHERE id_pro=$_POST[id_pro]";
			$res = mysql_query($sql,$this->conn);
			$comuni = "";			
				while($row = mysql_fetch_array($res))
				{
					$comuni.= '<tr>';
                                        $comuni.= '<td>' . $row['id_com'] . '</td>';
                                        $comuni.= '<td>' . $row['cap'] . '</td>';
                                        $comuni.= '<td>' . utf8_encode($row['comune']) . '</td>';
                                        $comuni.= '</tr>';
				}                        
			return $comuni;
		}
 

nofcfro

Utente Attivo
27 Mag 2012
72
0
6
Grazie, sempre perfetto :)
Penso che anche quest'altra domanda possa tornare utile a molti utenti: se ho delle tabelle "player01, player02, ecc" che contengono le caratteristiche di ogni giocatore, se genero un codice come quello che segue, nella pagina principale non mi vengono visualizzate tutte le tabelle contenenti dati, ma solamente l'ultima! Come si può risolvere??
Grazie anticipatamente :)
PHP:
//utente01
			$sql = "SELECT player01.* FROM player01 WHERE player01.idutenticon_tblutenticon=$_POST[idutenticon]";
            $res = mysql_query($sql,$this->conn);
            $player= "";            
                while($row = mysql_fetch_array($res))
                {
                    $player.= '<tr>';
                                        $player.= '<td>' . '<strong>Occhi: </strong>' . $row['occhi'] . '</td>';
                                        $player.= '<td>' . '<strong>Capelli: </strong>' . $row['capelli'] . '</td>';
                    $player.= '</tr><tr>';
                                        $player.= '<td>' . '<strong>Viso: </strong>' . $row['viso'] . '</td>';
                                        $player.= '<td>' . '<strong>Altezza: </strong>' . $row['altezza'] . '</td>';
                    $player.= '</tr>';               
			}        
		
		//utente02
			$sql = "SELECT player02.* FROM player02 WHERE player02.idutenticon_tblutenticon=$_POST[idutenticon]";
            $res = mysql_query($sql,$this->conn);
            $player= "";            
                while($row = mysql_fetch_array($res))
                {
                    $player.= '<tr>';
                                        $player.= '<td>' . '<strong>Occhi: </strong>' . $row['occhi2'] . '</td>';
                                        $player.= '<td>' . '<strong>Capelli: </strong>' . $row['capelli2'] . '</td>';
                    $player.= '</tr><tr>';
                                        $player.= '<td>' . '<strong>Viso: </strong>' . $row['viso2'] . '</td>';
                                        $player.= '<td>' . '<strong>Altezza: </strong>' . $row['altezza2'] . '</td>';
                    $player.= '</tr>';               
			}

Ad esempio se ho la tabella "player01" e "player02" con dati, perché viene visualizzata solo la seconda?
 
Ultima modifica:

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Nuovo problema nuova discussione

ripostala pero nella sezione di PHP

e cmq non ho capito molto
 

nofcfro

Utente Attivo
27 Mag 2012
72
0
6
Non posso aprire una nuova discussione perché questo problema PHP credo sia legato alla struttura della chiamata Ajax.
Tento però di spiegarmi meglio.

Se io avessi invece che un'unica tabella "comuni" tante tabelle denominate "comune1", "comune2", ecc:

PHP:
public function ShowComuni()
        {
            $sql = "SELECT tblcomune1.* FROM tblcomune1 WHERE id_pro=$_POST[id_pro]";
            $res = mysql_query($sql,$this->conn);
            $comuni = "";            
                while($row = mysql_fetch_array($res))
                {
                    $comuni.= '<tr>';
                                        $comuni.= '<td>' . $row['id_com1'] . '</td>';
                                        $comuni.= '<td>' . $row['cap1'] . '</td>';
                                        $comuni.= '<td>' . utf8_encode($row['comune1']) . '</td>';
                                        $comuni.= '</tr>';
                }   
            $sql = "SELECT tblcomune2.* FROM tblcomune2 WHERE id_pro=$_POST[id_pro]";
            $res = mysql_query($sql,$this->conn);
            $comuni = "";            
                while($row = mysql_fetch_array($res))
                {
                    $comuni.= '<tr>';
                                        $comuni.= '<td>' . $row['id_com2'] . '</td>';
                                        $comuni.= '<td>' . $row['cap2'] . '</td>';
                                        $comuni.= '<td>' . utf8_encode($row['comune2']) . '</td>';
                                        $comuni.= '</tr>';
                }
            $sql = "SELECT tblcomune3.* FROM tblcomune3 WHERE id_pro=$_POST[id_pro]";
            $res = mysql_query($sql,$this->conn);
            $comuni = "";            
                while($row = mysql_fetch_array($res))
                {
                    $comuni.= '<tr>';
                                        $comuni.= '<td>' . $row['id_com3'] . '</td>';
                                        $comuni.= '<td>' . $row['cap3'] . '</td>';
                                        $comuni.= '<td>' . utf8_encode($row['comune3']) . '</td>';
                                        $comuni.= '</tr>';
                }                     
            return $comuni;
        }

E tutte queste tabelle "comune1", "comune2", ecc sono popolate, utilizzando il codice che gentilmente prima mi hai postato ottengo come risultato solo la tabella col comune3! Mentre io vorrei che mi elencasse la tabella col comune1, la tabella col comune2, la tabella col comune3!
Se invece utilizzo il vecchio codice con le select concatenate del mio primo post, ottengo che al cliccare il menù delle province mi si popola il menù dei comuni con la prima select che è comune1, la seconda select che è comune2, ecc.
E' che è difficile spiegarsi bene quando si parla di queste cose! Spero di essermi espresso meglio questa volta :D
 

usernam47

Nuovo Utente
21 Nov 2012
7
0
0
altra variazione

Buongiorno!!e grazie di avermi indicato questa discussione, che non avevo trovato scusate se ne ho aperta una sullo stesso argomento.

io avrei un problema diverso:

dovrei stampare a video il comune selezionato, dopo la selezione a cascata e visualizzare anche gli altri dati di quel comune.
ecco il ragionamento
1.dovrei aggiungere una funzione in select.class per tirare fuori i dati dopo la selezione del comune
2.aggiungere la chiamata nello script della index per visualizzare i dati.

ho provato a inserire nella index:
PHP:
--$("select#comuni").change(function(){
			
			$("table#comune").html(attendere);
			var comune = $("select#comuni option:selected").attr('value');
			$.post("select.php", {id_com:comuni}, function(data){
				
				$("table#comune").html(data);	
			});
		});
--

nel select.php
--if(isset($_POST['id_com']))
   {
	echo $opt->ShowComune();
	die;
   }
--
nel select.class:
PHP:
public function ShowComune()
		{
			$sql = "SELECT * FROM comuni WHERE id_com=$_POST[id_com]";
			$res = mysql_query($sql,$this->conn);
			$comune = '';
			
				while($row = mysql_fetch_array($res))
				{
					$comune.= $row['id_com'] . $row['cap'] . ' - ' . utf8_encode($row['comune']);
				}
				
			return $comune;
		}
e quando faccio la selezione mi restituisce il seguente errore:

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\testcascata\select.class.php on line 70

qualcuno mi puo dare un suggerimento!!!

grazie in anticipo.
 
Ultima modifica di un moderatore:

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
stampa query ed errore in questo modo
PHP:
<?php

$sql = "SELECT * FROM comuni WHERE id_com=$_POST[id_com]";
$res = mysql_query($sql, $this->conn);
// se la query non va a buon fine
if (!$res) {
    // stampi query ed errore
    echo "Errore nella query <br/>" . $query . "<br/>" . mysql_error();
    // blocchi l'esecuzione dello script
   die();
}  
?>
dall'errore puoi capire dov'è il problema

edit
qui ci vanno gli apici singoli
PHP:
$_POST[id_com]
PHP:
$_POST['id_com']
 
Ultima modifica:

usernam47

Nuovo Utente
21 Nov 2012
7
0
0
sto impazzendo!!!

1.se metto gli apici si incazza!!e non so perchè

2.come faccio a dargli la condizione di selezionare solo il record che è stato selezionato nel menu precedente? l'errore mi dice che c'è un errore nella query e d'accordo, ma se tolgo WHERE id ecc mi stampa tutti i comuni a prescindere dalla provincia (quindi non va bene), ho visto anche che tutte le condizioni che posso mettere sono relative ai campi nella tabella ma io non ho nessun campo che mi dice che il comune è selezionato.
sono sfinito....come dico ad una funzione di stampare una serie di dati che fanno riferimento alla selezione nel menu sopra che non mi restituisce nessun risultato.
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
l'errore mi dice che c'è un errore nella query
postalo
di solito mysql è molto preciso sugli errori

ma la select dei comuni sei riuscito a popolarla?
 
Ultima modifica:

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
trovato l'errore
nella chiamata jquery scrivi comuni
PHP:
$.post("select.php", {id_com:comuni}, function(data){
invece che comune
PHP:
$.post("select.php", {id_com:comune}, function(data){

se non riesci a risolvere te lo posto funzionante
 

usernam47

Nuovo Utente
21 Nov 2012
7
0
0
buongiorno!!!
ho provato a mettere comuni ma mi da sempre lo stesso errore:

Notice: Undefined variable: query in C:\xampp\htdocs\testcascata\select.class.php on line 71
Errore nella query

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[object HTMLSelectElement]' at line 1

ti posto il codice dei file:
1. select.class:l'ultima funzione dovrebbe tirarmi fuori il comune ma lì viene l'errore
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))
				{
					$comuni .= '<option value="' . $row['id_com'] . '">' . $row['cap'] . ' - ' . utf8_encode($row['comune']) . '</option>';
				}
				
			return $comuni;
		}
		public function ShowComune(){		

		$sql = "SELECT * FROM comuni WHERE id_com=$_POST[id_com]";
		$res = mysql_query($sql, $this->conn);
		// se la query non va a buon fine
		if (!$res) {
		// stampi query ed errore
		echo "Errore nella query <br/>" . $query . "<br/>" . mysql_error();
		// blocchi l'esecuzione dello script
		die();
			}
		}  		
}
?>
2. index.php
PHP:
<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#comune").html;
		
		
		
		
		$("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);	
			});
		});	
		$("select#comuni").change(function(){
			
			$("table#comune").html(attendere);
			var comune = $("select#comuni option:selected").attr('value');
			$.post("select.php", {id_com:comuni}, function(data){
				
				$("table#comune").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="select_form">
			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>
			<br />
			<br />
			<br />
			
		</form>
		<table id="comune"></table>
	</div>
3.select.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;
}

if(isset($_POST['id_com']))
{
	echo $opt->ShowComune();
	die;
}
grazie infinitamente per l'aiuto....
 
Ultima modifica di un moderatore:

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
no, non hai cambiato
Codice:
$("select#comuni").change(function(){
            
            $("table#comune").html(attendere);
            var comune = $("select#comuni option:selected").attr('value');
            $.post("select.php", {id_com:comuni}, function(data){
                
                $("table#comune").html(data);    
            });
        });
cosi
Codice:
$("select#comuni").change(function(){
            
            $("table#comune").html(attendere);
            var comune = $("select#comuni option:selected").attr('value');
            $.post("select.php", {id_com:comune}, function(data){    // [B]questa riga [/B]
                
                $("table#comune").html(data);    
            });
        });
 
Discussioni simili
Autore Titolo Forum Risposte Data
neo996sps [Laravel 5.1 + ajax] Popolare select concatenate Regioni, Province, Comuni PHP 1
N Select concatenate Regioni-Province (con Variazione) Javascript 7
Emix Select concatenate php sql ajax PHP 2
F [Javascript] select list concatenate - passare valore dalla prima alla seconda Javascript 7
S Select Concatenate Ajax, php, sql Presentati al Forum 16
A select concatenate Javascript 1
N AsmSelect jQuery, Select concatenate jQuery 3
D Select concatenate impostare di default dato memorizzato Javascript 4
ciccio1892 Select concatenate con Ajax inviare scelta utente tramite post insieme ad altri dati form PHP 3
R select concatenate solo php PHP 12
S Select dinamiche concatenate Ajax 8
B Select concatenate di tutte le province e comuni d'Italia aggiornato al 2007 Presenta il tuo Sito 0
L Ripetere Campi disabilitando input in riferimento ad un valore della select jQuery 0
otto9due Ordinare option di una select Javascript 5
W MySQL ciclo in SELECT MySQL 0
W MySQL SELECT list dinamica MySQL 0
M Select Option dentro una Table jQuery 2
G Colorare menu select attraverso ricerca php PHP 0
L problema con query select PHP 2
F menù select dinamico da db in php PHP 3
D popolare campi tra th alla select PHP 36
M Estrarre valore con SELECT COUNT PHP 0
M Creare un campo input select quantità di un numero intero prelevato dal db PHP 3
L Select Dinamiche...da txt? PHP 3
E Php select option e ajax PHP 23
R Select concatenata che non funziona la seconda volta Ajax 3
L select join e sottrazione punti PHP 13
L input dati con inser into select ? PHP 4
V hierarchy-select jQuery 0
F query e form con select multipla PHP 17
T recupero valori select multipla da android Javascript 3
J php, scegliere autista da select e mostrare se ha fatto un incidente PHP 8
Tommy03 Select in ordine per numero di record MySQL 7
T problema con select dinamica con jquery Javascript 0
J Far comparire e scomparire un div con un select Javascript 1
M Opzioni select da 1 a 200 PHP 0
I Fatal error: Query Failed! SQL: SELECT * INTO OUTFILE PHP 1
C input in sostituzione della select PHP 2
G Insert into select - Aiuto MySQL 0
max1974 autocomplete trigger select jQuery 0
X [Select] Valori chiave non presenti in un'altra tabella MySQL 2
M Estrarre dati da una select HTML PHP 3
MarcoGrazia jquery validate, necessità di validare almeno un elemento select su due jQuery 1
T [PHP] Autocompilazione input multiple da una select PHP 1
Alex_70 [PHP] Visualizzare foto tramite select PHP 0
S [PHP] aggiornamento table tramite select senza ricaricare la pagina PHP 5
psicomia Gestione funzione in javascript in tabella richiamare"textarea" valori preimpostati in "select" Javascript 2
M [PHP] Problema con query select PHP 2
C [PHP] Controllo <select> comportamento anomalo PHP 2
G [PHP] Select con opzioni dipendenti da un'altra select PHP 3

Discussioni simili