Mangiare Senza Glutine disponibile su App Store

Per altre informazioni scrivi a fabriziocaldarelli@negusweb.it

Database delle Regioni, Province e Comuni Italiani da fonte Istat

Da Programmazione Software.

Descrizione

Molto spesso ci si ritrova a fare i conti con applicazioni che necessitano la lista delle regioni , delle province e/o dei comuni italiani.

Stamattina rovistando nella rete ho trovato diverse applicazioni e siti che li riportavano, ma nessuna fonte ufficiale, fino a quando sono arrivato ad una pagina del sito dell'Istat (che posso ritenere fonte ufficiale per questo genere di informazioni) con un aggiornamento al primo gennaio 2008.

La pagina è a questo indirizzo: Codici dei comuni, delle province e delle regioni italiane

La pagina contiene il link a fogli excel con regioni, province e comuni italiani, facilmente esportabili in un qualsiasi altro formato elaborabile.

Infatti trovata questa preziosa fonte di informazioni, l'ultimo passo era trasportarla all'interno di un database, mysql nel mio caso.

Ma in generale, producendo codice SQL, le informazioni possono essere importate in qualsiasi altro database.

Quindi con un pò di pazienza ho scritto un codice PHP che mi consentisse l'importazione dei dati dei fogli excel che avevo opportunamente convertito (tramite Excel stesso) in formato CSV (con separtore il ";").

Il codice PHP è il seguente:

genera_sql.php

class CRegione  
{
     var $id;  
     var $ripartizioneGeografica;  
     var $codice;  
     var $nome;  
 
     function CRegione($id, $ripartizioneGeografica, $codice, $nome)  
     {  
          $this->id = trim($id);  
          $this->ripartizioneGeografica = trim($ripartizioneGeografica);  
          $this->codice = trim($codice);  
          $this->nome = trim($nome);  
     }  
 
     function CreaTabellaSQL()  
     {  
          return "CREATE TABLE regioni(id int not null auto_increment primary key, ripartizione_geografica tinytext, codice int, nome tinytext);\n";  
     }  
 
     function GeneraSQL()  
     {            
          $arrValori = array(  
                         '"'.$this->ripartizioneGeografica.'"',  
                         '"'.$this->codice.'"',  
                         '"'.$this->nome.'"'  
          );  
          $strValori = implode(',', $arrValori);  
          $sql="INSERT INTO regioni(ripartizione_geografica, codice, nome) VALUES (".$strValori.");\n";  
          return $sql;   
     }            
}  
 
class CProvincia  
{  
     var $id;  
     var $codiceRegione;  
     var $codice;  
     var $nome;  
     var $sigla;  
 
     function CProvincia($id, $codiceRegione, $codice, $nome, $sigla)  
     {  
          $this->id = trim($id);  
          $this->codiceRegione = trim($codiceRegione);  
          $this->codice = trim($codice);  
          $this->nome = trim($nome);  
          $this->sigla = trim($sigla);  
     }  
     function CreaTabellaSQL()  
     {  
          return "CREATE TABLE province(id int not null auto_increment primary key, codice_regione int, codice int, nome tinytext, sigla tinytext);\n";  
     }  
 
     function GeneraSQL()  
     {            
          $arrValori = array(  
                         '"'.$this->codiceRegione.'"',  
                         '"'.$this->codice.'"',  
                         '"'.$this->nome.'"',  
                         '"'.$this->sigla.'"'  
          );  
          $strValori = implode(',', $arrValori);  
          $sql="INSERT INTO province(codice_regione, codice, nome, sigla) VALUES (".$strValori.");\n";  
          return $sql;   
     }            
 
}  
 
class CComune  
{  
     var $id;  
     var $codiceProvincia;  
     var $codice;  
     var $nome;  
 
     function CComune($id, $codiceProvincia, $codice, $nome)  
     {  
          $this->id = trim($id);  
          $this->codiceProvincia = trim($codiceProvincia);  
          $this->codice = trim($codice);  
          $this->nome = trim($nome);  
     }  
     function CreaTabellaSQL()  
     {  
          return "CREATE TABLE comuni(id int not null auto_increment primary key, codice_provincia int, codice int, nome tinytext);\n";  
     }  
 
     function GeneraSQL()  
     {            
          $arrValori = array(  
                         '"'.$this->codiceProvincia.'"',  
                         '"'.$this->codice.'"',  
                         '"'.$this->nome.'"'  
          );  
          $strValori = implode(',', $arrValori);  
          $sql="INSERT INTO comuni(codice_provincia, codice, nome) VALUES (".$strValori.");\n";  
          return $sql;   
     }            
}  
 
// Inizializza gli array  
$arrRegioni = array();  
$arrProvince = array();  
$arrComuni = array();  
 
// LEGGE IL FILE DELLE REGIONI E PROVINCE  
$fh = fopen('regioni_province.csv', 'r');  
fgets($fh, 4096); // Salta la prima riga  
while (!feof($fh)) {  
    $buffer = fgets($fh, 4096);  
    $arrTemp = split(';',$buffer);  
 
    list($ripartizioneGeografica, $codiceRegione, $nomeRegione, $codiceProvincia, $nomeProvincia, $siglaProvincia) = $arrTemp;  
 
     // Aggiunge la regione in archivio  
     $regione = new CRegione($codiceRegione, $ripartizioneGeografica, $codiceRegione, $nomeRegione);  
     if ($nomeRegione != '') $arrRegioni[$codiceRegione] = $regione;  
     $provincia = new CProvincia($codiceProvincia, $codiceRegione, $codiceProvincia, $nomeProvincia, $siglaProvincia);  
     if ($nomeProvincia != '') $arrProvince[$codiceProvincia] = $provincia;   
}  
fclose($fh);  
 
// LEGGE IL FILE DEI COMUNI  
$fh = fopen('comuni.csv', 'r');  
fgets($fh, 4096); // Salta la prima riga  
while (!feof($fh)) {  
    $buffer = fgets($fh, 4096);  
    $arrTemp = split(';',$buffer);  
 
    list($codiceProvincia, $codiceComune, $nomeComune) = $arrTemp;  
 
     // Aggiunge la regione in archivio  
     $comune = new CComune($codiceComune, $codiceProvincia, $codiceComune, $nomeComune);  
     if ($nomeComune != '') $arrComuni[$codiceComune] = $comune;  
}  
fclose($fh);  
 
$sql = CRegione::CreaTabellaSQL();  
foreach($arrRegioni as $temp)  
{  
     $sql.=$temp->GeneraSQL();   
}  
 
$sql .= CProvincia::CreaTabellaSQL();  
foreach($arrProvince as $temp)  
{  
     $sql.=$temp->GeneraSQL();   
}  
 
$sql .= CComune::CreaTabellaSQL();  
foreach($arrComuni as $temp)  
{  
     $sql.=$temp->GeneraSQL();   
}  
 
// INVIA IL FILE SQL DELLE REGIONI  
$nomeFile = 'regioni_province_comuni.gzip';  
$content = gzencode($sql);  
header("Content-type: Application/octet-stream");  
header("Content-Disposition: attachment; filename=$nomeFile");  
header("Content-Description: Download PHP");  
header("Content-Length: ".strlen($content));  
echo $content;

Allegati