false, PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION)); $sql = "use $dbname"; $dbi->exec($sql); } catch(PDOException $e) { die( $sql . "
" . $e->getMessage()); } ############### function aggiorna($sql,$dbi,$sql2,$num){ $ret=0; try{ $res = $dbi->prepare("$sql"); $res->execute(); $ret= 1; } catch(PDOException $e) { $ret=0; echo "
".$num.") Fallito: $sql"; return $ret; } if("$sql2"!=""){ try{ $res = $dbi->prepare("$sql2"); $res->execute(); $ret=2; } catch(PDOException $e) { $ret=0; echo "
".$num.") Fallito: $sql2"; return $ret; } } echo "
".$num.") Aggiornato
"; return $ret; } function aggiorna_index($tab,$ind,$dbi,$sql2,$num){ $ret=0; $sqltest="SHOW INDEX FROM `$tab` WHERE KEY_NAME = '$ind'"; $res = $dbi->prepare("$sqltest"); $res->execute(); if($res->rowCount()) { $sql="ALTER TABLE `$tab` DROP INDEX `$ind`"; try{ $res = $dbi->prepare("$sql"); $res->execute(); $ret= 1; } catch(PDOException $e) { $ret=0; echo "
".$num.") Fallito: $sql -- $e->getmessage()"; return $ret; } } if("$sql2"!=""){ try{ $res = $dbi->prepare("$sql2"); $res->execute(); $ret=2; } catch(PDOException $e) { $ret=0; echo "
".$num.") Fallito: $sql2"; return $ret; } } echo "
".$num.") Index aggiornato
"; return $ret; } function controllo($tabella,$campo,$num) { global $dbi, $dbname; $sql="SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = '$dbname' AND TABLE_NAME = '$tabella'"; $res = $dbi->prepare("$sql"); $res->execute(); if($res->rowCount() and $campo=='') return 1; while(list($nome)=$res->fetch(PDO::FETCH_NUM)) {if($nome==$campo) { echo "
".$num.") Aggiornamento già effettuato
"; return 1;}} return 0; } $num=0; if(controllo($prefix.'_authors','admincomune',++$num)) { $sql="update `".$prefix."_authors` set admincomune='1' where aid='admin'"; $ret=aggiorna($sql,$dbi,'',$num); $sql="update `".$prefix."_authors` set admincomune='0' where aid!='admin'"; $ret=aggiorna($sql,$dbi,'',$num); echo "Aggiornata la tabella dei permessi
"; } if(!controllo($prefix.'_config','versione',++$num)) { $sql="alter table `".$prefix."_config` change column `Versione` `versione` int(3)"; $ret=aggiorna($sql,$dbi,'',$num); } if(!controllo($prefix.'_config','versione',++$num)) { $sql="alter table `".$prefix."_config` change column `Versione` `versione` int(3)"; $ret=aggiorna($sql,$dbi,'',$num); } if(!controllo($prefix.'_config','secret',++$num)) { $sql="alter table `".$prefix."_config` DROP `secret`"; $ret=aggiorna($sql,$dbi,'',$num); } if(!controllo($prefix.'__ele_voti_parziale','data',++$num)) { $sql="ALTER TABLE `".$prefix."_ele_voti_parziale` CHANGE `data` `data` DATE NOT NULL DEFAULT '1900-01-01'"; $ret=aggiorna($sql,$dbi,'',$num); } if(!controllo($prefix.'__ele_rilaff','data',++$num)) { $sql="ALTER TABLE `".$prefix."_ele_rilaff` CHANGE `data` `data` DATE NOT NULL DEFAULT '1900-01-01'"; $ret=aggiorna($sql,$dbi,'',$num); } if(!controllo($prefix.'_ele_gruppo','num_circ',++$num)) { $sql="ALTER TABLE `".$prefix."_ele_gruppo` ADD `num_circ` INT(2) UNSIGNED NOT NULL AFTER `id_circ`"; $ret=aggiorna($sql,$dbi,'',$num); # if(!$ret) echo "
".$num.") Fallito: $sql"; else echo "
".$num.") Aggiornato
"; } if(!controllo($prefix.'_ele_voti_gruppo','num_gruppo',++$num)) { $sql="ALTER TABLE `".$prefix."_ele_voti_gruppo` ADD `num_gruppo` INT(2) UNSIGNED NOT NULL AFTER `id_sez`"; $ret=aggiorna($sql,$dbi,'',$num); } if(!controllo($prefix.'_ele_lista','num_gruppo',++$num)) { $sql="ALTER TABLE `".$prefix."_ele_lista` ADD `num_gruppo` INT(2) UNSIGNED NOT NULL AFTER `id_gruppo`"; $ret=aggiorna($sql,$dbi,'',$num); } if(!controllo($prefix.'_ele_lista','num_circ',++$num)) { $sql="ALTER TABLE `".$prefix."_ele_lista` ADD `num_circ` INT(2) UNSIGNED NOT NULL AFTER `id_circ`"; $ret=aggiorna($sql,$dbi,'',$num); } if(!controllo($prefix.'_ele_operatori','id_circ',++$num)) { $sql="ALTER TABLE `".$prefix."_ele_operatori` ADD `id_circ` INT(11) NOT NULL DEFAULT 0 AFTER `aid`"; $ret=aggiorna($sql,$dbi,'',$num); } if(!controllo($prefix.'_ele_operatori','id_sez',++$num)) { $sql="ALTER TABLE `".$prefix."_ele_operatori` ADD `id_sez` INT(11) NOT NULL DEFAULT 0 AFTER `id_circ`"; $ret=aggiorna($sql,$dbi,'',$num); } if(!controllo($prefix.'_ele_voti_lista','num_lista',++$num)) { $sql="ALTER TABLE `".$prefix."_ele_voti_lista` ADD `num_lista` INT(2) UNSIGNED NOT NULL AFTER `id_sez`"; $ret=aggiorna($sql,$dbi,'',$num); } if(!controllo($prefix.'_ele_voti_ref','num_gruppo',++$num)) { $sql="ALTER TABLE `".$prefix."_ele_voti_ref` ADD `num_gruppo` INT(2) UNSIGNED NOT NULL AFTER `id_sez`"; $ret=aggiorna($sql,$dbi,'',$num); } if(!controllo($prefix.'_ele_voti_candidati','num_cand',++$num)) { $sql="ALTER TABLE `".$prefix."_ele_voti_candidati` ADD `num_cand` INT(2) UNSIGNED NOT NULL AFTER `id_sez`"; $ret=aggiorna($sql,$dbi,'',$num); } if(!controllo($prefix.'_ele_candidati','num_lista',++$num)) { $sql="ALTER TABLE `".$prefix."_ele_candidati` ADD `num_lista` INT(2) UNSIGNED NOT NULL AFTER `id_lista`"; $ret=aggiorna($sql,$dbi,'',$num); } if(!controllo($prefix.'_ele_sezioni','colore',++$num)) { $sql="ALTER TABLE `".$prefix."_ele_sezioni` ADD `colore` VARCHAR(50) NULL AFTER `solo_lista`"; $ret=aggiorna($sql,$dbi,$sql2,$num); } echo "
Aggiornamento per nuovo sistema dei controlli di congruità"; if(!controllo($prefix.'_ele_controlli','id_cons',++$num)) { $sql="CREATE TABLE if not exists`".$prefix."_ele_controlli` ( `id_cons` INT(11) NOT NULL , `id_sez` INT(11) NOT NULL , `tipo` VARCHAR(10) NOT NULL , `id` INT(11) NOT NULL , INDEX `sezione` (`id_sez`)) ENGINE = MyISAM"; echo "
".$num.") Creazione tabella dei controlli: "; $ret=aggiorna($sql,$dbi,'',$num); } echo "
Eliminazione della vecchia tabella dei controlli: "; if(controllo($prefix.'_ele_controllisez','',++$num)) { $sql="DROP TABLE if exists `".$prefix."_ele_controllisez`"; $ret=aggiorna($sql,$dbi,'',$num); } else echo "
$num) Tabella non presente
"; $sql="update `".$prefix."_ele_voti_gruppo` as t1 left join `".$prefix."_ele_gruppo` as t2 on t1.id_gruppo=t2.id_gruppo set t1.num_gruppo=t2.num_gruppo;"; $ret=aggiorna($sql,$dbi,'',++$num); $sql="update `".$prefix."_ele_voti_lista` as t1 left join `".$prefix."_ele_lista` as t2 on t1.id_lista=t2.id_lista set t1.num_lista=t2.num_lista;"; $ret=aggiorna($sql,$dbi,'',++$num); ############################################## $sql="ALTER TABLE `".$prefix."_ele_gruppo` CHANGE `num_circ` `num_circ` INT(2) UNSIGNED NOT NULL DEFAULT '1';"; $ret=aggiorna($sql,$dbi,'',++$num); $sql="ALTER TABLE `soraldo_authors` CHANGE `adminsuper` `adminsuper` TINYINT(2) NOT NULL DEFAULT '0';"; $ret=aggiorna($sql,$dbi,'',++$num); $sql="ALTER TABLE `".$prefix."_ele_lista` CHANGE `num_gruppo` `num_gruppo` INT(2) UNSIGNED NOT NULL DEFAULT '0';"; $ret=aggiorna($sql,$dbi,'',++$num); $sql="ALTER TABLE `".$prefix."_ele_lista` CHANGE `num_circ` `num_circ` INT(2) UNSIGNED NOT NULL DEFAULT '1';"; $ret=aggiorna($sql,$dbi,'',++$num); $sql="DROP TABLE `".$prefix."_ele_fasce`"; $ret=aggiorna($sql,$dbi,'',++$num); $sql="CREATE TABLE `".$prefix."_ele_fasce` ( `id_fascia` int(2) NOT NULL, `abitanti` int(11) NOT NULL, `seggi` int(4) NOT NULL, `id_conf` int(11) DEFAULT 1 ) ENGINE=MyISAM DEFAULT CHARSET=latin1;"; $sql2="INSERT INTO `".$prefix."_ele_fasce` (`id_fascia`, `abitanti`, `seggi`, `id_conf`) VALUES (1, 3000, 12, 1), (2, 10000, 16, 1), (3, 15000, 20, 1), (4, 30000, 20, 1), (5, 100000, 30, 1), (6, 250000, 40, 1), (7, 500000, 46, 1), (8, 1000000, 50, 1), (9, 100000000, 60, 1), (1, 3000, 12, 2), (2, 10000, 16, 2), (3, 15000, 20, 2), (4, 30000, 20, 2), (5, 100000, 30, 2), (6, 250000, 40, 2), (7, 500000, 46, 2), (8, 1000000, 50, 2), (9, 100000000, 60, 2), (1, 3000, 9, 3), (2, 5000, 9, 3), (4, 15000, 16, 3), (3, 10000, 12, 3), (5, 30000, 16, 3), (6, 100000, 24, 3), (7, 250000, 32, 3), (8, 500000, 36, 3), (9, 1000000, 40, 3), (10, 100000000, 48, 3), (1, 3000, 6, 4), (2, 5000, 7, 4), (3, 10000, 12, 4), (4, 15000, 16, 4), (5, 30000, 16, 4), (6, 100000, 24, 4), (7, 250000, 32, 4), (8, 500000, 36, 4), (9, 1000000, 40, 4), (10, 100000000, 48, 4), (1, 3000, 9, 5), (2, 5000, 9, 5), (3, 10000, 12, 5), (4, 15000, 16, 5), (5, 30000, 16, 5), (6, 100000, 24, 5), (7, 250000, 32, 5), (8, 500000, 36, 5), (9, 1000000, 40, 5), (10, 100000000, 48, 5), (1, 3000, 6, 6), (2, 5000, 7, 6), (3, 10000, 10, 6), (4, 15000, 16, 6), (5, 30000, 16, 6), (6, 100000, 24, 6), (7, 250000, 32, 6), (8, 500000, 36, 6), (9, 1000000, 40, 6), (10, 100000000, 48, 6), (1, 3000, 10, 7), (2, 10000, 12, 7), (3, 15000, 16, 7), (4, 30000, 16, 7), (5, 100000, 24, 7), (6, 250000, 32, 7), (7, 500000, 36, 7), (8, 1000000, 40, 7), (9, 100000000, 48, 7);"; $ret=aggiorna($sql,$dbi,$sql2,++$num); #if(!$ret) echo "
".$num++.") Fallito: $sql"; else echo "
".$num++.") Aggiornato
"; $sql="ALTER TABLE `".$prefix."_ele_fasce` ADD KEY `id_fascia` (`id_fascia`);"; $ret=aggiorna($sql,$dbi,'',++$num); #if(!$ret) echo "
".$num++.") Fallito: $sql"; else echo "
".$num++.") Aggiornato
"; #if(!$ret) # echo "
".$num++.") Fallito: $sql"; #elseif ($ret==1) # echo "
".$num++.") Index eliminato"; #else # echo "
".$num++.") Index aggiunto"; #$sql="ALTER TABLE `".$prefix."_ele_voti_lista` DROP INDEX if exists `id_cons`"; $tab=$prefix."_ele_voti_ref"; $ind="id_cons"; # $sql="ALTER TABLE `".$prefix."_ele_voti_ref` DROP INDEX `id_cons`; "; $sql2="ALTER TABLE `".$prefix."_ele_voti_ref` ADD INDEX `id_cons` (`id_cons`, `id_gruppo`) USING BTREE"; $ret=aggiorna_index($tab, $ind,$dbi,$sql2,++$num); $tab=$prefix."_ele_voti_lista"; $ind="id_cons"; $sql2="ALTER TABLE `".$prefix."_ele_voti_lista` ADD INDEX `id_cons` (`id_cons`, `id_sez`, `id_lista`) USING BTREE"; $ret=aggiorna_index($tab,$ind,$dbi,$sql2,++$num); $tab=$prefix."_ele_voti_gruppo"; $ind="id_cons"; #$sql="ALTER TABLE `".$prefix."_ele_voti_gruppo` DROP INDEX if exists `id_cons`"; $sql2="ALTER TABLE `".$prefix."_ele_voti_gruppo` ADD INDEX `id_cons` (`id_cons`, `id_sez`, `id_gruppo`) USING BTREE"; $ret=aggiorna_index($tab,$ind,$dbi,$sql2,++$num); $tab=$prefix."_ele_voti_candidati"; $ind="id_cons"; #$sql="ALTER TABLE `".$prefix."_ele_voti_candidati` DROP INDEX if exists `id_cons`"; $sql2="ALTER TABLE `".$prefix."_ele_voti_candidati` ADD INDEX `id_cons` (`id_cons`, `id_sez`, `id_cand`) USING BTREE"; $ret=aggiorna_index($tab,$ind,$dbi,$sql2,++$num); $tab=$prefix."_ele_lista"; $ind="id_cons"; #$sql="ALTER TABLE `".$prefix."_ele_lista` DROP INDEX if exists `id_cons`"; $sql2="ALTER TABLE `".$prefix."_ele_lista` ADD INDEX `id_cons` (`id_cons`, `id_gruppo`) USING BTREE"; $ret=aggiorna_index($tab,$ind,$dbi,$sql2,++$num); $tab=$prefix."_ele_lista"; $ind="PRIMARY"; #$sql="ALTER TABLE `".$prefix."_ele_lista` DROP INDEX if exists `PRIMARY`"; $sql2="ALTER TABLE `".$prefix."_ele_lista` ADD PRIMARY KEY (`id_lista`) USING BTREE"; $ret=aggiorna_index($tab,$ind,$dbi,$sql2,++$num); $tab=$prefix."_ele_gruppo"; $ind="id_cons"; #$sql="ALTER TABLE `".$prefix."_ele_gruppo` DROP INDEX if exists `id_cons`"; $sql2="ALTER TABLE `".$prefix."_ele_gruppo` ADD INDEX `id_cons` (`id_cons`, `id_circ`) USING BTREE"; $ret=aggiorna_index($tab,$ind,$dbi,$sql2,++$num); $tab=$prefix."_ele_gruppo"; $ind="PRIMARY"; #$sql="ALTER TABLE `".$prefix."_ele_gruppo` DROP INDEX if exists `PRIMARY`"; $sql2="ALTER TABLE `".$prefix."_ele_gruppo` ADD PRIMARY KEY (`id_gruppo`) USING BTREE"; $ret=aggiorna_index($tab,$ind,$dbi,$sql2,++$num); $tab=$prefix."_ele_candidati"; $ind="id_cons"; #$sql="ALTER TABLE `".$prefix."_ele_candidati` DROP INDEX if exists `id_cons`"; $sql2="ALTER TABLE `".$prefix."_ele_candidati` ADD INDEX `id_cons` (`id_cons`, `id_lista`) USING BTREE"; $ret=aggiorna_index($tab,$ind,$dbi,$sql2,++$num); $tab=$prefix."_ele_candidati"; $ind="PRIMARY"; #$sql="ALTER TABLE `".$prefix."_ele_candidati` DROP INDEX if exists `PRIMARY`"; $sql2="ALTER TABLE `".$prefix."_ele_candidati` ADD PRIMARY KEY (`id_cand`) USING BTREE"; $ret=aggiorna_index($tab,$ind,$dbi,$sql2,++$num); $tab=$prefix."_ele_consultazione"; $ind="descrizione"; #$sql="ALTER TABLE `".$prefix."_ele_consultazione` DROP INDEX if exists `descrizione`"; $sql2="ALTER TABLE `".$prefix."_ele_consultazione` ADD UNIQUE `descrizione` (`descrizione`(100))"; $ret=aggiorna_index($tab,$ind,$dbi,$sql2,++$num); echo "
Modifica Charset del database
"; if($newcs=='utf8') { $cset='utf8'; $ccollate='utf8_general_ci'; $preset='latin1'; }else{ $cset='latin1'; $ccollate='latin1_swedish_ci'; $preset='utf8'; } #$sql="ALTER DATABASE $dbname CHARACTER SET '$cset' COLLATE '$ccollate'"; #$res = $dbi->prepare("$sql"); #$res->execute(); $sql="SELECT table_name,column_name,column_default,column_type,is_nullable FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = '$dbname' and (character_set_name='$preset' or collation_name like '$preset%')"; $res = $dbi->prepare("$sql"); $res->execute(); $tab=''; while(list($nometab,$campo,$def,$tipo,$nul)=$res->fetch(PDO::FETCH_NUM)) { if($tab!=$nometab){ $sql="alter table $nometab DEFAULT CHARSET=$cset COLLATE $ccollate"; try{ $res2 = $dbi->prepare("$sql"); $res2->execute(); } catch(PDOException $e) { die( $sql . "
" . $e->getMessage()); } $tab=$nometab; echo "Tabella: $nometab
"; } if($def!='') $default="DEFAULT '$def'"; else $default=''; if($nul=='NO') $nullable='NOT NULL'; else $nullable='NULL'; $sql="ALTER TABLE $nometab CHANGE $campo $campo $tipo CHARACTER SET '$cset' COLLATE '$ccollate' $nullable $default;"; echo "-- $campo
"; try{ $res2 = $dbi->prepare("$sql"); $res2->execute(); } catch(PDOException $e) { $default="DEFAULT $def"; $sql="ALTER TABLE $nometab CHANGE $campo $campo $tipo CHARACTER SET '$cset' COLLATE '$ccollate' $nullable $default;"; try{ $res2 = $dbi->prepare("$sql"); $res2->execute(); } catch(PDOException $e) { die( $sql . "
" . $e->getMessage()); } } } $sql="SELECT table_name FROM INFORMATION_SCHEMA.tables WHERE TABLE_SCHEMA = '$dbname' and table_collation like '$preset%'"; $res = $dbi->prepare("$sql"); $res->execute(); $tab=''; while(list($nometab)=$res->fetch(PDO::FETCH_NUM)) { $sql="alter table $nometab DEFAULT CHARSET=$cset COLLATE $ccollate"; try{ echo "Tabella: $nometab
"; $res2 = $dbi->prepare("$sql"); $res2->execute(); } catch(PDOException $e) { die( $sql . "
" . $e->getMessage()); } } echo "

"; ?>