- Home
- Categorie
- Coding e Sistemistica
- PHP
- script regioni provincie e comuni
-
script regioni provincie e comuni
Ciao a tutti,
ho un database con tre tabelle (Regioni, Provincie, Comuni)
ora devo fare una form con tre Select.
Nella prima la regione, nella seconda le provincie e nella terza le città/paesi.
Selezionando la regione, la seconda si riempie delle provincie di quella regione, selezionando la seconda, la terza si riempie dei comuni di quella provincia.
Il tutto estraendo i dati dal database...
come posso fare?
soluzioni?
resto in attesa dei vostri cari suggerimenti...
Ciao!!nessun suggerimento?
vi prego [...]...!
-
Ciao talkoman
le provincie e comuni sono legati alla tabella padre da qualcosa?
esempio:regione
id | descrizione
1 | Siciliaprovincia
*id |descrizione| id_regione
*1 | Catania | 1comune
*id |descrizione| id_provincia
*1 | Acitrezza | 1Se si (anche perché personalmente non troverei altri modi) ti basterà assegnare una query ad ogni select per tirar fuori i dati legati alla tabella padre
Regione:
SELECT descrizione FROM regione ```Provincie:
SELECT descrizione FROM provincie WHERE id_regione='$id_regione'
SELECT descrizione FROM comuni WHERE id_provincia='$id_provincia'
Per ottenere gli id ovviamente ti recuperi il dato postato dalla select a cui assegnerai come value l'id dell'elemento ;)
-
credo di aver capito....tu vuoi che il tutto venga fatto "al volo" no?
Piccolo problema....tu abla espanol!?
Vai qui...
-
vi faccio vedere cosa dovrei fare.
Provate a compilare questo form:
tecnocasa.it/commerciale/txtsearch/searchi.jsp?conf=ra&orig=SitoTecnocasa
-
vedo che già funziona........non è ben chiaro allora che vorresti fare
Se come dice ciccio6630 vuoi che ti si faccia senza l'aggiornamento pagina allora devi ricorrere al Js o ajax
-
quello non l'ho fatto io.
Ne devo realizzare uno uguale e mi serve una mano....
-
bene....le query da fare sono quelle...
dove hai dubbi?
-
come fargliele eseguire ogni volta che cambio regione....
-
In PHP non puoi far altro che mettere un bel tasto submit dato che è un linguaggio lato server
In Js (ovvero com'è fatto in quel sito da te linkato)[php]<select onchange="document.nome_form.submit()" name="region">[/php]
ricarica la pagina alla selezione di una nuova regione e ti raccogli i dati postati per rieseguire le query
-
@Samyorn said:
ricarica la pagina alla selezione di una nuova regione e ti raccogli i dati postati per rieseguire le query
ecco....proprio questo non so fare.....:bho:
-
Ah, ecco
Allora prova così, dovrebbe andare
[php]<?
$id_regione="";
$id_provincia="";
$id_comune="";$id_regione=$_POST['regione'];
$id_provincia=$_POST['provincia'];
$id_comune=$_POST['comune'];
?><form action="page.php" name="search" method="POST">
<select onchange="document.search.submit()" name="regione">
<option value="">Scegli regione...</option>
<?
$sql_regione="SELECT * FROM regione ORDER BY descrizione";
$query_regione=@mysql_query($sql_regione) or die (mysql_error());
while ($array=mysql_fetch_array($query_regione))
{
?>
<option value="<? echo $array['id']; ?>"<? if ($id_regione==$array['id']) {echo " selected";} ?>><? echo $array['descrizione']; ?></option>
<?
}
?>
</select><select onchange="document.search.submit()" name="provincia"> <option value="">Scegli provincia...</option> <? $sql_provincia="SELECT * FROM provincia"; if ($id_regione!="") { $sql_provincia.=" WHERE id_regione='$id_regione'"; } $sql_provincia.=" ORDER BY descrizione"; $query_provincia=@mysql_query($sql_provincia) or die (mysql_error()); while ($array=mysql_fetch_array($query_provincia)) { ?> <option value="<? echo $array['id']; ?>"<? if ($id_provincia==$array['id']) {echo " selected";} ?>><? echo $array['descrizione']; ?></option> <? } ?> </select> <select onchange="document.search.submit()" name="comune"> <option value="">Scegli il comune...</option> <? $sql_comuni="SELECT * FROM comuni"; if ($id_provincia!="") { $sql_comuni.=" WHERE id_provincia='$id_regione'"; } $sql_comuni.=" ORDER BY descrizione"; $query_comunia=@mysql_query($sql_comuni) or die (mysql_error()); while ($array=mysql_fetch_array($query_comunia)) { ?> <option value="<? echo $array['id']; ?>"<? if ($id_comune==$array['id']) {echo " selected";} ?>><? echo $array['descrizione']; ?></option> <? } ?> </select>
</form>[/php]
-
ehi grazie tante per il codice.
l'ho provato ma non va....
Cioè le select si riempiono ma sono bianche.....
non si vede il contenuto!!!
e in più pur non scegliendo la regione, sia comune che provincia sono piene.... :s
-
Io ho messo dei nomi campo a caso, devi sistemarli per come hai impostato tu il Db
L'ho testato e funziona, devi solo cambiare questa riga, ho dimenticato di cambiare la variabile...ma comunque mi funziona
[php]$sql_comuni.=" WHERE id_provincia='$id_provincia'";[/php]EDIT:
si, tira fuori cmq i dati, cambiala così:[php]<?
$id_regione="";
$id_provincia="";
$id_comune="";$id_regione=$_POST['regione'];
$id_provincia=$_POST['provincia'];
$id_comune=$_POST['comune'];
include "config.inc.php";
?><form action="index.php" name="search" method="POST">
<select onchange="document.search.submit()" name="regione">
<option value="">Scegli regione...</option>
<?
$sql_regione="SELECT * FROM regione ORDER BY descrizione";
$query_regione=@mysql_query($sql_regione) or die (mysql_error());
while ($array=mysql_fetch_array($query_regione))
{
?>
<option value="<? echo $array['id']; ?>"<? if ($id_regione==$array['id']) {echo " selected";} ?>><? echo $array['descrizione']; ?></option>
<?
}
?>
</select><select onchange="document.search.submit()" name="provincia"> <option value="">Scegli provincia...</option> <? $sql_provincia="SELECT * FROM provincia WHERE id_regione='$id_regione' ORDER BY descrizione"; $query_provincia=@mysql_query($sql_provincia) or die (mysql_error()); while ($array=mysql_fetch_array($query_provincia)) { ?> <option value="<? echo $array['id']; ?>"<? if ($id_provincia==$array['id']) {echo " selected";} ?>><? echo $array['descrizione']; ?></option> <? } ?> </select> <select onchange="document.search.submit()" name="comune"> <option value="">Scegli il comune...</option> <? $sql_comuni="SELECT * FROM comuni WHERE id_provincia='$id_provincia' ORDER BY descrizione"; $query_comunia=@mysql_query($sql_comuni) or die (mysql_error()); while ($array=mysql_fetch_array($query_comunia)) { ?> <option value="<? echo $array['id']; ?>"<? if ($id_comune==$array['id']) {echo " selected";} ?>><? echo $array['descrizione']; ?></option> <? } ?> </select>
</form>[/php]
-
si ho già adattato alle mie esigenze....ma non funziona lo stesso....
posto?
-
Ho editato prova in quel modo
se non funziona nemmeno così posta la pagina e la struttura delle tabelle
-
ecco la pagina compro.php
[PHP]<?php
$id_regione="";
$id_provincia="";
$id_comune="";$id_regione=$_POST['regione'];
$id_provincia=$_POST['provincia'];
$id_comune=$_POST['comune'];
?><form action="compro.php" name="search" method="POST">
<select onchange="document.search.submit()" name="regione">
<option value="">Scegli regione...</option>
<?php
$sql_regione="SELECT nome,codice FROM regioni ORDER BY nome";
$query_regione=@mysql_query($sql_regione) or die (mysql_error());
while ($rigaR=mysql_fetch_array($query_regione)){
$regione=$rigaR['nome'];
$idRegione=$rigaR['codice'];
echo "<option value='$idRegione'";
if ($id_regione==$idRegione)
echo " selected";
echo $regione ."</option>";
}
?>
</select></td>
</tr>
<tr>
<td>Provincia: </td>
<td>
<select onchange="document.search.submit()" name="provincia">
<option value="">Scegli provincia...</option>
<?php
if(isset($id_regione)){
$sql_provincia="SELECT * FROM province WHERE codice_regione='$id_regione' ORDER BY nome";
$query_provincia=@mysql_query($sql_provincia) or die (mysql_error());
while ($rigaP=mysql_fetch_array($query_provincia)){
$provincia=$rigaP['nome'];
$idProvincia=$rigaP['codice'];
echo "<option value='$idProvincia'";
if ($id_provincia==$idProvincia) {echo " selected";}
echo $provincia."</option>";
}}
?>
</select></td>
</tr>
<tr>
<td>Comune: </td>
<td>
<select onchange="document.search.submit()" name="comune">
<option value="">Scegli il comune...</option>
<?php
if(isset($id_provincia)){
$sql_comuni="SELECT * FROM comuni WHERE codice_provincia='$id_provincia' ORDER BY nome";
$query_comuni=@mysql_query($sql_comuni) or die (mysql_error());
while ($rigaC=mysql_fetch_array($query_comuni)){
$comune=$rigaC['nome'];
$idComune=$rigaC['codice'];
echo "<option value='$idComune'";
if ($id_comune==$idComune) {echo " selected";}
echo $comune."</option>";
}}
?>
</select></td>
</tr>
</form>[/PHP]Tabelle:
COMUNI
id
codice_provincia
codice
nomePROVINCE
id
codice_regione
codice
nomeREGIONI
id
codice
nome
-
ti eri dimenticato di chiudere i tag delle <option**>
**[PHP]<?php
$id_regione="";
$id_provincia="";
$id_comune="";$id_regione=$_POST['regione'];
$id_provincia=$_POST['provincia'];
$id_comune=$_POST['comune'];
?><form action="index.php" name="search" method="POST">
<select onchange="document.search.submit()" name="regione">
<option value="">Scegli regione...</option>
<?php
$sql_regione="SELECT nome,codice FROM regioni ORDER BY nome";
$query_regione=@mysql_query($sql_regione) or die (mysql_error());
while ($rigaR=mysql_fetch_array($query_regione)){
$regione=$rigaR['nome'];
$idRegione=$rigaR['codice'];
echo "<option value='$idRegione'";
if ($id_regione==$idRegione)
echo " selected";
echo ">".$regione ."</option>";
}
?>
</select></td>
</tr>
<tr>
<td>Provincia: </td>
<td>
<select onchange="document.search.submit()" name="provincia">
<option value="">Scegli provincia...</option>
<?php
if(isset($id_regione)){
$sql_provincia="SELECT * FROM province WHERE codice_regione='$id_regione' ORDER BY nome";
$query_provincia=@mysql_query($sql_provincia) or die (mysql_error());
while ($rigaP=mysql_fetch_array($query_provincia)){
$provincia=$rigaP['nome'];
$idProvincia=$rigaP['codice'];
echo "<option value='$idProvincia'";
if ($id_provincia==$idProvincia) {echo " selected";}
echo ">".$provincia."</option>";
}}
?>
</select></td>
</tr>
<tr>
<td>Comune: </td>
<td>
<select onchange="document.search.submit()" name="comune">
<option value="">Scegli il comune...</option>
<?php
if(isset($id_provincia)){
$sql_comuni="SELECT * FROM comuni WHERE codice_provincia='$id_provincia' ORDER BY nome";
$query_comuni=@mysql_query($sql_comuni) or die (mysql_error());
while ($rigaC=mysql_fetch_array($query_comuni)){
$comune=$rigaC['nome'];
$idComune=$rigaC['codice'];
echo "<option value='$idComune'";
if ($id_comune==$idComune) {echo " selected";}
echo ">".$comune."</option>";
}}
?>
</select></td>
</tr>
</form>[/PHP]
-
grazie!!!
un genio!!
-
ciao
allora
in questo script ci sono tre selectex
lombardia milano rho O
puglia foggia viestenel mio script eseguo la ricerca in rappresentanti e il risultato sarebbe ex
1 Giorgio O
2 GianniMA SE IO VOLESSI OLTRE ALLA RICERCA CE NEL RISULTATO MI COMPARISSE .... ex
lombardia milano rho 1 Giorgio O
puglia foggia vieste 2 Gianni
cosa devo fare...............
<?php
require('config.php');
?>
<?php
$id_regioni="";
$id_provincie="";
$id_comuni="";
$id_regioni=$_POST['regione'];
$id_provincie=$_POST['provincia'];
$id_comuni=$_POST['comune'];
?>
<form action="<?php $_SERVER["PHP_SELF"]?>" name="search" method="POST">
<select onchange="document.search.submit()" name="regione">
<option value="">Scegli regione...</option>
<?php
$sql_regione="SELECT * FROM regioni ORDER BY nome";
$query_regione=@mysql_query($sql_regione) or die (mysql_error());
while ($rigaR=mysql_fetch_array($query_regione)){
$regione=$rigaR['nome'];
$idRegione=$rigaR['id_regioni'];
echo "<option value='$idRegione'";
if ($id_regioni==$idRegione)
echo " selected";
echo ">".$regione ."</option>";
}
?>
</select></td>
</tr>
<tr>
<td>Provincia: </td>
<td>
<select onchange="document.search.submit()" name="provincia">
<option value="">Scegli provincia...</option>
<?php
if(isset($id_regioni)){
$sql_provincia="SELECT * FROM provincie WHERE id_regioni='$id_regioni' ORDER BY nome";
$query_provincia=@mysql_query($sql_provincia) or die (mysql_error());
while ($rigaP=mysql_fetch_array($query_provincia)){
$provincia=$rigaP['nome'];
$idProvincia=$rigaP['id_provincie'];
echo "<option value='$idProvincia'";
if ($id_provincie==$idProvincia) {echo " selected";}
echo ">".$provincia."</option>";
}}
?>
</select></td>
</tr>
<tr>
<td>Comune: </td>
<td>
<select onchange="document.search.submit()" name="comune">
<option value="">Scegli il comune...</option>
<?php
if(isset($id_provincie)){
$sql_comuni="SELECT * FROM comuni WHERE id_provincie='$id_provincie' ORDER BY nome";
$query_comuni=@mysql_query($sql_comuni) or die (mysql_error());
while ($rigaC=mysql_fetch_array($query_comuni)){
$comune=$rigaC['nome'];
$idComune=$rigaC['id_comuni'];
echo "<option value='$idComune'";
if ($id_comuni==$idComune) {echo " selected";}
echo ">".$comune."</option>";
}}
?>
</select></td>
</tr>
<label>
<?php
$sql_rappresentanti = "SELECT * FROM rappresentanti WHERE id_comuni='$id_comuni' ORDER BY nome";
$query_rappresentanti=@mysql_query($sql_rappresentanti) or die (mysql_error());
while ($rapp=mysql_fetch_array($query_rappresentanti))
{
$nome=$rapp['nome'];
$id=$rapp['id_rappresentanti'];
echo "</br>$id $nome</br>";
}
//libero memoria
mysql_free_result($result);
//chiudo la connessione
mysql_close();
?>
</form>thanks
-
Se strutturi la tabella rappresentanti così
id | nome | id_comuni
immagino dovresti scrivere
[PHP] $sql_rappresentanti = "SELECT * FROM rappresentanti WHERE id_comuni='$id_comuni' ORDER BY nome";
$query_rappresentanti=@mysql_query($sql_rappresentanti) or die (mysql_error());
while ($rapp=mysql_fetch_array($query_rappresentanti))
{
$nome=$rapp['nome'];
$id=$rapp['id'];
echo "</br>$id $nome</br>";
}[/PHP]