Regioni, province e comuni italiani
giovedì 5 marzo 2009Quella che sto per regalarvi è una cosa che tutti gli sviluppatori web italiani prima o poi si ritrovano a cercare: ho sempre fatto fatica a trovare liste complete, aggiornate o formattate come dicevo io, quindi me la sono costruita da solo.
Esatto: come avrete sicuramente capito dal titolo del post (bravi) si tratta del database completo degli 8100 comuni italiani, associati correttamente alle province (con sigla automobilistica definita a norma di legge) e alle regioni di appartenenza.
Il tutto aggiornato alla data del 01/01/2009 (fonte ISTAT)
Ovviamente qui non stiamo a far pascolare le galline (cit.) e ho deciso di condividerla con voi in uno slancio di generosità.
Si tratta di tre tabelle così strutturate:
Regioni:
| id | int(11) |
| regione | text |
Province:
| id | int(11) |
| id_regione | int(11) |
| provincia | text |
| sigla | varchar(2) |
Comuni:
| id | int(11) |
| id_regione | int(11) |
| id_provincia | int(11) |
| comune | text |
Come potete vedere, oltre a selezionare province e comuni partendo dalla regione è anche possibile partire da un comune e risalire a provincia e/o alla regione di appartenenza: i dati sono fin troppo ridondanti.
Già che ci sono vi regalo anche un esempio di modulo creato con PHP che utilizza i dati provenienti dal database e che cambia i valori possibili per una select in base al valore selezionato in quella precedente (la versione AJAX-powered ve la lascio come esercizio). Lo trovate qui.
Dimenticavo: ecco anche il database MySQL da scaricare.
In alternativa puoi abbonarti alla newsletter, riceverai un'email ogni volta che verrà pubblicato un nuovo post. Il tuo indirizzo email sarà gestito da Feedburner.












5 marzo 2009 alle 09:40
Rispetto! Grazie mille
5 marzo 2009 alle 10:18
Ottima cosa, non ne ho bisogno ora (ho scritto una cosa simile Ajax-based settimana scorsa, la pubblicherei ma è troppo custom) ma è uno di quegli snippet che servono sempre…grazie
5 marzo 2009 alle 10:27
è un ottima cosa averlo già pronto e solo da importare. anche xchè l’istat te li passa in csv (se non erro). Non era meglio usare come chiavi i codici istat? (anche se con gli auto increment hai risparmiato qualche byte ;D )
5 marzo 2009 alle 10:33
@ n3GRo:
Beh, chiamala comodità.
5 marzo 2009 alle 10:46
Sempre comodo da tenere a portata di mano anche se attualmente non mi occorre.
Ma io sapevo ‘Non stiamo qui a pettinar le bambole’…vedi che si imparano anche nuove citazioni e non solo script
5 marzo 2009 alle 10:49
Intanto GRAZIE!
Se riesco ad utilizzarlo, anche se mi servirebbe per un’idea interna, ti prometto di citarti (ne puoi essere certo).
Mi permetti una domanda?
Non è che sai dove poter reperire gli elenchi degli ABI e CAB?
Anche solo dove poter reperire informazioni.
5 marzo 2009 alle 11:28
Parli di poter risalire da comune a provincia/regione, ma il tuo script non lo fa… Effettivamente, considerando che sono più di 8000 comuni, la select dei comuni (all’inizio) sarebbe un po’ troppo lunga (8000 option…).
A parte il discorso tecnico (che non rappresenta un problema), dove hai trovato la fonte? Non dirmi che hai fatto il lavoro di indicizzazione a mano…
Dove è possibile scaricare un tracciato (ovviamente da adattare alle esigenze) con tutti i dati? Tra qualche tempo il tuo sarà (per forza) obsoleto, quindi vorrei sapere se esiste una fonte aggiornata e ufficiale…
5 marzo 2009 alle 11:31
NicK ha scritto:
Ah bella domanda… Credo siano a pagamento, male che vada puoi provare a mandare una mail all’ABI…
5 marzo 2009 alle 11:35
@ dag:
E poi la select dei comuni è bella “grossa”.
Il mio script non lo fa, ma la testolina l’avete anche voi…
Comunque i dati li ho presi in formato XLS e me li sono importati bellamente nel DB (ovviamente relazionando il tutto) dal sito dell’ISTAT.
http://www.istat.it/strumenti/definizioni/comuni/
5 marzo 2009 alle 11:36
Grazie
5 marzo 2009 alle 12:04
Pazzesco… grazie Napolux, di sicuro mi servirà parecchio visto il tipo di siti con cui mi sto barcamenando ultimamente
5 marzo 2009 alle 13:00
Potevi pensarci un paio di settimane fa?
Comunque grazie, torna sempre utile
5 marzo 2009 alle 14:10
@ pecciola:
Quella sulle galline è una frase pronunciata da un mio vecchio (e strambo) professore delle superiori entrata poi nel gergo della mia vecchia scuola.
5 marzo 2009 alle 20:17
Ottimo lavoro! Per integrare il tuo articolo, ti segnalo anche la mia risorsa: Array delle nazioni del mondo e delle province italiane.
Ciao!
7 marzo 2009 alle 10:10
[...] Database di regioni, province e comuni italiani [...]
8 marzo 2009 alle 12:42
Estremamente utile. Grazie mille !!
10 marzo 2009 alle 13:09
Ciao, sto sviluppando il sito per il mio liceo, e insieme al prof stiamo sviluppando una anagrafica degli studenti. Mi sarebbe molto utile il codice php che genera le form, è chiedere tanto?
Comunque grazie, io ho iniziato a sviluppare in php quest’anno, spero di imparare al più presto.
ciao
andrea
10 marzo 2009 alle 13:17
@andrea:
E’ mia abitudine lasciare sempre qualcosa di incompiuto in modo da evitare la classica “pappa pronta”.
Quello che chiedi è comunque codice davvero banale: si tratta di fare query sul database e poi stamparne i risultati. Ovviamente le query ricevono come parametro della clausola WHERE la regione o la provincia (a seconda di quel che stai cercando).
Guarda il manuale.
10 marzo 2009 alle 14:26
@ Napolux:
Grazie mille, ci provo!
10 marzo 2009 alle 15:26
@ Napolux:
ciao, ci sono riuscito, ho solo un piccolo problemino. In pratica quando seleziono la provincia, mi si popola correttamente la select dei comuni ma non mi rimane selezionata la provincia, mi torna al valore iniziale (Seleziona una provincia), puoi darmi una dritta?
Grazie comunque per la tua disponibilità!
10 marzo 2009 alle 15:30
@ andrea:
Devi tenere conto della provincia (e riselezionarla) quando ristampi la pagina!
10 marzo 2009 alle 16:16
@ Napolux:
grazie per tutti i consigli, alla fine ci sono riuscito!
10 marzo 2009 alle 16:28
@ andrea:
Bene! Non è più soddisfacente fare tutto da soli?
10 marzo 2009 alle 17:37
comunque l’esempio dato non è fatto in ajax, la pagina si ricarica…
10 marzo 2009 alle 23:11
@ luca:
Beh, è scritto grande così
ovvero: devi farla da solo
7 aprile 2009 alle 00:40
Napo Santo subito!
4 giugno 2009 alle 17:29
non riesco a realizzare un modulo php da collegare al database, qualcuno può aiutarmi? Grazie
4 giugno 2009 alle 20:43
@ pino:
Leggi qua.
5 giugno 2009 alle 18:37
Grazie ma non mi ha chiarito molto le idee, non programmo in php. Potresti avere la bontà di inviarmi il file o il codice?@ Napolux:
5 giugno 2009 alle 18:47
@ pino:
Chi non è programmatore PHP non dovrebbe programmare PHP
P.s.
Mandarti il codice per me è lavoro. Il lavoro si paga di solito. Non ti passerebbe mai per la testa di andare a chiedere un cappuccino gratis in un bar (anche se è una cifra irrisoria), allora perché dovrei lavorare gratis per te (anche se è un lavoro di 5 minuti)?
Ti ho dato le informazioni che cercavi. Sta a te elaborarle e cavarci fuori qualcosa. Oppure pagare qualcuno che faccia il lavoro che non sai fare.
5 giugno 2009 alle 19:07
Non ti scaldare, pensavo che avessi già il codice pronto e che visto che hai condiviso il database, fare lo stesso con il resto non fosse un problema. Un po di collaborazione no, eh?
5 giugno 2009 alle 19:17
In ogni caso che costo avrebbe il codice volendolo pagare?@ pino:
5 giugno 2009 alle 19:45
Pino, Napolux ha ragione. Non credo che si sia adirato
Un po di intraprendenza ti caverà d’impiccio, e se poi arrivi ad un punto in cui dici “qua non riesco ad andare avanti”, troverai un sacco di amici pronti ad aiutarti.
Ma la pappa pronta non l’avrai mai da nessun informatico (almeno uno serio eh
)
5 giugno 2009 alle 20:29
@ pino:
Nessuno si sta scaldando qui
Pagare? Vediamo… Dovresti darmi delle specifiche precise di cosa deve fare questo codice, detto questo ti farei un’offerta commerciale con un prezzo, al versamento del 35% della somma concordata comincerò a lavorarci e poi alla consegna emetterò fattura (ovviamente).
Detto questo non so quanto ti convenga tra IVA e tutto il resto.
La questione qui non è il pagare, ma come dice Attilio è il chiedere (o pretendere) la pappa pronta. E non è solo il tuo caso, credi a me.
Buona serata.
5 giugno 2009 alle 20:38
Sono pienamente daccordo sul valore delle proprie capacità e penso che ognuno abbia ragione di esserne geloso. Credo che non siano questi però i casi per cui vale la pena di fare i preziosi, anche perchè se uno costruisce un blog è anche per condividere con la community.
L’intraprendenza non mi manca, mi sono sempre fatto tutto da solo. Questo script è solo una minima parte di un progetto che prevede la selezione di alcuni elementi da collegare a diversi link, è per questo che non volevo perderci molto tempo per studiare il codice, tempo che sto dedicando ad altro. Non voglio essere polemico, però ci tengo a precisare che non sono lo scroccone di turno e se posso dare una mano a qualcuno lo faccio, specie se a me costa poco o niente……
Saluti a Napolux, che ammiro comunque per il lavoro svolto.
5 giugno 2009 alle 21:34
Bhè, allora diciamola cosi (almeno il mio punto di vista
); dal modo in cui hai posto la richiesta sembrava che tu pretendessi la pagina, ci siamo fraintesi
Detto questo, non è detto che Napolix possa comunque impiegare del tempo per realizzare tale pagina
5 giugno 2009 alle 22:38
condividere la *conoscenza* con la community è una cosa, scrivere del codice è un’altra
è la stessa differenza che passa tra l’insegnare a coltivare e coltivare nella realtà, o come in qualunque altro ambito in cui c’è un insegnante/esperto che trasmette la conoscenza, e lo studente/praticante che deve applicare nel concreto queste conoscenze
è come se chiedessi al mio professore di sistemi di venirmi a scrivere lui il codice al lavoro…
6 giugno 2009 alle 05:07
[...] Il commento dato in risposta a Pino (l’esempio del cappuccino mi pare calzante) riapre una discussione a me molto cara sin da quando ho aperto il blog: prova ne è qualche post scritto in passato. [...]
6 giugno 2009 alle 10:50
Oh caspita, mi ero perso la diatriba finale.
Volevo solo precisare una cosa: il “Pino” del primo commento non è lo stesso “pino” dei commenti dopo
8 giugno 2009 alle 22:54
Allora, ho realizzato la pagina php, con i tre elenchi delle regioni, province e comuni. Ho richiamato i dati dal database. L’unica cosa è che non conosco la funzione per rendere gli elenchi dipendenti l’uno dall’altro. Potete aiutarmi? Grazie
Allego il codice php:
<option value=”">
0) {
mysql_data_seek($Recordset1, 0);
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
}
?>
<option value=”">
0) {
mysql_data_seek($Recordset2, 0);
$row_Recordset2 = mysql_fetch_assoc($Recordset2);
}
?>
<option value=”">
0) {
mysql_data_seek($Recordset3, 0);
$row_Recordset3 = mysql_fetch_assoc($Recordset3);
}
?>
8 giugno 2009 alle 23:01
@ pino:
Devi rifare le query al change delle tue select. Se guardi il sorgente dell’esempio vedrai che è assegnata una funzione JS al cambio della select che fa il refresh della pagina con alcuni parametri passati (per mantenere lo stato corrente)
8 giugno 2009 alle 23:21
Se l’esempio a cui ti riferisci è quello si badpenguin, non trovo la funzione JS di cui parli. Parliamo dello stesso esempio?
9 giugno 2009 alle 06:57
@ pino:
Veramente parlavo dell’esempio presente alla fine del mio post… Chi è bad penguin?