";
$x=0;
while (isset($arvin[$x][0])) {
echo "--------------vince key:$key - val:$val ";
$y=0;
while (isset($arvin[$x][$y])){
echo "-----chiave:$lista val:$y ";
$y++;
}
$x++;
}
foreach ($arper as $key=>$val) {
foreach($val as $x=>$y) echo "-----chiave:$x val:$y ";
echo "perde key:$key - val:$val ";
}
}
function conssup($fascia,$gruppo,$collegate,$collperd) {
global $id_cons, $prefix,$dbi;
global $groups,$lists,$eletti,$ultimo;
$groups=array();
$lists=array();
$eletti=array();
#$sorteggio=0;
#funzione di calcolo per comuni oltre 15.000 abitanti
#carica il numero di consiglieri da eleggere
switch ($fascia) {
case 1: $numcons=12; break;
case 2: $numcons=16; break;
case 3: $numcons=20; break;
case 4: $numcons=20; break;
case 5: $numcons=30; break;
case 6: $numcons=40; break;
case 7: $numcons=46; break;
case 8: $numcons=50; break;
case 9: $numcons=60; break;
}
/////////////////////test
$varper="SEGGI ASSEGNATI ALLA MINORANZA |
";
$varvin="SEGGI ASSEGNATI ALLA MAGGIORANZA |
";
$res_val = mysql_query("SELECT sum(validi) from ".$prefix."_ele_sezioni where id_cons='$id_cons'",$dbi);
list($validi) = mysql_fetch_row($res_val);
$res_per = mysql_query("SELECT t1.descrizione,t1.num_gruppo,sum(t3.voti) as voti from ".$prefix."_ele_gruppo as t1, ".$prefix."_ele_lista as t2, ".$prefix."_ele_voti_lista as t3 where t1.id_cons='$id_cons' and t1.id_gruppo=t2.id_gruppo and t2.id_lista=t3.id_lista group by t1.descrizione,t1.num_gruppo order by t1.num_gruppo",$dbi);
$groups=array();
$premio=0;
#carica l'array deui gruppi e della cifra di gruppo
while (list($descr,$num_gruppo,$voti)= mysql_fetch_row($res_per)){
$desgruppi[$num_gruppo]=$descr;
#controlla se un gruppo di liste, tra quelle perdenti, ha superato il 50%
if ($num_gruppo!=$gruppo and $voti>= $validi/2) $premio=2;
$groups[($num_gruppo)]=$voti;
#elimina gruppi che non hanno superato lo sbarramento
if ($voti< ($validi*3)/100) unset($groups[($num_gruppo)]);
}
#controlla se la percentuale del gruppo vincente e' tra il 40 e il 60%
#e se nessun altro gruppo ha superato il 50% assegna il premio di maggioranza
if ($groups[$gruppo]>number_format(($validi*4)/10) and $groups[$gruppo]$val){
echo " gruppo n. : $key : val : $val ";
echo "ultimo assegnato al gruppo: $ultimo ";
$res_lis = mysql_query("SELECT t2.id_lista,t2.descrizione,t2.num_lista,sum(t3.voti) as voti from ".$prefix."_ele_gruppo as t1, ".$prefix."_ele_lista as t2, ".$prefix."_ele_voti_lista as t3 where t1.id_cons='$id_cons' and t1.id_gruppo=t2.id_gruppo and t2.id_lista=t3.id_lista and t1.num_gruppo='$key' group by t2.id_lista,t2.descrizione,t2.num_lista order by t2.num_lista",$dbi);
while (list($id_lista,$descr,$x,$y)=mysql_fetch_row($res_lis)){
$pos=1;
$arvin[$x][$pos++]=$descr." - Voti: $y (".number_format($y*100/$validi,2)."%)";
$res_can = mysql_query("SELECT concat(t1.cognome,' ',t1.nome) as descr,sum(t2.voti) as voti from ".$prefix."_ele_candidati as t1, ".$prefix."_ele_voti_candidati as t2 where t1.id_lista='$id_lista' and t1.id_cand=t2.id_cand GROUP BY descr order by voti desc,num_cand",$dbi);
while(list($cand,$pre)=mysql_fetch_row($res_can)) $arvin[$x][$pos++]=$descr." - $y ";
$listemag[$x]=$y;
$desliste[$x]=$descr;
}
#foreach ($groups as $key=>$val)echo " key: $key : val : $val ";
$seggimag=array();
$seggimag=calcoloseggi($listemag,$val);
foreach ($seggimag as $key=>$val){
$arvin[$key][0]=$val;
echo "lista n. $key seggi spettanti:$val ";
# $consiglio
}
}
$numcons=($numcons*4/10);
}
#####calcolo per la minoranza o in caso non ci sia premio di maggioranza
$gruppomin=calcoloseggi($groups,$numcons);
foreach ($gruppomin as $key=>$val){
if(!$premio and $key==$gruppo) $arvin[0][0]=$desgruppi[$gruppo];
else $arper[0][0]=$desgruppi[$key];
echo " gruppo n. : $key : val : $val ";
echo "ultimo assegnato al gruppo: $ultimo ";
$res_lis = mysql_query("SELECT t2.id_lista,t2.descrizione,t2.num_lista,sum(t3.voti) as voti from ".$prefix."_ele_gruppo as t1, ".$prefix."_ele_lista as t2, ".$prefix."_ele_voti_lista as t3 where t1.id_cons='$id_cons' and t1.id_gruppo=t2.id_gruppo and t2.id_lista=t3.id_lista and t1.num_gruppo='$key' group by t2.id_lista,t2.descrizione,t2.num_lista order by t2.num_lista",$dbi);
$x=0;
while (list($id_lista,$descr,$x,$y)=mysql_fetch_row($res_lis)){
unset($listemin);
$pos=1;
if(!$premio and $key==$gruppo) $arvin[$x][$pos++]=$descr." - Voti: $y (".number_format($y*100/$validi,2)."%)";
else $arper[$x][$pos++]=$descr." - Voti: $y (".number_format($y*100/$validi,2)."%)";
$res_can = mysql_query("SELECT concat(t1.cognome,' ',t1.nome) as descr,sum(t2.voti) as voti from ".$prefix."_ele_candidati as t1, ".$prefix."_ele_voti_candidati as t2 where t1.id_lista='$id_lista' and t1.id_cand=t2.id_cand GROUP BY descr order by voti desc,num_cand",$dbi);
while(list($cand,$pre)=mysql_fetch_row($res_can))
if(!$premio and $key==$gruppo) $arvin[$x][$pos++]=$descr." - $y ";
else $arper[$x][$pos++]=$descr." - $y ";
$listemin[$x]=$y;
$desliste[$x]=$descr;
}
#foreach ($groups as $key=>$val)echo " key: $key : val : $val ";
$seggimin=array();
$seggimin=calcoloseggi($listemin,$val);
foreach ($seggimin as $key=>$val){
if(!$premio and $key==$gruppo) $arvin[$key][0]=$val;
else $arper[$key][0]=$val;
echo "lista n. $key seggi spettanti:$val ";
# $consiglio
}
}
crea_tabella($arvin);
crea_tabella($arper);
/*if(isset($listemin)) unset($listemin);
echo "
gruppo n. : $key : val : $val ";
echo "ultimo assegnato al gruppo: $ultimo ";
$res_lis = mysql_query("SELECT t2.num_lista,sum(t3.voti) from ".$prefix."_ele_gruppo as t1, ".$prefix."_ele_lista as t2, ".$prefix."_ele_voti_lista as t3 where t1.id_cons='$id_cons' and t1.id_gruppo=t2.id_gruppo and t2.id_lista=t3.id_lista and t1.num_gruppo='$key' group by t2.num_lista order by t2.num_lista",$dbi);
$x=0;
while (list($x,$y)=mysql_fetch_row($res_lis)) $listemin[$x]=$y;
#foreach ($groups as $key=>$val)echo " key: $key : val : $val ";
$seggimin=array();
$seggimin=calcoloseggi($listemin,$val);
foreach ($seggimin as $key=>$val){
if ($key==$ultimo) $val--;
echo "lista n. $key seggi spettanti:$val ";
}
}
/*$seggi = array();
$seggi=calcoloseggi($groups,$numcons);
foreach ($seggi as $key=>$val){
unset($groups);
echo " gruppo n. : $key : val : $val ";
echo "ultimo assegnato al gruppo: $ultimo ";
$res_lis = mysql_query("SELECT t2.num_lista,sum(t3.voti) from ".$prefix."_ele_gruppo as t1, ".$prefix."_ele_lista as t2, ".$prefix."_ele_voti_lista as t3 where t1.id_cons='$id_cons' and t1.id_gruppo=t2.id_gruppo and t2.id_lista=t3.id_lista and t1.num_gruppo='$key' group by t2.num_lista order by t2.num_lista",$dbi);
$x=0;
while (list($x,$y)=mysql_fetch_row($res_lis)) $groups[$x]=$y;
#foreach ($groups as $key=>$val)echo " key: $key : val : $val ";
$seggilista=array();
$seggilista=calcoloseggi($groups,$val);
foreach ($seggilista as $key=>$val){
if ($key==$ultimo) $val--;
echo "lista n. $key seggi spettanti:$val ";
}
}
/*while (list($num_gruppo,$num_lista,$voti)= mysql_fetch_row($res_lis)){
//array_push($groups[($num_gruppo)],($num_lista));
$groups[($num_gruppo)][($num_lista)]=array();
array_push($groups[($num_gruppo)][($num_lista)],$voti);
}
foreach ($groups as $key=>$val){
echo "gruppo: $key -- voti: ".$val[0]." ";
foreach($val[1] as $lis=>$vot)
foreach ($vot as $des=>$che)
echo " lista $des voti $che ";
}*/
//////////////////////////
#controlla che la lista vincente abbia ottenuto almeno il 40% dei voti validi e meno del 60
$res_vin = mysql_query("SELECT sum(t3.voti) from ".$prefix."_ele_gruppo as t1, ".$prefix."_ele_lista as t2, ".$prefix."_ele_voti_lista as t3 where t1.id_cons='$id_cons' and t1.id_gruppo=t2.id_gruppo and t2.id_lista=t3.id_lista and t1.num_gruppo='$gruppo'",$dbi);
list($voti)= mysql_fetch_row($res_vin);
$res_val = mysql_query("SELECT sum(validi) from ".$prefix."_ele_sezioni where id_cons='$id_cons'",$dbi);
list($validi) = mysql_fetch_row($res_val);
#ma nessun altro gruppo di liste deve aver raggiunto il 50% dei voti validi
$res_per = mysql_query("SELECT t1.num_gruppo,sum(t3.voti) from ".$prefix."_ele_gruppo as t1, ".$prefix."_ele_lista as t2, ".$prefix."_ele_voti_lista as t3 where t1.id_cons='$id_cons' and t1.id_gruppo=t2.id_gruppo and t2.id_lista=t3.id_lista and t1.num_gruppo!='$gruppo' group by t1.num_gruppo order by t1.num_gruppo",$dbi);
$premio=0;
$gruppi=0;
$quorum=array();
if ($voti>number_format(($validi*4)/10) and $voti= $validi/2) $premio=0;
if ($voti>= ($validi*3)/100) {array_push($quorum,$gruppoper);}
$gruppi++;
}
if (!$premio)array_push($quorum,$gruppo);
#carica numero di liste e voti, se c'e' il premio si effettuano due calcoli separati uno per le liste vincenti e uno per le altre
if ($premio){
$res_lisper = mysql_query("SELECT t1.num_gruppo,t2.num_lista,sum(t3.voti) from ".$prefix."_ele_gruppo as t1, ".$prefix."_ele_lista as t2, ".$prefix."_ele_voti_lista as t3 where t1.id_cons='$id_cons' and t1.id_gruppo=t2.id_gruppo and t2.id_lista=t3.id_lista and t1.num_gruppo != '$gruppo' group by t1.num_gruppo,t2.num_lista order by t2.num_lista",$dbi);
$num_liste = mysql_num_rows($res_lisper);
$num_cons=number_format(($numcons*4)/10);
$res_lisvin = mysql_query("SELECT t2.num_lista,sum(t3.voti) from ".$prefix."_ele_gruppo as t1, ".$prefix."_ele_lista as t2, ".$prefix."_ele_voti_lista as t3 where t1.id_cons='$id_cons' and t1.id_gruppo=t2.id_gruppo and t2.id_lista=t3.id_lista and t1.num_gruppo = '$gruppo' group by t2.num_lista order by t2.num_lista",$dbi);
$num_listevin = mysql_num_rows($res_lisvin);
$num_consvin=number_format(($numcons*6)/10);
}else{
$res_lisper = mysql_query("SELECT t1.num_gruppo,t2.num_lista,sum(t3.voti) from ".$prefix."_ele_gruppo as t1, ".$prefix."_ele_lista as t2, ".$prefix."_ele_voti_lista as t3 where t1.id_cons='$id_cons' and t1.id_gruppo=t2.id_gruppo and t2.id_lista=t3.id_lista group by t1.num_gruppo,t2.num_lista order by t2.num_lista",$dbi);
$num_liste = mysql_num_rows($res_lisper);
$num_cons=$numcons;
}
#carica le preferenze
$pref = array();
$liste = array();
$digruppo = array();
$ultimo = array();
$groups = array();
#inizializza l'array degli eletti
for ($x=0;$x<=$num_liste;$x++){
$eletti[$x]=0;
}
$x=0;
while (list($num_gruppo,$num_lista,$voti)= mysql_fetch_row($res_lisper)){
if (!in_array($num_gruppo,$quorum)) {$voti=0;}
array_push($pref,$voti);
array_push($liste,$num_lista);
$digruppo[$x]=$num_gruppo;
if (!isset($groups[$num_gruppo])) $groups[$num_gruppo]=array();
array_push($groups[$num_gruppo],$num_lista);
$x++;
}
#carica gli array dei quozienti
for ($y=0;$y<$num_liste;$y++){
for ($x=0;$x<$num_cons;$x++)
$ele[$y][$x]= $pref[$y]/($x+1);
}
#estrae i quozienti piu' alti
$sorteggio=0;
for ($y=0;$y<$num_cons;$y++){
$temp=0;
$cand=0;
$mex='';
for ($x=0;$x<$num_liste;$x++){
if ($ele[$x][0]==$temp and $pref[$x]==$pref[$cand] and ($y+1)==$num_cons) {$sorteggio=1; $mex="Per attribuire l'ultimo seggio è necessario un sorteggio tra la lista n. ".($x+1)." e la lista n. ".($cand+1);}
if ($ele[$x][0]>$temp or ($ele[$x][0]==$temp and $pref[$x]>$pref[$cand])) {
$temp=$ele[$x][0];
$cand=$x;
$sorteggio=0;
}
}
if (!$sorteggio){
$eletti[$cand]++;
$ultimo[$digruppo[($cand)]]=$cand;
array_shift($ele[$cand]);
}
}
foreach ($ultimo as $key=>$sind) { //echo "lista: $sind - gruppo: $key eletti: ".$eletti[($val-1)]." ";
if($key!=$gruppo) $eletti[$sind]--;
}
#
#foreach($groups as $key=>$val1) foreach ($val1 as $val) echo "gruppo: $key - lista: $val eletti: ".$eletti[($val-1)]." ";
#for ($x=0;$x<$num_liste;$x++) //caricare in una variabile il testo da visualizzare, e' necessario controllare: if (!$premio) vanno separate le liste vincenti dalle altre
# echo "lista n. ".$liste[$x]." ".$eletti[$x]." eletti ";
#echo "sorteggio: $sorteggio ";
$varper="SEGGI ASSEGNATI ALLA MINORANZA |
";
$varvin="SEGGI ASSEGNATI ALLA MAGGIORANZA |
";
#for ($y=0;$y<$gruppi;$y++)
foreach($groups as $key=>$val1) {
if (isset($ultimo[$key])) {
$res_gru = mysql_query("SELECT descrizione from ".$prefix."_ele_gruppo where id_cons='$id_cons' and num_gruppo='".$key."'",$dbi);
list($descr) = mysql_fetch_row($res_gru);
if ($key==$gruppo){
$varvin.= "\n Seggi spettanti al gruppo n. ".$key." | ";
$varvin.="SINDACO ELETTO: $descr | |
\n";
$varvin.="";
}else{
$varper.= "\n Seggi spettanti al gruppo n. ".$key." | ";
$varper.="$descr | |
\n";
$varper.="";
}
foreach($val1 as $val) {
if ($eletti[($val-1)]){
$res_lis = mysql_query("SELECT id_lista,descrizione from ".$prefix."_ele_lista where id_cons='$id_cons' and num_lista='".$val."'",$dbi);
list($id_lista,$descr) = mysql_fetch_row($res_lis);
$res_lis = mysql_query("SELECT concat(t1.cognome,' ',t1.nome) as descr,sum(t2.voti) as voti from ".$prefix."_ele_candidati as t1, ".$prefix."_ele_voti_candidati as t2 where t1.id_lista='$id_lista' and t1.id_cand=t2.id_cand GROUP BY descr order by voti desc,num_cand",$dbi);
if ($key==$gruppo) $varvin.="\nLista n. $val: $descr seggi ".$eletti[($val-1)]." | | ";
else $varper.="\nLista n. $val: $descr seggi ".$eletti[($val-1)]." | | ";
$x=0;
while (list($descr,$voti) = mysql_fetch_row($res_lis)) {
$bgcolor1= (($x++)<$eletti[($val-1)]) ? $_SESSION['bgcolor2'] : $_SESSION['bgcolor1'] ;
if ($key==$gruppo) $varvin.="$descr | $voti | ";
else $varper.="$descr | $voti | ";
}
if ($key==$gruppo) $varvin.= " \n | ";
else $varper.= " \n | ";
}
}
if ($key==$gruppo) $varvin.=" \n | ";
else $varper.=" \n | ";
}
}
$varper.=" $mex | \n";
unset ($eletti);
unset($ele);
if($premio){
$num_cons=$num_consvin;
$num_liste=$num_listevin;
#carica le preferenze
$pref = array();
$liste = array();
while (list($num_lista,$voti)= mysql_fetch_row($res_lisvin)){
array_push($pref,$voti);
array_push($liste,$num_lista);
}
#carica gli array dei quozienti
for ($y=0;$y<$num_liste;$y++){
for ($x=0;$x<$num_cons;$x++)
$ele[$y][$x]= $pref[$y]/($x+1);
}
#inizializza l'array degli eletti
for ($x=0;$x<$num_liste;$x++)
$eletti[$x]=0;
#estrae i quozienti piu' alti
$sorteggio=0;
for ($y=0;$y<$num_cons;$y++){
$temp=0;
$cand=0;
for ($x=0;$x<$num_liste;$x++){
if ($ele[$x][0]==$temp and $pref[$x]==$pref[$cand] and ($y+1)==$num_cons) {$sorteggio=1; $mex="Per attribuire l'ultimo seggio è necessario un sorteggio tra la lista n. ".($x+1)." e la lista n. ".($cand+1);}
if ($ele[$x][0]>$temp or ($ele[$x][0]==$temp and $pref[$x]>$pref[$cand])) {
$temp=$ele[$x][0];
$cand=$x;
$sorteggio=0;
}
}
if (!$sorteggio){
$eletti[$cand]++;
array_shift($ele[$cand]);
}
}
#visualizza il gruppo, il candidato a sindaco eletto consigliere, le liste e i consiglieri
#for ($x=0;$x<$num_liste;$x++)
# echo "lista n. ".$liste[$x]." ".$eletti[$x]." eletti ";
#echo "sorteggio: $sorteggio ";
#foreach($eletti as $key=>$val) echo "lista: ".$liste[$key]." - eletti: $val ";
///////////////
//foreach($groups as $key=>$val1) {echo "lista: $val - gruppo: $key eletti: ".$eletti[($val-1)]." ";
$key=$gruppo;
$res_gru = mysql_query("SELECT descrizione from ".$prefix."_ele_gruppo where id_cons='$id_cons' and num_gruppo='".$key."'",$dbi);
list($descr) = mysql_fetch_row($res_gru);
$varvin.= "\n Seggi spettanti al gruppo n. ".$key." | ";
$varvin.="SINDACO ELETTO: $descr | |
\n";
$varvin.="";
foreach($eletti as $lis=>$val) { //echo "lista: ".$liste[$lis]." - gruppo: $key eletti: ".$val." ";
// if ($eletti[($val-1)]){
$res_lis = mysql_query("SELECT id_lista,descrizione from ".$prefix."_ele_lista where id_cons='$id_cons' and num_lista='".$liste[$lis]."'",$dbi);
list($id_lista,$descr) = mysql_fetch_row($res_lis);
$res_lis = mysql_query("SELECT concat(t1.cognome,' ',t1.nome) as descr,sum(t2.voti) as voti from ".$prefix."_ele_candidati as t1, ".$prefix."_ele_voti_candidati as t2 where t1.id_lista='$id_lista' and t1.id_cand=t2.id_cand GROUP BY descr order by voti desc,num_cand",$dbi);
$varvin.="\nLista n. ".$liste[$lis].": $descr seggi ".$val." | | ";
$x=0;
while (list($descr,$voti) = mysql_fetch_row($res_lis)) {
$bgcolor1= (($x++)<$val) ? $_SESSION['bgcolor2'] : $_SESSION['bgcolor1'] ;
$varvin.="$descr | $voti | ";
}
$varvin.= " \n | ";
// }
}
$varvin.=" \n | ";
///////////////
}
$varvin.=" $mex | \n";
echo $varvin;
echo $varper;
}
?>
|