Ignore:
Timestamp:
Mar 27, 2022, 7:51:34 PM (2 years ago)
Author:
roby
Message:

Ritocchi e sistemazioni varie di completamento delle mofifiche precedenti

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/client/modules/Elezioni/consiglieri.php

    r357 r362  
    1616        die();
    1717}
    18 
    1918$param=strtolower($_SERVER['REQUEST_METHOD']) == 'get' ? $_GET : $_POST;
    20 
    2119if (isset($param['gruppo'])) $gruppo=intval($param['gruppo']); else $gruppo='';
    2220if (isset($param['numgruppo'])) $numgruppo=intval($param['numgruppo']); else $numgruppo='';
    2321if (isset($param['listecol'])) $listecol=intval($param['listecol']); else $listecol=0;
    24 
    2522$sql = "select id_conf,id_fascia from ".$prefix."_ele_cons_comune where id_cons='$id_cons'";
    2623$result = $dbi->prepare("$sql");
    2724$result->execute();
    28 
    2925list($id_conf,$fascia) = $result->fetch(PDO::FETCH_NUM);
    30 
    3126$sql = "SELECT limite,consin,infpremio,supsbarramento,suppremio,listinfsbar,listinfconta,listsupconta,supminpremio,infminpremio from ".$prefix."_ele_conf where id_conf='$id_conf'";
    3227$res = $dbi->prepare("$sql");
    3328$res->execute();
    34 
    3529list($limite,$consin,$infpremio,$supsbarramento,$suppremio,$listinfsbar,$listinfconta,$listsupconta,$supminpremio,$infminpremio) = $res->fetch(PDO::FETCH_NUM);
    3630$numcons=0;
    37 
    3831echo "<table><tr><td align=\"center\">"._PROIEZCONS."</td></tr></table>";
    3932
     
    362355}
    363356
    364 
    365 
    366357function calcoloseggi($gruppi,$num_cons,$flag){
    367358global $ultimo,$mex,$sorteggio,$quozienti,$num_cand,$num_candlst;
     
    477468
    478469function conssup($fascia,$gruppo,$collegate,$collperd,$primoturno) {
    479 global $id_cons, $id_cons_gen, $id_comune, $prefix,$dbi;
    480 global $groups,$lists,$eletti,$ultimo,$quozienti,$num_candlst,$mex,$PNE,$CSEC,$consin;
    481 global $supsbarramento, $supminpremio, $suppremio;
    482 global $listsupconta,$numcons;
    483 #funzione di calcolo per comuni oltre 15.000 abitanti
    484 #carica il numero di consiglieri da eleggere$groups=array();
    485 $PNE=_PRIMONON;
    486 $CSEC=_SINDCONS;
    487 $lists=array();
    488 $eletti=array();
    489 $num_candlst=array();
    490 #$quozienti = array();
    491 $oldlists=array();
    492 $oldlstgrp=array();
    493 $premio=0;
    494 /* "Ai fini della determinazione nel secondo turno, della cifra elettorale complessiva delle liste collegate deve tenersi conto anche del collegamento intervenuto in vista del ballottaggio" (Cons. St. Sez. V 4 maggio 2001 n. 2519; 20 settembre 2000 n. 4894; 19 marzo 1996 n. 290)   
    495  */
    496 
    497 if (!isset($_SESSION['ballo1'])) $_SESSION['ballo1']='';
    498 if (!isset($_SESSION['ballo2'])) $_SESSION['ballo2']='';
    499 $gruppoperd= ($gruppo==$_SESSION['ballo1']) ? $_SESSION['ballo2'] : $_SESSION['ballo1'];
    500 
    501 #per voti validi non si intendono i voti validi alle liste ma i voti validi espressi
    502 #$res_val = mysql_query("SELECT sum(validi_lista) from ".$prefix."_ele_sezioni where id_cons='$id_cons'",$dbi);
    503 $sql = "SELECT sum(voti) from ".$prefix."_ele_voti_gruppo where id_cons='$id_cons'";
    504 $res_val = $dbi->prepare("$sql");
    505 $res_val->execute();
    506 
    507 list($validi) = $res_val->fetch(PDO::FETCH_NUM);
    508 
    509 $sbarra=($validi*$supsbarramento)/100;
    510 $sql = "SELECT t1.descrizione,t1.num_gruppo,t2.id_lista,t2.num_lista,t2.descrizione,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,t2.num_lista,t2.descrizione order by voti desc";
    511 $res_per = $dbi->prepare("$sql");
    512 $res_per->execute();
    513 
    514 $groups=array();
    515 $premio=0;
    516 //10-05-2009 gestione differenziata delle norme elettorali
    517 #carica l'array dei gruppi e della cifra di gruppo
    518 while (list($descr,$num_gruppo,$id_lista,$num_lista,$descr_lista,$voti)= $res_per->fetch(PDO::FETCH_NUM)){
    519  if ($listsupconta or $voti>=$sbarra){
    520     if (! isset($groups[($num_gruppo)])) $groups[($num_gruppo)]=0;
    521     $desgruppi[$num_gruppo]=$descr;
    522     $desliste[$num_lista]=$num_lista.") ".$descr_lista;
    523     $idlst[$num_lista]=$id_lista;
    524     $listagruppo[$num_lista]=$num_gruppo;
    525     $lists[$num_lista]=$voti;
    526     $groups[($num_gruppo)]+=$voti;
    527   }
    528 }   
     470        global $id_cons, $id_cons_gen, $id_comune, $prefix,$dbi;
     471        global $groups,$lists,$eletti,$ultimo,$quozienti,$num_candlst,$mex,$PNE,$CSEC,$consin;
     472        global $supsbarramento, $supminpremio, $suppremio;
     473        global $listsupconta,$numcons;
     474        #funzione di calcolo per comuni oltre 15.000 abitanti
     475        #carica il numero di consiglieri da eleggere$groups=array();
     476        $PNE=_PRIMONON;
     477        $CSEC=_SINDCONS;
     478        $lists=array();
     479        $eletti=array();
     480        $num_candlst=array();
     481        #$quozienti = array();
     482        $oldlists=array();
     483        $oldlstgrp=array();
     484        $premio=0;
     485        /* "Ai fini della determinazione nel secondo turno, della cifra elettorale complessiva delle liste collegate deve tenersi conto anche del collegamento intervenuto in vista del ballottaggio" (Cons. St. Sez. V 4 maggio 2001 n. 2519; 20 settembre 2000 n. 4894; 19 marzo 1996 n. 290)   
     486        */
     487
     488        if (!isset($_SESSION['ballo1'])) $_SESSION['ballo1']='';
     489        if (!isset($_SESSION['ballo2'])) $_SESSION['ballo2']='';
     490        $gruppoperd= ($gruppo==$_SESSION['ballo1']) ? $_SESSION['ballo2'] : $_SESSION['ballo1'];
     491
     492        #per voti validi non si intendono i voti validi alle liste ma i voti validi espressi
     493        #$res_val = mysql_query("SELECT sum(validi_lista) from ".$prefix."_ele_sezioni where id_cons='$id_cons'",$dbi);
     494        $sql = "SELECT sum(voti) from ".$prefix."_ele_voti_gruppo where id_cons='$id_cons'";
     495        $res_val = $dbi->prepare("$sql");
     496        $res_val->execute();
     497       
     498        list($validi) = $res_val->fetch(PDO::FETCH_NUM);
     499
     500        $sbarra=($validi*$supsbarramento)/100;
     501        $sql = "SELECT t1.descrizione,t1.num_gruppo,t2.id_lista,t2.num_lista,t2.descrizione,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,t2.num_lista,t2.descrizione order by voti desc";
     502        $res_per = $dbi->prepare("$sql");
     503        $res_per->execute();
     504
     505        $groups=array();
     506        $premio=0;
     507        //10-05-2009 gestione differenziata delle norme elettorali
     508        #carica l'array dei gruppi e della cifra di gruppo
     509        while (list($descr,$num_gruppo,$id_lista,$num_lista,$descr_lista,$voti)= $res_per->fetch(PDO::FETCH_NUM)){
     510        if ($listsupconta or $voti>=$sbarra){
     511                if (! isset($groups[($num_gruppo)])) $groups[($num_gruppo)]=0;
     512                $desgruppi[$num_gruppo]=$descr;
     513                $desliste[$num_lista]=$num_lista.") ".$descr_lista;
     514                $idlst[$num_lista]=$id_lista;
     515                $listagruppo[$num_lista]=$num_gruppo;
     516                $lists[$num_lista]=$voti;
     517                $groups[($num_gruppo)]+=$voti;
     518          }
     519        }   
    529520################### carica array ... 25  maggio 2014
    530 foreach($collegate as $key=>$val){     
    531         $sql = "SELECT id_gruppo from ".$prefix."_ele_lista where num_lista='$val' and id_cons='$id_cons'";
    532 $res = $dbi->prepare("$sql");
    533 $res->execute();
    534 
     521        foreach($collegate as $key=>$val){     
     522                $sql = "SELECT id_gruppo from ".$prefix."_ele_lista where num_lista='$val' and id_cons='$id_cons'";
     523                $res = $dbi->prepare("$sql");
     524                $res->execute();
    535525                list($tempig)=$res->fetch(PDO::FETCH_NUM);
    536526                $sql = "SELECT num_gruppo from ".$prefix."_ele_gruppo where id_gruppo='$tempig' and id_cons='$id_cons'";
    537 $res = $dbi->prepare("$sql");
    538 $res->execute();
    539 
     527                $res = $dbi->prepare("$sql");
     528                $res->execute();
    540529                list($tempng)=$res->fetch(PDO::FETCH_NUM);
    541530                $grpinc[$val]=$tempng;
    542 }
     531        }
    543532        $elencog=array();
    544533        $sindseggiopre=array();
     
    547536        foreach($testseggio as $testk=>$valk) { $sindseggiopre[]=$testk;}
    548537##################
    549 $descrsind=$desgruppi[$gruppo];
    550 foreach ($groups as $key=>$val){
    551        #controlla se un gruppo di liste, tra quelle perdenti, ha superato il 50%
    552     if ($key!=$gruppo and $val> $validi/2) $premio=2;
    553     #elimina gruppi che non hanno superato lo sbarramento
    554     if ($val<$sbarra){
    555         foreach ($listagruppo as $lst=>$grp)
    556                 if ($grp==$key){
    557                         unset($listagruppo[$lst]);
    558                         unset($desliste[$lst]);
    559                         unset($lists[$lst]);
    560                 }       
    561         unset($groups[($key)]);
    562         unset($desgruppi[($key)]);
    563 
    564     }
    565 }
    566 
     538        $descrsind=$desgruppi[$gruppo];
     539        foreach ($groups as $key=>$val){
     540#controlla se un gruppo di liste, tra quelle perdenti, ha superato il 50%
     541                if ($key!=$gruppo and $val> $validi/2) $premio=2;
     542#elimina gruppi che non hanno superato lo sbarramento
     543                if ($val<$sbarra){
     544                        foreach ($listagruppo as $lst=>$grp)
     545                                if ($grp==$key){
     546                                        unset($listagruppo[$lst]);
     547                                        unset($desliste[$lst]);
     548                                        unset($lists[$lst]);
     549                                }       
     550                        unset($groups[($key)]);
     551                        unset($desgruppi[($key)]);
     552
     553                }
     554        }
    567555    foreach ($collegate as $lst)
    568556        if (isset($lists[$lst])){
     
    575563                 $groups[$gruppo]+=$lists[$lst];
    576564        }
    577  ////maggio 2011: da qui   
    578  
    579565#controlla se la percentuale del gruppo vincente e' tra il 40 e il 60% o il sindaco e' eletto al secondo turno
    580566#e se nessun altro gruppo ha superato il 50% assegna il premio di maggioranza
    581567#e se nessun altro gruppo ha superato il 50% e nessuno ha ottenuto piu' del 60% dei seggi, assegna il premio di maggioranza
    582 $consmin=$numcons;
    583 $gruppomin=calcoloseggi($groups,$consmin,0);
    584 $nopremio=1;
    585 #die("qui:".($numcons*60/100)."<$val");
    586 if (($groups[$gruppo]>=(($validi*$supminpremio)/100) or ! $primoturno) and $groups[$gruppo]<(($validi*$suppremio)/100) and !$premio and $nopremio) $premio=1;
    587 else $premio=0;
     568        $consmin=$numcons;
     569        $gruppomin=calcoloseggi($groups,$consmin,0);
     570        $nopremio=1;
     571        if (($groups[$gruppo]>=(($validi*$supminpremio)/100) or ! $primoturno) and $groups[$gruppo]<(($validi*$suppremio)/100) and !$premio and $nopremio) $premio=1;
     572        else $premio=0;
    588573        $consel=array();
    589574        $consel[]=array(_LISTA,_VOTI,_SEGGI,_CANDIDATO,_CIFRAELE,_QUOZIENTI);
    590 $groupsappo=$groups;
    591 $candidati=array();
    592 $grpperd=$gruppoperd;
     575        $groupsappo=$groups;
     576        $candidati=array();
     577        $grpperd=$gruppoperd;
    593578//maggio 2011: a qui viene spostato in modo da aggiungere i voti di lista delle collegate per il perdente solo dopo aver controllato se supera il 50%, in questo modo si evita che il collegamento tra perdenti faccia decadere il premio di maggioranza se solo insieme superano il 50%
    594579//maggio 2011: da qui
    595 if(!isset($groups[$gruppoperd])) $groups[$gruppoperd]=0;
    596     foreach ($collperd as $lst)
    597         if (isset($lists[$lst])){
    598                 $oldlstgrp[$lst]=$listagruppo[$lst];
    599                  $listagruppo[$lst]=$gruppoperd;
    600                  $oldlists[$lst]=$lists[$lst];
    601                  $groups[$gruppoperd]+=$lists[$lst];
    602                  $groups[$oldlstgrp[$lst]]-=$lists[$lst];
    603         }   
    604 
     580        if(!isset($groups[$gruppoperd])) $groups[$gruppoperd]=0;
     581                foreach ($collperd as $lst)
     582                        if (isset($lists[$lst])){
     583                                $oldlstgrp[$lst]=$listagruppo[$lst];
     584                                 $listagruppo[$lst]=$gruppoperd;
     585                                 $oldlists[$lst]=$lists[$lst];
     586                                 $groups[$gruppoperd]+=$lists[$lst];
     587                                 $groups[$oldlstgrp[$lst]]-=$lists[$lst];
     588        }   
    605589////maggio 2011: a qui (mettendolo dopo Ú come se l'avessi tolto ma possono esserci altre implicazioni visto che si modificano le percentuali del gruppo, così per ora non lo tolgo) va tolto se non vanno sommati i voti delle liste collegate al secondo turno con quelli del gruppo che perde il ballottaggio, se non si collegano viene favorita l'elezione del candidato sindaco con cui era collegata al primo turno mentre se si collegano viene favorito il principio di aggregazione. Per ora i perdenti sono considerati con la situazione al primo turno. Implementiamo cosᅵ: il 50% deve essere superato dalla minoranza nel primo turno, quindo senza somma dei voti delle liste aggiunte nel secondo turno - la suddivisione dei seggi viene fatta considerando i collegamenti al secondo turno, le liste collegate partecipano alla suddivisione dei seggi con questo gruppo quindi si confronta con le liste del gruppo in cui era al primo turno e valutando i coefficienti si stabilisce quale lista cede il seggio al candidato sindaco non acceduto al ballottaggio.
    606 
    607 if ($premio) {
    608 #########
    609 ################### carica array ...
    610 /*      $elencog=array();
    611         $sindseggiopre=array();
    612         foreach($groups as $testk=>$valk) if($testk!=$grpperd) {$elencog[$testk]=$valk;}
    613         $testseggio=calcoloseggi($elencog,ceil($numcons*($suppremio)/100),0);
    614         foreach($testseggio as $testk=>$valk) {if($valk) $sindseggio[]=$testk; echo "<br>testkpre: $testk - $valk";}
    615 */#foreach ($gruppomin as $key=>$val) {if (($numcons*60/100)<$val) $nopremio=0;if($key!=$gruppo){echo "<br>gruppomin: $key -- $val";}}
    616 ##################
     590        if ($premio) {
    617591################### nell'array sindseggio vengono inseriti i candidati sindaco che restano senza seggio per gli apparentamenti
    618         $elencog=array();
    619         $testseggio=array();
    620         $sindseggio=array();
    621         foreach($groups as $testk=>$valk) {if($testk!=$gruppo) $elencog[$testk]=$valk;}
    622         $perdente[$gruppoperd]=$groups[$gruppoperd];
    623         $testseggio=calcoloseggi($elencog,floor($numcons-$numcons*($suppremio)/100),0);
    624         foreach($testseggio as $testk=>$valk)
    625         foreach($sindseggiopre as $testk=>$valk){ if(isset($testseggio[$valk]) and $testseggio[$valk]) continue; $sindseggio[$valk]=$valk;} #foreach ($sindseggiopre as $keyl=>$vall) echo "<br> seggi: $keyl - $vall";
    626 ###########
    627     $sindaco[$gruppo]=$groups[$gruppo]; $groups[$gruppo]=0;
    628     $gruppomag=calcoloseggi($sindaco,ceil($numcons*$suppremio/100),0);
     592                $elencog=array();
     593                $testseggio=array();
     594                $sindseggio=array();
     595                foreach($groups as $testk=>$valk) {if($testk!=$gruppo) $elencog[$testk]=$valk;}
     596                $perdente[$gruppoperd]=$groups[$gruppoperd];
     597                $testseggio=calcoloseggi($elencog,floor($numcons-$numcons*($suppremio)/100),0);
     598                foreach($testseggio as $testk=>$valk)
     599                foreach($sindseggiopre as $testk=>$valk){ if(isset($testseggio[$valk]) and $testseggio[$valk]) continue; $sindseggio[$valk]=$valk;}
     600                $sindaco[$gruppo]=$groups[$gruppo]; $groups[$gruppo]=0;
     601                $gruppomag=calcoloseggi($sindaco,ceil($numcons*$suppremio/100),0);
    629602#######calcola i seggi per lista
    630 foreach ($gruppomag as $key=>$val){
    631         foreach($listagruppo as $lst=>$grp){
    632                 if($grp!=$key) continue;
    633                 $id_lista=$idlst[$lst];
    634                 $x=$lst;
    635                 $y=$lists[$x];
    636                 $pos=0;
    637                 $z=0;
    638                 $arvin[$x][$pos++]=$desliste[$lst];
    639                 $sql = "SELECT concat(substring(concat('0',t1.num_cand),-2),') ',t1.cognome,' ',substring(t1.nome from 1 for 1),'.') 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,t1.num_cand";
    640 $res_can = $dbi->prepare("$sql");
    641 $res_can->execute();
    642 
    643                 $num_candlst[$x]=$res_can->rowCount();
    644                 while(list($cand,$pre)=$res_can->fetch(PDO::FETCH_NUM)){
    645                         $cifra[$x][$pos]=$y+$pre;
    646                         $arvin[$x][$pos++]=$cand;
    647                 }       
    648                 $listemag[$x]=$y;
    649                 $desliste[$x]=$descr;
    650                 $percliste[$x]="<br/>$y (".number_format($y*100/$validi,2)."%)";
    651                 $z++;
    652 ##      }
    653         $seggimag=array();
    654         $x=0;#foreach($listemag as $kkk=>$vvv) echo "<br> listemag: $kkk - $vvv - $grp - $gruppo -val=$val";
     603                foreach ($gruppomag as $key=>$val){
     604                        foreach($listagruppo as $lst=>$grp){
     605                                if($grp!=$key) continue;
     606                                $id_lista=$idlst[$lst];
     607                                $x=$lst;
     608                                $y=$lists[$x];
     609                                $pos=0;
     610                                $z=0;
     611                                $arvin[$x][$pos++]=$desliste[$lst];
     612                                $sql = "SELECT concat(substring(concat('0',t1.num_cand),-2),') ',t1.cognome,' ',substring(t1.nome from 1 for 1),'.') 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,t1.num_cand";
     613                                $res_can = $dbi->prepare("$sql");
     614                                $res_can->execute();
     615                                $num_candlst[$x]=$res_can->rowCount();
     616                                while(list($cand,$pre)=$res_can->fetch(PDO::FETCH_NUM)){
     617                                        $cifra[$x][$pos]=$y+$pre;
     618                                        $arvin[$x][$pos++]=$cand;
     619                                }       
     620                                $listemag[$x]=$y;
     621                                $desliste[$x]=$descr;
     622                                $percliste[$x]="<br/>$y (".number_format($y*100/$validi,2)."%)";
     623                                $z++;
     624                                $seggimag=array();
     625                                $x=0;
    655626#####25 maggio 2014 - il candidato sindaco non eletto ha diritto al seggio anche se di maggioranza
    656627### individua ultimi seggi assegnati a liste collegate
    657 if($grp==$gruppo){
    658         $listdec =array();
    659         $seggitmp=calcoloseggi($listemag,$val,1);
    660         foreach ($seggitmp as $keyl=>$vall){#echo "<br> lista: $vall - $keyl - $grp - $gruppo";
    661         if($vall==0) continue;
    662 
    663                 $sql = "SELECT id_gruppo from ".$prefix."_ele_lista where num_lista='$keyl' and id_cons='$id_cons'";
    664 $res = $dbi->prepare("$sql");
    665 $res->execute();
    666 
    667                 list($tempig)=$res->fetch(PDO::FETCH_NUM);
    668                 $sql = "SELECT num_gruppo from ".$prefix."_ele_gruppo where id_gruppo='$tempig' and id_cons='$id_cons'";
    669 $res = $dbi->prepare("$sql");
    670 $res->execute();
    671 
    672                 list($tempng)=$res->fetch(PDO::FETCH_NUM); #foreach ($sindseggio as $keyl=>$vall) echo "<br> listdecseggi: $keyl - $vall - $tempng";
    673                 if (isset($sindseggio[$tempng])) {$listdec[$tempng][]=$keyl;}
    674 #               if (in_array($tempng,$sindseggio)) {$listdec[$tempng][]=$keyl;}
    675 }
    676 }
    677 }
    678 ##########
    679         $seggimag=calcoloseggi($listemag,$val,1);
    680 
     628                                if($grp==$gruppo){
     629                                        $listdec =array();
     630                                        $seggitmp=calcoloseggi($listemag,$val,1);
     631                                        foreach ($seggitmp as $keyl=>$vall){
     632                                                if($vall==0) continue;
     633                                                $sql = "SELECT id_gruppo from ".$prefix."_ele_lista where num_lista='$keyl' and id_cons='$id_cons'";
     634                                                $res = $dbi->prepare("$sql");
     635                                                $res->execute();
     636                                                list($tempig)=$res->fetch(PDO::FETCH_NUM);
     637                                                $sql = "SELECT num_gruppo from ".$prefix."_ele_gruppo where id_gruppo='$tempig' and id_cons='$id_cons'";
     638                                                $res = $dbi->prepare("$sql");
     639                                                $res->execute();
     640                                                list($tempng)=$res->fetch(PDO::FETCH_NUM);
     641                                                if (isset($sindseggio[$tempng])) {$listdec[$tempng][]=$keyl;}
     642                                        }
     643                                }
     644                        }
     645                        $seggimag=calcoloseggi($listemag,$val,1);
    681646####cerca ultimo seggio assegnato per gruppo di liste collegate al primo turno
    682         foreach ($seggimag as $key2=>$val2){ if($val2==0) continue;
    683         if(isset($grpinc[$key2])) { $tempng=$grpinc[$key2];}
    684 if(isset($listdec[$tempng]))
    685 foreach($listdec[$tempng] as $ark=>$arv) {
    686                 if(!isset($ultquoz[($sindseggio[$tempng])]) and $sindseggio[$tempng]) {$ultquoz[($sindseggio[$tempng])]=$quozienti[$arv][($val2-1)];$lastlist[$tempng]=$arv;}
    687                 elseif ($ultquoz[($sindseggio[$tempng])]>$quozienti[$arv][($val2-1)]) {$ultquoz[($sindseggio[$tempng])]=$quozienti[$arv][($val2-1)];$lastlist[($sindseggio[$tempng])]=$arv;
    688                 }
    689         }}
    690 
    691         foreach ($seggimag as $key2=>$val2){
    692         ## condizione per esclusione di un seggio da destinare al sindaco non eletto    in_array($key2,$lastlist)
    693         if(isset($lastlist))
    694                 foreach($lastlist as $key3=>$val3){
    695                 if($key2==$val3) {
    696                         $arappo=array_shift($arvin[$key2]);$tpmgrp=0;
    697                                         array_unshift($arvin[$key2],$desgruppi[$key3]); array_unshift($arvin[$key2],$arappo);array_unshift($cifra[$key2],"--");array_unshift($cifra[$key2],"--");
    698                         }
    699                 }
    700         ## fine condizione - impostare variabile in db per differenziare il comportamento per consultazioni diverse
    701                 for ($z=0;$z<$val2;$z++){
    702                         if ($z) $consel[]=array("","","",$arvin[$key2][($z+1)],$cifra[$key2][($z+1)],number_format($quozienti[$key2][$z],2));
    703                         else
    704                         {
    705                         $consel[]=array($arvin[$key2][0],$percliste[$key2],$val2,$arvin[$key2][($z+1)],$cifra[$key2][($z+1)],number_format($quozienti[$key2][$z],2));
    706                         $arlisdesv[]=$arvin[$key2][0];$arlissegv[]=$val2;$arlisnumv[]=$key2;
    707                         }
    708                 }
    709         $x++;
    710         if($val2)
    711         $consel[]=array($arvin[$key2][0],"$PNE","",$arvin[$key2][($z+1)],$cifra[$key2][($z+1)],number_format($quozienti[$key2][$z],2));
    712         }
    713 }
    714 }
    715 if ($premio) $consmin=floor($numcons*(100-$suppremio)/100);
    716 else $consmin=$numcons;
    717 
     647                        foreach ($seggimag as $key2=>$val2){
     648                                if($val2==0) continue;
     649                                if(isset($grpinc[$key2])) { $tempng=$grpinc[$key2];}
     650                                if(isset($listdec[$tempng]))
     651                                foreach($listdec[$tempng] as $ark=>$arv) {
     652                                        if(!isset($ultquoz[($sindseggio[$tempng])]) and $sindseggio[$tempng]) {$ultquoz[($sindseggio[$tempng])]=$quozienti[$arv][($val2-1)];$lastlist[$tempng]=$arv;}
     653                                        elseif ($ultquoz[($sindseggio[$tempng])]>$quozienti[$arv][($val2-1)])
     654                                        {
     655                                                $ultquoz[($sindseggio[$tempng])]=$quozienti[$arv][($val2-1)];$lastlist[($sindseggio[$tempng])]=$arv;
     656                                        }
     657                                }
     658                        }
     659                        foreach ($seggimag as $key2=>$val2){
     660## condizione per esclusione di un seggio da destinare al sindaco non eletto    in_array($key2,$lastlist)
     661                                if(isset($lastlist))
     662                                foreach($lastlist as $key3=>$val3){
     663                                        if($key2==$val3) {
     664                                                $arappo=array_shift($arvin[$key2]);$tpmgrp=0;
     665                                                array_unshift($arvin[$key2],$desgruppi[$key3]); array_unshift($arvin[$key2],$arappo);array_unshift($cifra[$key2],"--");array_unshift($cifra[$key2],"--");
     666                                        }
     667                                }
     668## fine condizione - impostare variabile in db per differenziare il comportamento per consultazioni diverse
     669                                for ($z=0;$z<$val2;$z++){
     670                                        if ($z) $consel[]=array("","","",$arvin[$key2][($z+1)],$cifra[$key2][($z+1)],number_format($quozienti[$key2][$z],2));
     671                                        else
     672                                        {
     673                                                $consel[]=array($arvin[$key2][0],$percliste[$key2],$val2,$arvin[$key2][($z+1)],$cifra[$key2][($z+1)],number_format($quozienti[$key2][$z],2));
     674                                                $arlisdesv[]=$arvin[$key2][0];$arlissegv[]=$val2;$arlisnumv[]=$key2;
     675                                        }
     676                                }
     677                                $x++;
     678                                if($val2)
     679                                $consel[]=array($arvin[$key2][0],"$PNE","",$arvin[$key2][($z+1)],$cifra[$key2][($z+1)],number_format($quozienti[$key2][$z],2));
     680                        }
     681                }
     682        }
     683        if ($premio) $consmin=floor($numcons*(100-$suppremio)/100);
     684        else $consmin=$numcons;
    718685#####calcolo per la minoranza o in caso non ci sia premio di maggioranza   
    719 $gruppomin=calcoloseggi($groups,$consmin,0);
    720 $ordinati[$gruppo]=$gruppomin[$gruppo];
    721 foreach ($gruppomin as $key=>$val){
    722         if($key!=$gruppo) $ordinati[$key]=$val;
    723 }
    724 $gruppomin=$ordinati;
    725 foreach ($gruppomin as $key=>$val){
     686        $gruppomin=calcoloseggi($groups,$consmin,0);
     687        $ordinati[$gruppo]=$gruppomin[$gruppo];
     688        foreach ($gruppomin as $key=>$val){
     689                if($key!=$gruppo) $ordinati[$key]=$val;
     690        }
     691        $gruppomin=$ordinati;
     692        foreach ($gruppomin as $key=>$val){
    726693                if($premio and $key==$gruppo) continue;
    727         $listemin=array();
    728         $cifra=array();
    729         foreach($listagruppo as $lst=>$grp){
    730                 if($grp!=$key) continue;
    731                
    732                 $id_lista=$idlst[$lst];
    733                 $x=$lst;
    734                 $y=$lists[$x];
    735                 $pos=0;
    736                 $z=0;
    737                 $pos=0;$z=0;
    738                 if(!$premio and $key==$gruppo) $arvin[$x][$pos++]=$desliste[$lst];
    739                 else $arper[$x][$pos++]=$desliste[$lst];
    740                 $sql = "SELECT concat(substring(concat('0',t1.num_cand),-2),') ',t1.cognome,' ',substring(t1.nome from 1 for 1),'.') 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,t1.num_cand";
    741 $res_can = $dbi->prepare("$sql");
    742 $res_can->execute();
    743 
    744                 $num_candlst[$x]=$res_can->rowCount();
    745                 while(list($cand,$pre)=$res_can->fetch(PDO::FETCH_NUM)) {
    746                         $cifra[$x][$pos]=$y+$pre;
    747                         if(!$premio and $key==$gruppo)
    748                         $arvin[$x][$pos++]=$cand;
    749                         else
    750                         $arper[$x][$pos++]=$cand;
    751                 }
    752                 $listemin[$x]=$y;
    753                 $desliste[$x]=$descr;
    754                 $percliste[$x]="<br/>$y (".number_format($y*100/$validi,2)."%)";
    755         }
    756         $seggimin=array();
    757         echo "$mex";
    758         $ultimo='';
    759 
    760         $seggimin=calcoloseggi($listemin,$val,1);
    761         echo "$mex";#foreach ($seggimin as $lista=>$valc) echo $seggimin[$lista]." key:$lista -val:$valc<br/>";
    762         if(!$premio and $key==$gruppo)
     694                $listemin=array();
     695                $cifra=array();
     696                foreach($listagruppo as $lst=>$grp){
     697                        if($grp!=$key) continue;                       
     698                        $id_lista=$idlst[$lst];
     699                        $x=$lst;
     700                        $y=$lists[$x];
     701                        $pos=0;
     702                        $z=0;
     703                        $pos=0;$z=0;
     704                        if(!$premio and $key==$gruppo) $arvin[$x][$pos++]=$desliste[$lst];
     705                        else $arper[$x][$pos++]=$desliste[$lst];
     706                        $sql = "SELECT concat(substring(concat('0',t1.num_cand),-2),') ',t1.cognome,' ',substring(t1.nome from 1 for 1),'.') 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,t1.num_cand";
     707                        $res_can = $dbi->prepare("$sql");
     708                        $res_can->execute();
     709                        $num_candlst[$x]=$res_can->rowCount();
     710                        while(list($cand,$pre)=$res_can->fetch(PDO::FETCH_NUM)) {
     711                                $cifra[$x][$pos]=$y+$pre;
     712                                if(!$premio and $key==$gruppo)
     713                                $arvin[$x][$pos++]=$cand;
     714                                else
     715                                $arper[$x][$pos++]=$cand;
     716                        }
     717                        $listemin[$x]=$y;
     718                        $desliste[$x]=$descr;
     719                        $percliste[$x]="<br/>$y (".number_format($y*100/$validi,2)."%)";
     720                }
     721                $seggimin=array();
     722                echo "$mex";
     723                $ultimo='';
     724                $seggimin=calcoloseggi($listemin,$val,1);
     725                echo "$mex";
     726                if(!$premio and $key==$gruppo)
    763727                foreach ($seggimin as $lista=>$valc){
    764  $arper[$lista]=$arvin[$lista];
    765 }
    766 /*              for ($z=0;$z<$valc;$z++){
    767                         if ($z) $consel[]=array("","","",$arvin[$lista][($z+1)],$cifra[$lista][($z+1)],$quozienti[$lista][$z]);
    768                         else $consel[]=array($arvin[$lista][0],$percliste[$lista],$valc,$arvin[$lista][($z+1)],$cifra[$lista][($z+1)],$quozienti[$lista][$z]);
    769                 }
    770         }
    771                 $consel[]=array($arvin[$lista][0],"$PNE","",$arvin[$lista][($z+1)],$cifra[$lista][($z+1)],$quozienti[$lista][$z]);
    772         }//else{
    773 */
    774 
    775         if ($val and $key!=$gruppo and $consin) {$conselsin[]=array("$CSEC",$desgruppi[$key]); $arcansin[]=$desgruppi[$key];}
    776 foreach ($seggimin as $lista=>$val)
    777         if(isset($oldlstgrp[$lista]) and !isset($oldseggi[$lista])) {$oldseggi[$lista]=$val;
    778 }
     728                        $arper[$lista]=$arvin[$lista];
     729                }
     730                if ($val and $key!=$gruppo and $consin) {$conselsin[]=array("$CSEC",$desgruppi[$key]); $arcansin[]=$desgruppi[$key];}
     731                foreach ($seggimin as $lista=>$val)
     732                        if(isset($oldlstgrp[$lista]) and !isset($oldseggi[$lista])) {$oldseggi[$lista]=$val;
     733                }
    779734                if($val==0){
    780                 if($ultimo==''){
    781                         foreach($oldlists as $lst=>$vot)
    782                         {
    783 if (!isset($quozienti[$lst][($val)])) $quozienti[$lst][($val)]=$vot;
    784                                 if ($oldlstgrp[$lst]!= $key or !isset($oldseggi[$lst]) or $oldseggi[$lst]==0) continue;
    785                                 if($ultimo=='') $ultimo=$lst;
    786                                 if($quozienti[$ultimo][($val)]==$last[$lst])
     735                        if($ultimo==''){
     736                                foreach($oldlists as $lst=>$vot)
    787737                                {
     738                                        if (!isset($quozienti[$lst][($val)])) $quozienti[$lst][($val)]=$vot;
     739                                        if ($oldlstgrp[$lst]!= $key or !isset($oldseggi[$lst]) or $oldseggi[$lst]==0) continue;
     740                                        if($ultimo=='') $ultimo=$lst;
     741                                        if($quozienti[$ultimo][($val)]==$last[$lst])
     742                                        {
    788743                                                if($lists[$ultimo]==$lists[$lst] and $ultimo!=$lst) $mex="Per attribuire l'ultimo seggio Ú necessario un sorteggio tra la lista n. $ultimo e la lista n. $lst";
    789                                                 elseif($lists[$ultimo]>$lists[$lst]) {$ultimo=$lst;$mex="";}
    790                                 }
    791                                 if ($quozienti[$ultimo][($val)]> $last[$lst]) {$ultimo=$lst;$mex="";}
    792                         }$lst=$ultimo;
    793                 if($ultimo and $consin){
    794 #                       if($conselb[$ttl[($lst-1)]][2]>1) $conselb[$ttl[($lst-1)]][2]--;else $conselb[$ttl[($lst-1)]][2]='';
    795 #                       $daunset[]=$tt[($lst-1)];
    796                         if($conselb[$ttl[($lst)]][2]>1) $conselb[$ttl[($lst)]][2]--;else $conselb[$ttl[($lst)]][2]='';
    797                         $daunset[]=$tt[($lst)];
    798                         $conselsin[]=array("$CSEC",$desgruppi[$key]);
    799                         $arcansin[]=$desgruppi[$key];
    800                         }
    801                 }
    802         }
    803 #if($key!=$gruppo){
    804 ###############
    805 #foreach($collegate
    806         foreach ($seggimin as $lista=>$val){
    807                 if($ultimo==$lista and $key!=$gruppo and $consin) $val--;
    808         }
    809 ################
    810         foreach ($seggimin as $lista=>$val){
    811                 if($ultimo==$lista and $key!=$gruppo and $consin) $val--;
    812 
    813 
    814                 for ($z=0;$z<$val;$z++){
    815                         if ($z) $conselb[]=array("","","",$arper[$lista][($z+1)],$cifra[$lista][($z+1)],number_format($quozienti[$lista][$z],2));
    816                         else{
    817                         if(!isset($arper[$lista][($z+1)])) $arper[$lista][($z+1)]=0;
    818                         if(!isset($cifra[$lista][($z+1)])) $cifra[$lista][($z+1)]=0;
    819                         $conselb[]=array($arper[$lista][0],$percliste[$lista],$val,$arper[$lista][($z+1)],$cifra[$lista][($z+1)],number_format($quozienti[$lista][$z],2));
    820                         $ttl[$lista]=(count($conselb)-1);
    821 ########
    822 #               echo "<br>".$tt[$lista]." arper --- $gruppo --$ultimo--$key--".$arper[$lista][0];
    823                         }
    824                 }
    825         if (isset($oldlists[$lista]))
    826         {
    827                 $tt[$lista]=(count($conselb)-1);
    828                 if($z) $last[$lista]=$quozienti[$lista][($z-1)]; else $last[$lista]=0;
    829                
    830         }
    831         if($val){
    832                 if(!isset($arper[$lista][($z+1)])) $arper[$lista][($z+1)]=0;
    833                 if(!isset($cifra[$lista][($z+1)])) $cifra[$lista][($z+1)]=0;
    834                 if(!isset($quozienti[$lista][$z])) $quozienti[$lista][$z]=0;
    835                 $conselb[]=array($arper[$lista][0],"$PNE","",$arper[$lista][($z+1)],$cifra[$lista][($z+1)],number_format($quozienti[$lista][$z],2));
    836                 }
    837         }
    838 #       }//chiude if $key
     744                                                elseif($lists[$ultimo]>$lists[$lst]) {$ultimo=$lst;$mex="";}
     745                                        }
     746                                        if ($quozienti[$ultimo][($val)]> $last[$lst]) {$ultimo=$lst;$mex="";}
     747                                }
     748                                $lst=$ultimo;
     749                                if($ultimo and $consin){
     750                                        if($conselb[$ttl[($lst)]][2]>1) $conselb[$ttl[($lst)]][2]--;else $conselb[$ttl[($lst)]][2]='';
     751                                        $daunset[]=$tt[($lst)];
     752                                        $conselsin[]=array("$CSEC",$desgruppi[$key]);
     753                                        $arcansin[]=$desgruppi[$key];
     754                                }
     755                        }
     756                }
     757                foreach ($seggimin as $lista=>$val){
     758                        if($ultimo==$lista and $key!=$gruppo and $consin) $val--;
     759                }
     760                foreach ($seggimin as $lista=>$val){
     761                        if($ultimo==$lista and $key!=$gruppo and $consin) $val--;
     762                        for ($z=0;$z<$val;$z++){
     763                                if ($z) $conselb[]=array("","","",$arper[$lista][($z+1)],$cifra[$lista][($z+1)],number_format($quozienti[$lista][$z],2));
     764                                else{
     765                                        if(!isset($arper[$lista][($z+1)])) $arper[$lista][($z+1)]=0;
     766                                        if(!isset($cifra[$lista][($z+1)])) $cifra[$lista][($z+1)]=0;
     767                                        $conselb[]=array($arper[$lista][0],$percliste[$lista],$val,$arper[$lista][($z+1)],$cifra[$lista][($z+1)],number_format($quozienti[$lista][$z],2));
     768                                        $ttl[$lista]=(count($conselb)-1);
     769                                }
     770                        }
     771                        if (isset($oldlists[$lista]))
     772                        {
     773                                $tt[$lista]=(count($conselb)-1);
     774                                if($z) $last[$lista]=$quozienti[$lista][($z-1)]; else $last[$lista]=0;                         
     775                        }
     776                        if($val){
     777                                if(!isset($arper[$lista][($z+1)])) $arper[$lista][($z+1)]=0;
     778                                if(!isset($cifra[$lista][($z+1)])) $cifra[$lista][($z+1)]=0;
     779                                if(!isset($quozienti[$lista][$z])) $quozienti[$lista][$z]=0;
     780                                $conselb[]=array($arper[$lista][0],"$PNE","",$arper[$lista][($z+1)],$cifra[$lista][($z+1)],number_format($quozienti[$lista][$z],2));
     781                        }
     782                }
    839783        }//chiude foreach gruppomin
    840 #       }
    841784        echo "<table summary=\"Tabella dei consiglieri eletti\" class=\"table-docs\" cellspacing=\"0\" cellpadding=\"2\" border=\"1\" rules=\"all\">";
    842785        echo "<tr class=\"bggray\"><td scope=\"row\"><b>";
    843786        echo _SINDACO.": ".$desgruppi[$gruppo]."</b></td></tr></table>";
    844787        if(isset($daunset)){
    845         if ((sort($daunset,SORT_NUMERIC))==false) echo "Errore di programma!";
    846         ELSE {
    847                 $tmpda=array_reverse($daunset);
    848                 foreach($tmpda as $key=>$val) {
    849                         $conselb[$val][0]=$conselb[($val+1)][0];$conselb[$val][1]=$conselb[($val+1)][1];
    850                         unset($conselb[($val+1)]);
    851                         }
    852                 }
    853         }#foreach($conselb as $key=>$val) if($val[2]) echo "$x) ".$val[0]."--".$val[2]."<br/>"; else echo "passa".$x++;
     788                if ((sort($daunset,SORT_NUMERIC))==false) echo "Errore di programma!";
     789                ELSE {
     790                        $tmpda=array_reverse($daunset);
     791                        foreach($tmpda as $key=>$val) {
     792                                $conselb[$val][0]=$conselb[($val+1)][0];$conselb[$val][1]=$conselb[($val+1)][1];
     793                                unset($conselb[($val+1)]);
     794                        }
     795                }
     796        }
    854797        if (!$premio)
    855798        {
     
    865808                }
    866809        }
    867        
    868810        if (isset($conselsin)) foreach($conselsin as $key=>$val)
    869811        {
     
    880822                $consel[]=array($val[0],$val[1],$val[2],$val[3],$val[4],$val[5]);
    881823        }
    882        
    883 //      plotgraf($descrsind,$arlisdesv,$arlissegv,$arlisdesp,$arlissegp,$arcansin); // per grafico
    884824        stampalista($consel);
    885825        unset($_SESSION['ballo1']);unset($_SESSION['ballo2']);unset($_SESSION['grp1']);unset($_SESSION['grp2']);
    886826}
    887 // Grafico
    888 function plotgraf($descrsind,$arlisdes,$arlisseg,$arlisdesp,$arlissegp,$arcansin){
    889         //echo "sindaco: $descrsind<br/>";
    890 /*      foreach($arlisdes as $key=>$val){
    891                 echo "key:$key -- val:$val seggi:".$arlisseg[$key]."<br/>";
    892         }       
    893         echo "<br/><br/>";
    894         foreach($arlisdesp as $key=>$val){
    895                 echo "key:$key -- val:$val seggi:".$arlissegp[$key]."<br/>";
    896         }       */
    897         foreach($arlisdes as $key=>$val){
    898                 if($arlisseg[$key]=='1') $vocale="o"; else $vocale='';
    899 
    900         $lista[]="$val \n [  ".$arlisseg[$key]." seggi".$vocale."  ]"; 
    901         $seggin[]=$arlisseg[$key]." seggi".$vocale."";
    902         //echo "La lista $val ottiene ".$arlisseg[$key]." seggi.<br/>";
    903         }
    904         foreach($arcansin as $val) {
    905         $seggin[]="1 seggio";
    906         $arlisseg[]=1;
    907         $lista[]=$val ."\n [ 1 seggio ]" ;
    908     //echo "Il candidato sindaco $val e' eletto consigliere.<br/>";
    909 }
    910 $sindaco=urlencode($descrsind);
    911 
    912 $seggi=serialize($arlisseg);
    913 $seggi=urlencode($seggi);
    914 $seggin=serialize($seggin);
    915 $seggin=urlencode($seggin);
    916 $lista=serialize($lista);
    917 $lista=urlencode($lista);
    918 $title="Proiezione Composizione Consiglio Comunale";
    919 echo "<table><tr><td>
    920                 <img src='modules/Elezioni/grafici/consiglio.php?title=$title&amp;seggi=$seggi&amp;seggin=$seggin&amp;lista=$lista&amp;sindaco=$sindaco'  alt=\"Grafico\" /></td></tr></table>";
    921 
    922 
    923 
    924 }
     827
    925828?>
Note: See TracChangeset for help on using the changeset viewer.