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

  1. class CRegione  
  2. {
  3.      var $id;  
  4.      var $ripartizioneGeografica;  
  5.      var $codice;  
  6.      var $nome;  
  7.  
  8.      function CRegione($id, $ripartizioneGeografica, $codice, $nome)  
  9.      {  
  10.           $this->id = trim($id);  
  11.           $this->ripartizioneGeografica = trim($ripartizioneGeografica);  
  12.           $this->codice = trim($codice);  
  13.           $this->nome = trim($nome);  
  14.      }  
  15.  
  16.      function CreaTabellaSQL()  
  17.      {  
  18.           return "CREATE TABLE regioni(id int not null auto_increment primary key, ripartizione_geografica tinytext, codice int, nome tinytext);\n";  
  19.      }  
  20.  
  21.      function GeneraSQL()  
  22.      {            
  23.           $arrValori = array(  
  24.                          '"'.$this->ripartizioneGeografica.'"',  
  25.                          '"'.$this->codice.'"',  
  26.                          '"'.$this->nome.'"'  
  27.           );  
  28.           $strValori = implode(',', $arrValori);  
  29.           $sql="INSERT INTO regioni(ripartizione_geografica, codice, nome) VALUES (".$strValori.");\n";  
  30.           return $sql;   
  31.      }            
  32. }  
  33.  
  34. class CProvincia  
  35. {  
  36.      var $id;  
  37.      var $codiceRegione;  
  38.      var $codice;  
  39.      var $nome;  
  40.      var $sigla;  
  41.  
  42.      function CProvincia($id, $codiceRegione, $codice, $nome, $sigla)  
  43.      {  
  44.           $this->id = trim($id);  
  45.           $this->codiceRegione = trim($codiceRegione);  
  46.           $this->codice = trim($codice);  
  47.           $this->nome = trim($nome);  
  48.           $this->sigla = trim($sigla);  
  49.      }  
  50.      function CreaTabellaSQL()  
  51.      {  
  52.           return "CREATE TABLE province(id int not null auto_increment primary key, codice_regione int, codice int, nome tinytext, sigla tinytext);\n";  
  53.      }  
  54.  
  55.      function GeneraSQL()  
  56.      {            
  57.           $arrValori = array(  
  58.                          '"'.$this->codiceRegione.'"',  
  59.                          '"'.$this->codice.'"',  
  60.                          '"'.$this->nome.'"',  
  61.                          '"'.$this->sigla.'"'  
  62.           );  
  63.           $strValori = implode(',', $arrValori);  
  64.           $sql="INSERT INTO province(codice_regione, codice, nome, sigla) VALUES (".$strValori.");\n";  
  65.           return $sql;   
  66.      }            
  67.  
  68. }  
  69.  
  70. class CComune  
  71. {  
  72.      var $id;  
  73.      var $codiceProvincia;  
  74.      var $codice;  
  75.      var $nome;  
  76.  
  77.      function CComune($id, $codiceProvincia, $codice, $nome)  
  78.      {  
  79.           $this->id = trim($id);  
  80.           $this->codiceProvincia = trim($codiceProvincia);  
  81.           $this->codice = trim($codice);  
  82.           $this->nome = trim($nome);  
  83.      }  
  84.      function CreaTabellaSQL()  
  85.      {  
  86.           return "CREATE TABLE comuni(id int not null auto_increment primary key, codice_provincia int, codice int, nome tinytext);\n";  
  87.      }  
  88.  
  89.      function GeneraSQL()  
  90.      {            
  91.           $arrValori = array(  
  92.                          '"'.$this->codiceProvincia.'"',  
  93.                          '"'.$this->codice.'"',  
  94.                          '"'.$this->nome.'"'  
  95.           );  
  96.           $strValori = implode(',', $arrValori);  
  97.           $sql="INSERT INTO comuni(codice_provincia, codice, nome) VALUES (".$strValori.");\n";  
  98.           return $sql;   
  99.      }            
  100. }  
  101.  
  102. // Inizializza gli array  
  103. $arrRegioni = array();  
  104. $arrProvince = array();  
  105. $arrComuni = array();  
  106.  
  107. // LEGGE IL FILE DELLE REGIONI E PROVINCE  
  108. $fh = fopen('regioni_province.csv', 'r');  
  109. fgets($fh, 4096); // Salta la prima riga  
  110. while (!feof($fh)) {  
  111.     $buffer = fgets($fh, 4096);  
  112.     $arrTemp = split(';',$buffer);  
  113.  
  114.     list($ripartizioneGeografica, $codiceRegione, $nomeRegione, $codiceProvincia, $nomeProvincia, $siglaProvincia) = $arrTemp;  
  115.  
  116.      // Aggiunge la regione in archivio  
  117.      $regione = new CRegione($codiceRegione, $ripartizioneGeografica, $codiceRegione, $nomeRegione);  
  118.      if ($nomeRegione != '') $arrRegioni[$codiceRegione] = $regione;  
  119.      $provincia = new CProvincia($codiceProvincia, $codiceRegione, $codiceProvincia, $nomeProvincia, $siglaProvincia);  
  120.      if ($nomeProvincia != '') $arrProvince[$codiceProvincia] = $provincia;   
  121. }  
  122. fclose($fh);  
  123.  
  124. // LEGGE IL FILE DEI COMUNI  
  125. $fh = fopen('comuni.csv', 'r');  
  126. fgets($fh, 4096); // Salta la prima riga  
  127. while (!feof($fh)) {  
  128.     $buffer = fgets($fh, 4096);  
  129.     $arrTemp = split(';',$buffer);  
  130.  
  131.     list($codiceProvincia, $codiceComune, $nomeComune) = $arrTemp;  
  132.  
  133.      // Aggiunge la regione in archivio  
  134.      $comune = new CComune($codiceComune, $codiceProvincia, $codiceComune, $nomeComune);  
  135.      if ($nomeComune != '') $arrComuni[$codiceComune] = $comune;  
  136. }  
  137. fclose($fh);  
  138.  
  139. $sql = CRegione::CreaTabellaSQL();  
  140. foreach($arrRegioni as $temp)  
  141. {  
  142.      $sql.=$temp->GeneraSQL();   
  143. }  
  144.  
  145. $sql .= CProvincia::CreaTabellaSQL();  
  146. foreach($arrProvince as $temp)  
  147. {  
  148.      $sql.=$temp->GeneraSQL();   
  149. }  
  150.  
  151. $sql .= CComune::CreaTabellaSQL();  
  152. foreach($arrComuni as $temp)  
  153. {  
  154.      $sql.=$temp->GeneraSQL();   
  155. }  
  156.  
  157. // INVIA IL FILE SQL DELLE REGIONI  
  158. $nomeFile = 'regioni_province_comuni.gzip';  
  159. $content = gzencode($sql);  
  160. header("Content-type: Application/octet-stream");  
  161. header("Content-Disposition: attachment; filename=$nomeFile");  
  162. header("Content-Description: Download PHP");  
  163. header("Content-Length: ".strlen($content));  
  164. echo $content;

Allegati

Strumenti personali
hobby
approfondimenti