source: trunk/client/modules/Elezioni/consiglieri.php@ 424

Last change on this file since 424 was 424, checked in by roby, 5 months ago
  • ADMIN

-- Inserito il file admin/variabili.php che contiene le variabili per personalizzare il software
-- Nuovo sistema di backup, permette di avere una installazione di produzione ed una che può essere facilmente aggiornata con i dati della prima
-- Modificato il file dei controlli
-- Modificata la scheda Tabella dei totali

  • CLIENT

-- Inserito il file client/variabili.php che contiene le variabili per personalizzare il software
-- Modificata per compatibilità con alcune installazioni la funzione di assegnazione dei seggi
-- Modificato il colore dei link per il tema -altro-

File size: 49.3 KB
Line 
1<?php
2/************************************************************************/
3/* Eleonline - Raccolta e diffusione dei dati elettorali */
4/* by Roberto Gigli & Luciano Apolito */
5/* http://www.eleonline.it */
6/* info@eleonline.it luciano@aniene.net rgigli@libero.it */
7/************************************************************************/
8/* Modulo previsione seggi */
9/* Amministrazione */
10/************************************************************************/
11if (!defined('MODULE_FILE')) {
12 die ("You can't access this file directly...");
13}
14# controllo
15if ($hondt<=0){ Header("Location: index.php");
16 die();
17}
18$param=strtolower($_SERVER['REQUEST_METHOD']) == 'get' ? $_GET : $_POST;
19if (isset($param['gruppo'])) $gruppo=intval($param['gruppo']); else $gruppo='';
20if (isset($param['numgruppo'])) $numgruppo=intval($param['numgruppo']); else $numgruppo='';
21if (isset($param['listecol'])) $listecol=intval($param['listecol']); else $listecol=0;
22$sql = "select id_conf,id_fascia from ".$prefix."_ele_cons_comune where id_cons='$id_cons'";
23$result = $dbi->prepare("$sql");
24$result->execute();
25list($id_conf,$fascia) = $result->fetch(PDO::FETCH_NUM);
26$sql = "SELECT limite,consin,infpremio,supsbarramento,suppremio,listinfsbar,listinfconta,listsupconta,supminpremio,infminpremio,inffisso from ".$prefix."_ele_conf where id_conf='$id_conf'";
27$res = $dbi->prepare("$sql");
28$res->execute();
29list($limite,$consin,$infpremio,$supsbarramento,$suppremio,$listinfsbar,$listinfconta,$listsupconta,$supminpremio,$infminpremio,$inffisso) = $res->fetch(PDO::FETCH_NUM);
30$numcons=0;
31echo "<table><tr><td align=\"center\">"._PROIEZCONS."</td></tr></table>";
32
33
34function consiglio(){
35global $param,$id_cons_gen, $dbi, $prefix, $id_comune, $gruppo, $numgruppo, $listecol, $id_comune, $limite,$numcons,$id_conf,$fascia,$id_cons,$validi;
36$collegate= array();
37$collperd= array();
38$x=1;
39$primoturno=0;
40while (isset($param['num_lista'.$x])) {
41 if ($param['num_lista'.$x]==$gruppo) array_push($collegate,$_SESSION['num_lista'.$x]);
42# elseif ($param['num_lista'.$x]!=0) array_push($collperd,$_SESSION['num_lista'.$x]);
43 $x++;
44}
45$sql = "SELECT t1.tipo_cons,t2.id_cons,t2.id_fascia,t2.id_conf FROM ".$prefix."_ele_consultazione as t1, ".$prefix."_ele_cons_comune as t2 where t1.id_cons_gen=t2.id_cons_gen and t2.id_cons_gen='$id_cons_gen' and t2.id_comune='$id_comune'";
46$res = $dbi->prepare("$sql");
47$res->execute();
48
49if ($res->rowCount()){
50 list($tipo_cons,$id_cons,$fascia,$conf) = $res->fetch(PDO::FETCH_NUM);
51 $sql = "select capoluogo from ".$prefix."_ele_comuni where id_comune='$id_comune'";
52$result = $dbi->prepare("$sql");
53$result->execute();
54
55 list($capoluogo) = $result->fetch(PDO::FETCH_NUM);
56 $sql = "select inffisso,fascia_capoluogo from ".$prefix."_ele_conf where id_conf='$conf'";
57$result = $dbi->prepare("$sql");
58$result->execute();
59
60 list($inffisso,$fascia2) = $result->fetch(PDO::FETCH_NUM);
61 if($fascia<$fascia2 and $capoluogo) $fascia=$fascia2;
62
63 $sql = "SELECT seggi from ".$prefix."_ele_fasce where id_fascia='$fascia' and id_conf=$id_conf";
64$result = $dbi->prepare("$sql");
65$result->execute();
66
67 list($numcons) = $result->fetch(PDO::FETCH_NUM);
68$sql = "SELECT id_cand, sum(voti) from ".$prefix."_ele_voti_candidati where id_cons='$id_cons' group by id_cand";
69$res_val = $dbi->prepare("$sql");
70$res_val->execute();
71
72$num_cons= $res_val->rowCount();
73if ($num_cons<$numcons){
74 echo "Il numero di candidati al consiglio inseriti con preferenza ($num_cons) e' inferiore al numero di seggi previsti ($numcons). Non e' possibile procedere con il calcolo";
75 include("footer.php");
76 die();
77}
78 if (!$gruppo){
79 $sql = "SELECT sum(validi) from ".$prefix."_ele_sezioni where id_cons='$id_cons'";
80$res_val = $dbi->prepare("$sql");
81$res_val->execute();
82
83 list($validi) = $res_val->fetch(PDO::FETCH_NUM);
84 $sql = "SELECT t1.num_gruppo,sum(t2.voti) as voti from ".$prefix."_ele_gruppo as t1, ".$prefix."_ele_voti_gruppo as t2 where t1.id_cons='$id_cons' and t1.id_gruppo=t2.id_gruppo group by t1.num_gruppo order by voti desc limit 0,2";
85$res_lis = $dbi->prepare("$sql");
86$res_lis->execute();
87
88 $test=0;$flag=0;
89 while (list($num_gruppo,$voti)= $res_lis->fetch(PDO::FETCH_NUM)){
90 if ($voti>($validi/2)) {$gruppo=$num_gruppo;$primoturno=1;}
91 if ($voti==$test) $flag=1; else $test=$voti;
92 }
93 }
94 if ($fascia<=$limite){
95 $sql = "SELECT t1.num_gruppo,sum(t2.voti) as voti from ".$prefix."_ele_gruppo as t1, ".$prefix."_ele_voti_gruppo as t2 where t1.id_cons='$id_cons' and t1.id_gruppo=t2.id_gruppo group by t1.num_gruppo order by voti desc limit 0,2";
96 $res_lis = $dbi->prepare("$sql");
97 $res_lis->execute();
98 if($res_lis->rowCount()==1 or $inffisso)
99 {
100 list($num_gruppo1,$voti1)= $res_lis->fetch(PDO::FETCH_NUM);
101 $voti2=0;
102 $sql = "SELECT sum(maschi+femmine) from ".$prefix."_ele_sezioni where id_cons='$id_cons'";
103 $res_val = $dbi->prepare("$sql");
104 $res_val->execute();
105 list($elettori)=$res_val->fetch(PDO::FETCH_NUM);
106 $sql = "select sum(voti_complessivi) from ".$prefix."_ele_voti_parziale where id_cons='$id_cons' group by data,orario order by data desc, orario desc limit 0,1";
107 $res_val = $dbi->prepare("$sql");
108 $res_val->execute();
109 list($votanti)=$res_val->fetch(PDO::FETCH_NUM);
110 if($votanti<($elettori/2) || $voti1<($votanti/2))
111 {
112 echo "<div style=\"text-align:center;\"><br><br>Il numero di votanti Ú inferiore al 50%, non Ú possibile assegnare i seggi. <br>La consultazione Ú nulla</div>";
113 include("footer.php");
114 die();
115 }
116 }else{
117 list($num_gruppo1,$voti1)= $res_lis->fetch(PDO::FETCH_NUM);
118 list($num_gruppo2,$voti2)= $res_lis->fetch(PDO::FETCH_NUM);
119 }
120 if ($voti1>$voti2)
121 $numgruppo=$num_gruppo1;
122 else
123 $numgruppo=$num_gruppo2;
124 }
125 if ($fascia<=$limite and $numgruppo) {
126 if($inffisso)
127 consmin4($fascia,$numgruppo);
128 else
129 consmin($fascia,$numgruppo);
130 }
131 elseif ($gruppo>0) conssup($fascia,$gruppo,$collegate,$collperd,$primoturno);
132 elseif ($numgruppo>0){
133 $sqllis = "SELECT t1.id_lista,t1.num_lista,t1.descrizione,t1.id_gruppo from ".$prefix."_ele_lista as t1, ".$prefix."_ele_gruppo as t2 where t1.id_cons='$id_cons' and t1.id_gruppo=t2.id_gruppo and t2.num_gruppo not in (".$_SESSION['ballo1'].",".$_SESSION['ballo2'].")";
134 $res_lis = $dbi->prepare("$sqllis");
135 $res_lis->execute();
136 $yy=$res_lis->rowCount();
137 $sql = "select sum(voti) from ".$prefix."_ele_voti_lista where id_cons='$id_cons'";
138 $res_voti = $dbi->prepare("$sql");
139 $res_voti->execute();
140 list($validilista) = $res_voti->fetch(PDO::FETCH_NUM);
141 if ($yy){
142 while(list($id_lista,$num_lista,$descr,$pgrup) = $res_lis->fetch(PDO::FETCH_NUM)) {
143 $sql = "select sum(voti) from ".$prefix."_ele_voti_lista where id_lista='$id_lista'";
144 $res_voti = $dbi->prepare("$sql");
145 $res_voti->execute();
146 list($votilista) = $res_voti->fetch(PDO::FETCH_NUM);
147 if(!isset($voti[$pgrup])) $voti[$pgrup]=0;
148 $voti[$pgrup]+=$votilista;
149 }
150 $togli=array();
151 foreach ($voti as $key=>$val){
152 if($val<($validilista*3/100))
153 $togli[]=$key;
154 }
155 foreach($togli as $key=>$val)
156 unset($voti[$val]); ##################################################
157 $res_lis = $dbi->prepare("$sqllis");
158 $res_lis->execute();
159 echo "<br/>";
160 echo "<form id=\"gruppo\" action=\"modules.php\">";
161 echo "<table cellspacing=\"0\" cellpadding=\"2\" border=\"1\"><tr class=\"bggray\"><td colspan=\"4\">"._COLLEGAMENTI."</td></tr><tr class=\"bggray\"><td>";
162 echo "<input type=\"hidden\" name=\"op\" value=\"consiglieri\"/>";
163 echo "<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\"/>";
164 echo "<input type=\"hidden\" name=\"id_comune\" value=\"$id_comune\"/></td>";
165
166 echo "<td><b>".$_SESSION['grp1']."</b></td>";
167 echo "<td><b>".$_SESSION['grp2']."</b></td>";
168 echo "<td><b>"._NONCOLLE."</b></td></tr>";
169
170 $z=1;
171 while(list($id_lista,$num_lista,$descr,$pgrup) = $res_lis->fetch(PDO::FETCH_NUM)) {
172 if(!isset($voti[$pgrup])) continue;
173 $x=$_SESSION['ballo1'];
174 echo "<tr><td>$descr</td><td><input type=\"radio\" name=\"num_lista$z\" value=\"$x\"/></td>";
175 $x=$_SESSION['ballo2'];
176 $_SESSION['num_lista'.$z]=$num_lista;
177 echo "<td><input type=\"radio\" name=\"num_lista$z\" value=\"$x\"/></td>";
178 echo "<td><input type=\"radio\" name=\"num_lista$z\" value=\"0\" checked=\"checked\"/></td></tr>";
179 $z++;
180 }
181
182 echo "<tr><td colspan=\"4\"><input type=\"hidden\" name=\"listecol\" value=\"$x\"/><input type=\"hidden\" name=\"gruppo\" value=\"$numgruppo\"/>";
183 echo "<input type=\"submit\" name=\"invia\" value=\""._OK."\"/></td></tr></table></form>";
184 }else conssup($fascia,$numgruppo,$collegate,$collperd,$primoturno);
185 }else {
186 echo "<br/>";
187 echo "<form id=\"numgruppo\" action=\"modules.php\">";
188 echo "<table><tr class=\"bggray\"><td>"._SCELTASIN.":</td><td align=\"left\">";
189 echo "<input type=\"hidden\" name=\"op\" value=\"consiglieri\"/>";
190 echo "<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\"/>";
191 echo "<input type=\"hidden\" name=\"id_comune\" value=\"$id_comune\"/>";
192 $sql = "SELECT t1.id_gruppo,t1.num_gruppo,t1.descrizione, sum(t2.voti) as pref FROM ".$prefix."_ele_gruppo as t1, ".$prefix."_ele_voti_gruppo as t2 where t1.id_gruppo=t2.id_gruppo and t1.id_cons='$id_cons' group by t1.id_gruppo,t1.num_gruppo,t1.descrizione order by pref desc limit 0,2";
193 $res = $dbi->prepare("$sql");
194 $res->execute();
195
196 while(list($id_gruppo,$num_gruppo, $descr_gruppo,$pref) = $res->fetch(PDO::FETCH_NUM)) {
197 if (!isset($_SESSION['ballo1'])) {
198 $_SESSION['ballo1']=$num_gruppo;
199 $_SESSION['grp1']=$descr_gruppo;
200 $_SESSION['idgrp1']=$id_gruppo;
201 }else{
202 $_SESSION['ballo2']=$num_gruppo;
203 $_SESSION['grp2']=$descr_gruppo;
204 $_SESSION['idgrp2']=$id_gruppo;
205 }
206 echo "<input type=\"radio\" name=\"numgruppo\" value=\"$num_gruppo\"/>$descr_gruppo<br/>";
207 }
208 echo "</td>";
209 echo "<td><input type=\"submit\" name=\"invia\" value=\""._OK."\"/></td></tr></table></form>";
210
211 }
212 }
213}
214
215function consmin4($fascia,$grp) {
216global $id_cons, $prefix,$dbi,$num_candlst,$PNE,$CSEC,$validi,$consin,$numcons,$inffisso;
217global $infpremio,$fisso,$sincons, $votol;
218if (!isset($fisso)) $fisso=0; #se fisso=1 il premio di maggioranza Ú fisso
219if (isset($votol)) {$votolista=$votol; $fisso=$votol;} #se votolista=1 c'e' voto di lista
220if (!isset($sincons)) $sincons=0; #se sincons=1 il sindaco eletto occupa un posto di consigliere
221####################### DA TOGLIERE
222$sql="SELECT t1.num_gruppo,sum(t2.voti) as voti from ".$prefix."_ele_gruppo as t1, ".$prefix."_ele_voti_gruppo as t2 where t1.id_cons='$id_cons' and t1.id_gruppo=t2.id_gruppo group by t1.num_gruppo order by voti desc";
223#$sql="SELECT t1.num_gruppo,sum(t2.voti) as voti from ".$prefix."_ele_gruppo as t1, ".$prefix."_ele_voti_gruppo as t2 where t1.id_cons='$id_cons' and t1.id_gruppo=t2.id_gruppo group by t1.num_gruppo order by voti desc limit 0,2";
224$res = $dbi->prepare("$sql");
225$res->execute();
226$numgruppi=$res->rowCount();
227#######################
228
229
230$sql = "SELECT sum(validi_lista+contestati_lista) from ".$prefix."_ele_sezioni where id_cons='$id_cons'";
231$res = $dbi->prepare("$sql");
232$res->execute();
233list($valista)=$res->fetch(PDO::FETCH_NUM);
234$PNE=_PRIMONON;
235$CSEC=_SINDCONS;
236$sorteggio=0;
237$sindel=0;
238$num_candlst=array();
239$listagruppo=array();
240#funzione di calcolo per comuni fino a 15.000 abitanti (più esattamente fino al valore di $limite)
241$grpcond='';
242if($grp) $grpcond="and t1.num_gruppo='$grp'";
243if ($sincons) $numcons--;
244#$numcons--;
245#carica numero di liste e voti, i voti sono quelli del gruppo se non c'e' voto di lista
246$seggimag=array();
247##########
248# $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_gruppo as t3 where t1.id_cons='$id_cons' and t1.id_gruppo=t2.id_gruppo and t1.id_gruppo=t3.id_gruppo group by t1.descrizione, t1.num_gruppo,t2.num_lista,t2.descrizione order by voti desc limit 0,2";
249
250 ################
251 #seleziona il sindaco (gruppo con più voti) e lista collegata
252# $sql = "SELECT t1.descrizione,t1.num_gruppo,sum(t3.voti) as voti from ".$prefix."_ele_gruppo as t1, ".$prefix."_ele_voti_gruppo as t3 where t1.id_cons='$id_cons' and t1.id_gruppo=t3.id_gruppo group by t1.descrizione, t1.num_gruppo order by voti desc limit 0,2";
253 $sql = "SELECT t1.descrizione,t1.num_gruppo,sum(t3.voti) as voti from ".$prefix."_ele_gruppo as t1, ".$prefix."_ele_voti_gruppo as t3 where t1.id_cons='$id_cons' and t1.id_gruppo=t3.id_gruppo group by t1.descrizione, t1.num_gruppo order by voti desc";
254 $res_per = $dbi->prepare("$sql");
255 $res_per->execute();
256 $votig=0;
257 $conselcsne=array();
258 $desgruppi=array();
259 $arlismag=array();
260 $arlismin=array();
261 $lisvin=0;
262 $gruvin=0;
263 $grumin=0;
264 $votigrumin=0;
265 #Il controllo va spostato nella funzione consiglio() -- riferimento riga 124
266 while(list($descr,$num_gruppo,$voti)= $res_per->fetch(PDO::FETCH_NUM))
267 {
268# $sql = "SELECT t2.id_lista,t2.num_lista,t2.descrizione,sum(t3.voti) from ".$prefix."_ele_lista as t2, ".$prefix."_ele_voti_lista as t3 where t2.id_cons='$id_cons' and t2.id_lista=t3.id_lista and t2.num_gruppo=$num_gruppo group by t2.id_lista,t2.num_lista,t2.descrizione order by voti desc limit 0,1";
269 $desgruppi[$num_gruppo]=$descr;
270 if($voti>=($votig-1)) # and (!$grp or $grp==$num_gruppo)
271 {
272 if($grp and $grp!=$num_gruppo)
273 { #confronta i voti delle liste collegate ai candidati con stesso numero di voti e assegna il seggio a quello le cui liste hanno più voti
274 $sql = "SELECT t2.num_gruppo,sum(t3.voti) from ".$prefix."_ele_lista as t2, ".$prefix."_ele_voti_lista as t3 where t2.id_cons='$id_cons' and t2.id_lista=t3.id_lista and (t2.num_gruppo=$num_gruppo or t2.num_gruppo=$grp) group by t2.num_gruppo order by voti desc";
275 $res_lis = $dbi->prepare("$sql");
276 $res_lis->execute();
277 $votillrif=0;
278 while(list($num_grp,$votill)= $res_lis->fetch(PDO::FETCH_NUM))
279 {
280 if($votill>$votillrif)
281 {
282 $gruvin=$num_grp;
283 $votig=$voti+1;
284 $votillrif=$votill;
285 $grp=$num_grp;
286 }
287 if($grp!=$num_grp)
288 {
289 $sindel=1;
290 $votigrumin=$voti;
291 $conselcsne[0]=array("$CSEC","","",$desgruppi[$num_grp],"","");
292 $grumin=$num_grp;
293 }
294
295 }
296 }else{
297 $gruvin=$num_gruppo;
298 $votig=$voti;
299 if ($grp)
300 $votig++;
301 $votigrumin=$voti;
302 }
303 }
304 elseif($votigrumin and $voti==$votigrumin)
305 { #confronta i voti delle liste collegate ai candidati con stesso numero di voti e assegna il seggio a quello le cui liste hanno più voti
306 $sql = "SELECT t2.num_gruppo,sum(t3.voti) from ".$prefix."_ele_lista as t2, ".$prefix."_ele_voti_lista as t3 where t2.id_cons='$id_cons' and t2.id_lista=t3.id_lista group by t2.num_gruppo order by voti desc";
307 $res_lis = $dbi->prepare("$sql");
308 $res_lis->execute();
309 $votillrif=0;
310 while(list($num_grpmin,$votill)= $res_lis->fetch(PDO::FETCH_NUM))
311 if($voti>=$validi/5 and $votill>$votillrif) {$sindel=1; $votigrumin=$voti; $conselcsne[0]=array("$CSEC","","",$descr,"",""); $grumin=$num_gruppo;}
312 }else{
313 if($voti>=$validi/5 and !$sindel) {$sindel=1; $conselcsne[0]=array("$CSEC","","",$descr,"",""); }
314 $votigrumin=$voti;
315 $grumin=$num_gruppo;
316 }
317 if(!isset($conselcsne[0][0])) $conselcsne[0]=array("<br><b>Consiglieri di minoranza</b>","","","","","");
318#######
319
320 }
321#####
322 $sql = "SELECT t1.descrizione,t1.num_gruppo,sum(t3.voti) as voti from ".$prefix."_ele_gruppo as t1, ".$prefix."_ele_voti_gruppo as t3 where t1.id_cons='$id_cons' and t1.id_gruppo=t3.id_gruppo and t1.num_gruppo=$grp or t1.num_gruppo=$grumin group by t1.descrizione, t1.num_gruppo order by voti desc";
323 $res_per = $dbi->prepare("$sql");
324 $res_per->execute();
325 while(list($descr,$num_gruppo,$voti)= $res_per->fetch(PDO::FETCH_NUM))
326 {
327 $sql = "SELECT t2.id_lista,t2.num_lista,t2.descrizione,sum(t3.voti) from ".$prefix."_ele_lista as t2, ".$prefix."_ele_voti_lista as t3 where t2.id_cons='$id_cons' and t2.id_lista=t3.id_lista and t2.num_gruppo=$num_gruppo group by t2.id_lista,t2.num_lista,t2.descrizione order by voti desc";
328 $res_lis = $dbi->prepare("$sql");
329 $res_lis->execute();
330 while(list($id_lista1,$num_lista,$descr_lista,$votil)= $res_lis->fetch(PDO::FETCH_NUM))
331 {
332 $listagruppo[$num_lista]=$num_gruppo;
333 if($grp==$num_gruppo)
334 {
335 $arlismag[$num_gruppo][]=$num_lista;
336 if(!$lisvin ) {$lisvin=$num_lista; }
337 }else{
338 $arlismin[$num_gruppo][]=$num_lista;
339 }
340 }
341 }
342#####
343 #seleziona la lista (o liste) con più voti
344 $sql = "SELECT t1.descrizione, t2.id_lista,t2.num_lista, t1.num_gruppo, sum(t2.voti) as voti from ".$prefix."_ele_voti_lista as t2 left join ".$prefix."_ele_lista as t1 on t1.id_lista=t2.id_lista where t2.id_cons='$id_cons' and (t1.num_gruppo=$grp or t1.num_gruppo=$grumin) group by t2.id_lista,t2.num_lista,t1.num_gruppo, t1.descrizione order by voti desc";
345 $res_per = $dbi->prepare("$sql");
346 $res_per->execute();
347 $seggi=array();
348 $idlst= array();
349 $desliste=array();
350 $lists=array();
351# $votimax=0;
352 $contalst=0;
353 $mag=intval($valista/2)+1;
354 $lim5=intval($validi/20);
355 $varmag=0;
356 $prevoti=0;
357 $lav=0;
358#aggiungo $num_gruppo per creare due array, uno per le liste di maggioranza e uno per la minoranza, le liste che non raggiungono il 5% vengono escluse
359 while(list($descr_lista,$id_lista2,$num_lista,$num_gruppo,$voti)= $res_per->fetch(PDO::FETCH_NUM)){
360 if($voti<$prevoti)
361 if($num_lista!=$lisvin)
362 {
363 if($lav) break;
364 else continue;
365 }
366 if($voti<=$lim5) break;
367 if($voti>=$mag) {
368 $desliste[$num_lista]=$num_lista.") ".$descr_lista;
369 $quozienti[$num_lista]=$voti;
370 $lists[$num_lista]=$voti;
371 $idlst[$num_lista]=$id_lista2;
372 if($num_lista===$lisvin) {
373 $seggi[$num_lista]=number_format($numcons/3*2);
374 $varmag=1;
375 continue;
376 }else{
377 $seggimin[$num_lista]=number_format($numcons*0.6,0);
378 $seggi[$lisvin]=number_format($numcons*0.4,0);
379 $prevoti=$voti;
380 $varmag=1;
381 $contalst++;
382 continue;
383 }
384 }else{
385 if($num_lista!=$lisvin) $contalst++;
386 $quozienti[$num_lista]=$voti;
387 $desliste[$num_lista]=$num_lista.") ".$descr_lista;
388 $lists[$num_lista]=$voti;
389 $idlst[$num_lista]=$id_lista2;
390 if($num_lista==$lisvin and !$varmag)
391 $seggi[$num_lista]=number_format($numcons/3*2);
392 elseif($num_lista!=$lisvin)
393 $seggimin[$num_lista]=number_format($numcons/3);
394 }
395 if($num_lista!=$lisvin) $prevoti=$voti;
396 else $lav=1;
397 }
398 if(!isset($seggi[$lisvin])) $seggi[$lisvin]=number_format($numcons/3*2,0);
399$consel=array();
400$conselmin=array();
401$consel[]=array(_LISTA,_VOTI,_SEGGI,_CANDIDATO,_CIFRAELE,_QUOZIENTI);
402foreach ($idlst as $lista=>$id_lista){
403 $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,descr";
404 $res_can = $dbi->prepare("$sql");
405 $res_can->execute();
406 $num_candlst[$lista]=$res_can->rowCount();
407 $pos=0;
408 while(list($cand,$pre)=$res_can->fetch(PDO::FETCH_NUM)){
409 if(!isset($lists[$lista])) $lists[$lista]=0;
410 $cifra[$lista][$pos]=$lists[$lista]+$pre;
411 $arvin[$lista][$pos++]=$cand;
412 }
413}
414 if(isset($mex))
415 echo "$mex";
416 foreach ($seggi as $lista=>$val){
417 for ($z=0;$z<$val;$z++){
418 if ($z) $consel[]=array("","","",$arvin[$lista][($z)],$cifra[$lista][($z)],number_format($quozienti[$lista]/($z+1),2,',','.'));
419 else $consel[]=array($desliste[$lista],$lists[$lista],$val,$arvin[$lista][($z)],$cifra[$lista][($z)],number_format($quozienti[$lista]/($z+1),2,',','.'));
420 }
421 }
422 if($arvin[$lista][($z)]) $consel[]=array($desliste[$lista],"$PNE","",$arvin[$lista][($z)],$cifra[$lista][($z)],number_format($quozienti[$lista]/($z+1),2,',','.'));
423 $assegnato=0;
424 $sorteggio=0;
425 foreach ($seggimin as $lista=>$val){
426 if ($consin and $val>0 and $sindel){
427 $val--;
428 }
429 $val=number_format($val/$contalst);
430 if($val%$contalst) $sorteggio=1;
431 for ($z=0;$z<$val;$z++){
432 if ($z) $conselmin[]=array("","","",$arvin[$lista][($z)],$cifra[$lista][($z)],number_format($quozienti[$lista]/($z+1),2,',','.'));
433 else $conselmin[]=array($desliste[$lista],$lists[$lista],$val,$arvin[$lista][($z)],$cifra[$lista][($z)],number_format($quozienti[$lista]/($z+1),2,',','.'));
434 }
435 if($arvin[$lista][($z)]) $conselmin[]=array($desliste[$lista],"$PNE","",$arvin[$lista][($z)],$cifra[$lista][($z)],number_format($quozienti[$lista]/($z+1),2,',','.'));
436 }
437 foreach($conselcsne as $key=>$val)
438 {
439 $consel[]=array($val[0],$val[3]);
440 }
441 foreach($conselmin as $key=>$val)
442 {
443 $consel[]=array($val[0],$val[1],$val[2],$val[3],$val[4],$val[5]);
444 }
445
446
447# echo "<br> lisvin: $lisvin";
448 echo "<table summary=\"Tabella dei consiglieri eletti\" class=\"table-docs\" cellspacing=\"0\" cellpadding=\"2\" border=\"1\" rules=\"all\">";
449 echo "<tr class=\"bggray\"><td scope=\"row\">";
450 echo _SINDACO.": ".$desgruppi[$listagruppo[$lisvin]]."</td></tr></table>";
451 stampalista($consel);
452}
453#####################
454
455function consmin($fascia,$grp) {
456global $id_cons, $prefix,$dbi,$num_candlst,$quozienti,$PNE,$CSEC,$consin,$numcons,$inffisso;
457global $infpremio,$fisso,$sincons, $votol;
458if (!isset($fisso)) $fisso=0; #se fisso=1 il premio di maggioranza Ú fisso
459if (isset($votol)) {$votolista=$votol; $fisso=$votol;} #se votolista=1 c'e' voto di lista
460if (!isset($sincons)) $sincons=0; #se sincons=1 il sindaco eletto occupa un posto di consigliere
461$sql="SELECT t1.num_gruppo,sum(t2.voti) as voti from ".$prefix."_ele_gruppo as t1, ".$prefix."_ele_voti_gruppo as t2 where t1.id_cons='$id_cons' and t1.id_gruppo=t2.id_gruppo group by t1.num_gruppo order by voti desc limit 0,2";
462$res = $dbi->prepare("$sql");
463$res->execute();
464$numgruppi=$res->rowCount();
465$PNE=_PRIMONON;
466$CSEC=_SINDCONS;
467$sorteggio=0;
468$num_candlst=array();
469#funzione di calcolo per comuni fino a 15.000 abitanti (più esattamente fino al valore di $limite)
470
471if ($sincons) $numcons--;
472#$numcons--;
473$consel=array();
474$conselcsne=array();
475$conselmin=array();
476//$consel[]=array("Lista","Voti","Seggi","Nominativo","Cifra Elettorale","Quoziente");
477$consel[]=array(_LISTA,_VOTI,_SEGGI,_CANDIDATO,_CIFRAELE,_QUOZIENTI);
478#carica numero di liste e voti, i voti sono quelli del gruppo se non c'e' voto di lista
479if($inffisso=='1')
480 $sql = "SELECT sum(validi+contestati) from ".$prefix."_ele_sezioni where id_cons='$id_cons'";
481elseif($votolista=='0')
482 $sql = "SELECT sum(validi) from ".$prefix."_ele_sezioni where id_cons='$id_cons'";
483else
484 $sql = "SELECT sum(voti) from ".$prefix."_ele_voti_lista where id_cons='$id_cons'";
485$res_val = $dbi->prepare("$sql");
486$res_val->execute();
487list($validi) = $res_val->fetch(PDO::FETCH_NUM);
488#se votolista==1, Ú abilitato il voto di lista ed Ú quello su cui si calcola l'assegnazione dei seggi
489if ($fisso==1){
490 #seleziona il sindaco (gruppo con più voti) e lista collegata
491 $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_gruppo as t3 where t1.id_cons='$id_cons' and t1.id_gruppo=t2.id_gruppo and t1.id_gruppo=t3.id_gruppo group by t1.descrizione, t1.num_gruppo,t2.id_lista,t2.num_lista,t2.descrizione order by voti desc limit 0,1";
492 $res_per = $dbi->prepare("$sql");
493 $res_per->execute();
494 list($descr,$num_gruppo,$id_lista1,$num_lista,$descr_lista,$voti)= $res_per->fetch(PDO::FETCH_NUM);
495 #seleziona la lista di minoranza con più voti
496 $sql = "SELECT t2.id_lista, sum(t2.voti) as voti from ".$prefix."_ele_voti_lista as t2 where t2.id_cons='$id_cons' and t2.id_lista!='$id_lista1' group by t2.id_lista order by voti desc limit 0,1";
497 $res_per = $dbi->prepare("$sql");
498 $res_per->execute();
499 list($id_lista2,$voti)= $res_per->fetch(PDO::FETCH_NUM);
500 #e la lista di minoranza
501 $ordine= $id_lista1>$id_lista2 ? "desc":"";
502 $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 (t2.id_lista='$id_lista1' or t2.id_lista='$id_lista2') 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 t2.id_lista $ordine";
503 $res_per = $dbi->prepare("$sql");
504 $res_per->execute();
505}else{
506 $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_gruppo as t3 where t1.id_cons='$id_cons' and t1.id_gruppo=t2.id_gruppo and t1.id_gruppo=t3.id_gruppo group by t1.descrizione,t1.num_gruppo,t2.id_lista,t2.num_lista,t2.descrizione order by voti desc";
507 $res_per = $dbi->prepare("$sql");
508 $res_per->execute();
509}
510$groups=array();
511$seggimag=array();
512$premio=0;
513$x=0;
514#carica l'array dei gruppi e della cifra di gruppo
515while (list($descr,$num_gruppo,$id_lista,$num_lista,$descr_lista,$voti)= $res_per->fetch(PDO::FETCH_NUM)){
516 $desgruppi[$num_gruppo]=$descr;
517 $desliste[$num_lista]=$num_lista.") ".$descr_lista;
518 $idlst[$num_lista]=$id_lista;
519 $listagruppo[$num_lista]=$num_gruppo;
520 $lists[$num_lista]=$voti;
521 if ($grp){
522 if ($grp!=$num_gruppo) {$groups[($num_gruppo)]=$voti;$listemin[$num_lista]=$voti;}
523 else {$gruppo[($num_gruppo)]=$voti;$listemag[$num_lista]=$voti;$lisvin=$num_lista;}
524 }else{
525 if ($x) {$groups[($num_gruppo)]=$voti;$listemin[$num_lista]=$voti;}
526 else {$gruppo[($num_gruppo)]=$voti;$listemag[$num_lista]=$voti;$lisvin=$num_lista;}
527 }
528 $x++;
529 }#controllo del premio di maggioranza
530 // if ($gruppo[$listagruppo[$lisvin]]>($validi*2/3))
531 if($numgruppi==1) $fisso=1;
532 if ($gruppo[$listagruppo[$lisvin]]>($validi*$infpremio/100) and $fisso==1)
533 {
534 $seggimag[$lisvin]=number_format($numcons*($gruppo[$listagruppo[$lisvin]]*100/$validi)/100);
535 ##echo "<br> seggimag:".$seggimag[$lisvin];
536 $num_cons=number_format($numcons-$seggimag[$lisvin]);
537 # $num_cons=$numcons;
538 } else {
539// $seggimag[$lisvin]=number_format($numcons*2/3);
540// $num_cons=number_format($numcons/3);
541 $seggimag[$lisvin]=number_format($numcons*$infpremio/100);
542 $num_cons=number_format($numcons-$seggimag[$lisvin]);
543 }
544 foreach ($listagruppo as $lista=>$val){
545 $id_lista=$idlst[$lista];
546 $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,descr";
547 $res_can = $dbi->prepare("$sql");
548 $res_can->execute();
549 $num_candlst[$lista]=$res_can->rowCount();
550 $pos=0;
551 while(list($cand,$pre)=$res_can->fetch(PDO::FETCH_NUM)){
552 if(!isset($lists[$lista])) $lists[$lista]=0;
553 $cifra[$lista][$pos]=$lists[$lista]+$pre;
554 $arvin[$lista][$pos++]=$cand;
555 }
556 }
557 if ($num_candlst[$lisvin]<$seggimag[$lisvin]) {
558 $num_cons+=$seggimag[$lisvin]-$num_candlst[$lisvin];
559 $seggimag[$lisvin]=$num_candlst[$lisvin];
560 }
561 if (isset($gruppo[$listagruppo[$lisvin]])) $seggimag=calcoloseggi($listemag,$seggimag[$lisvin],1);
562 if(isset($mex))
563 echo "$mex";
564 foreach ($seggimag as $lista=>$val)
565 for ($z=0;$z<$val;$z++){
566 if ($z) $consel[]=array("","","",$arvin[$lista][($z)],$cifra[$lista][($z)],number_format($quozienti[$lista][$z],2));
567 else $consel[]=array($desliste[$lista],$lists[$lista],$val,$arvin[$lista][($z)],$cifra[$lista][($z)],number_format($quozienti[$lista][$z],2));
568 }
569 if($arvin[$lista][($z)]) $consel[]=array($desliste[$lista],"$PNE","",$arvin[$lista][($z)],$cifra[$lista][($z)],number_format($quozienti[$lista][$z],2));
570 $seggimin=array();
571 $assegnato=0;
572 $corrente=0;
573 $seggimin=calcoloseggi($listemin,$num_cons,1);
574 foreach ($seggimin as $lista=>$val){
575 if ($consin and $val>0 and (!$assegnato or !$inffisso)){
576 $conselcsne[]=array("$CSEC","","",$desgruppi[$listagruppo[$lista]],"","");
577 $val--;
578 $assegnato=1;
579 $corrente=1;
580 }
581 for ($z=0;$z<$val;$z++){
582 if ($z) $conselmin[]=array("","","",$arvin[$lista][($z)],$cifra[$lista][($z)],number_format($quozienti[$lista][$z],2));
583 else $conselmin[]=array($desliste[$lista],$lists[$lista],$val,$arvin[$lista][($z)],$cifra[$lista][($z)],number_format($quozienti[$lista][$z],2));
584 }
585 if($arvin[$lista][($z)] and $corrente) $conselmin[]=array($desliste[$lista],"$PNE","",$arvin[$lista][($z)],$cifra[$lista][($z)],number_format($quozienti[$lista][$z],2));
586 $corrente=0;
587 }
588 foreach($conselcsne as $key=>$val)
589 {
590 $consel[]=array($val[0],$val[3]);
591 }
592 foreach($conselmin as $key=>$val)
593 {
594 $consel[]=array($val[0],$val[1],$val[2],$val[3],$val[4],$val[5]);
595 }
596
597
598
599 echo "<table summary=\"Tabella dei consiglieri eletti\" class=\"table-docs\" cellspacing=\"0\" cellpadding=\"2\" border=\"1\" rules=\"all\">";
600 echo "<tr class=\"bggray\"><td scope=\"row\">";
601 echo _SINDACO.": ".$desgruppi[$listagruppo[$lisvin]]."</td></tr></table>";
602 stampalista($consel);
603
604
605}
606
607function calcoloseggi($gruppi,$num_cons,$flag){
608global $ultimo,$mex,$sorteggio,$quozienti,$num_cand,$num_candlst;
609
610#carica le preferenze
611$pref = array();
612$ultimo=0;
613$mex='';
614$sorteggio=0;
615$eletti = array();
616$ele = array();
617$quozienti = array();
618$num_quoz= $num_cons;
619#inizializza l'array degli eletti
620foreach ($gruppi as $x=>$val){
621 $eletti[$x]=0;
622 }
623#carica gli array dei quozienti
624foreach($gruppi as $y=>$tmp){
625
626 if($flag) $num_quoz= $num_cons<$num_candlst[$y] ? $num_cons:$num_candlst[$y];
627 if(!isset($ele[$y][0])) $ele[$y][0]=0;
628 for ($x=0;$x<=$num_quoz;$x++){
629 $ele[$y][$x]= $tmp/($x+1);
630 $quozienti[$y][$x]= $tmp/($x+1); ###echo "<br>[$y][$x]=".$tmp/($x+1);
631 }
632}
633#estrae i quozienti piu' alti
634for ($y=0;$y<$num_cons;$y++){
635 $temp=0;
636 $cand=0;
637 if(! isset($pref['0'])) $pref['0']='';
638 if(! isset($pref['1'])) $pref['1']='';
639 foreach($gruppi as $x=>$tmp){
640 if(!isset($ele[$x][0])) $ele[$x][0]=0;
641 if(!isset($pref[$x])) $pref[$x]=0;
642 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);}
643 if ($ele[$x][0]>$temp or ($ele[$x][0]==$temp and $pref[$x]>$pref[$cand])) {
644 $temp=$ele[$x][0];
645 $cand=$x;
646 $sorteggio=0;$mex='';
647 }
648 }
649 if (!$sorteggio and $cand){
650 $eletti[$cand]++;
651 $ultimo=$cand;
652 array_shift($ele[$cand]);
653 }
654}
655return ($eletti);
656}
657
658function stampalista($ar) {
659global $PNE,$CSEC;
660$cmin=_SEGGIMIN;
661$csin="";
662 $bg='bgw';
663
664 $tmpbg='bggray2';
665 $tmpbg1='bgw';
666 $tmpbg2='bggray';
667 $tmpbg3='bggray2';
668 $fmin=2;
669 echo "<table summary=\"Tabella dei consiglieri eletti\" class=\"table-docs\" cellspacing=\"0\" cellpadding=\"2\" border=\"1\" rules=\"all\">";
670 $y=1;$i='';$e=0;
671 foreach ($ar as $riga) {
672 $e++;
673 if($riga[0]==$CSEC and $fmin==2)
674 {
675 { $fmin=1;
676 echo "</table>";
677 echo "<table summary=\"Tabella dei candidati sindaco eletti consigliere\" class=\"table-docs\" cellspacing=\"0\" cellpadding=\"2\" border=\"1\" rules=\"all\">";
678 echo "<tr class=\"bggray\"><td scope=\"row\" colspan=\"3\"><b>";
679 echo $csin;
680 echo "</b></td></tr>";
681 echo "<tr class=\"bggray\"><td scope=\"row\"><b>"._CANDIDATO."</b></td><td scope=\"row\"><b>"._NOMINATIVO."</b></td></tr>";
682 }
683 }
684 if($riga[0]!=$CSEC and $fmin==1)
685 { $fmin=0;
686 echo "</table>";
687 echo "<table summary=\"Tabella dei consiglieri di minoranza\" class=\"table-docs\" cellspacing=\"0\" cellpadding=\"2\" border=\"1\" rules=\"all\">";
688 echo "<tr class=\"bggray\"><td scope=\"row\" colspan=\"6\"><b>";
689 echo $cmin;
690 echo "</b></td></tr>";
691 echo "<tr class=\"bggray\"><td scope=\"row\"><b>"._LISTA."</b></td><td scope=\"row\"><b>"._VOTI."</b></td><td scope=\"row\"><b>"._SEGGI."</b></td><td scope=\"row\"><b>"._NOMINATIVO."</b></td><td scope=\"row\"><b>"._CIFRAELE."</b></td><td scope=\"row\"><b>"._QUOZIENTI."</b></td></tr>";
692 }
693 if($riga[1]==$PNE) echo "<tr class=\"red\">";
694 else{
695 $bg= ($riga[1]) ? $tmpbg3:$tmpbg1;
696 if($y) {
697 echo "<tr class=\"bggray\">";
698 }else{
699 echo "<tr class=\"$bg\">";
700 }
701 }
702 $z=0;
703 foreach ($riga as $cella) {
704 if ($e==1){
705 $t="<th scope=\"colgroup\"";$f="</th>";
706 }else{
707 $t="<td scope=\"row\"";$f="</td>";
708 }
709 if($z==0 or $z==3)
710 echo "$t $i align=\"left\">$cella $f";
711 else
712 echo "$t $i align=\"right\">$cella $f";
713 $i='';
714 $z++;
715 }
716 if ($y) $y=0;
717 echo "</tr>";
718 }
719 echo "</table>";
720
721}
722
723function conssup($fascia,$gruppo,$collegate,$collperd,$primoturno) {
724 global $id_cons, $id_cons_gen, $id_comune, $prefix,$dbi;
725 global $groups,$lists,$eletti,$ultimo,$quozienti,$num_candlst,$mex,$PNE,$CSEC,$consin;
726 global $supsbarramento, $supminpremio, $suppremio;
727 global $listsupconta,$numcons;
728 #funzione di calcolo per comuni oltre 15.000 abitanti
729 #carica il numero di consiglieri da eleggere$groups=array();
730 $PNE=_PRIMONON;
731 $CSEC=_SINDCONS;
732 $lists=array();
733 $eletti=array();
734 $num_candlst=array();
735 #$quozienti = array();
736 $oldlists=array();
737 $oldlstgrp=array();
738 $premio=0;
739 /* "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)
740 */
741
742 if (!isset($_SESSION['ballo1'])) $_SESSION['ballo1']='';
743 if (!isset($_SESSION['ballo2'])) $_SESSION['ballo2']='';
744 $gruppoperd= ($gruppo==$_SESSION['ballo1']) ? $_SESSION['ballo2'] : $_SESSION['ballo1'];
745
746 #per voti validi non si intendono i voti validi alle liste ma i voti validi espressi
747 #$res_val = mysql_query("SELECT sum(validi_lista) from ".$prefix."_ele_sezioni where id_cons='$id_cons'",$dbi);
748 $sql = "SELECT sum(voti) from ".$prefix."_ele_voti_gruppo where id_cons='$id_cons'";
749 $res_val = $dbi->prepare("$sql");
750 $res_val->execute();
751
752 list($validi) = $res_val->fetch(PDO::FETCH_NUM);
753
754 $sbarra=($validi*$supsbarramento)/100;
755 $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.id_lista,t2.num_lista,t2.descrizione order by voti desc";
756 $res_per = $dbi->prepare("$sql");
757 $res_per->execute();
758
759 $groups=array();
760 $premio=0;
761 //10-05-2009 gestione differenziata delle norme elettorali
762 #carica l'array dei gruppi e della cifra di gruppo
763 while (list($descr,$num_gruppo,$id_lista,$num_lista,$descr_lista,$voti)= $res_per->fetch(PDO::FETCH_NUM)){
764 if ($listsupconta or $voti>=$sbarra){
765 if (! isset($groups[($num_gruppo)])) $groups[($num_gruppo)]=0;
766 $desgruppi[$num_gruppo]=$descr;
767 $desliste[$num_lista]=$num_lista.") ".$descr_lista;
768 $idlst[$num_lista]=$id_lista;
769 $listagruppo[$num_lista]=$num_gruppo;
770 $lists[$num_lista]=$voti;
771 $groups[($num_gruppo)]+=$voti;
772 }
773 }
774################### carica array ... 25 maggio 2014
775 foreach($collegate as $key=>$val){
776 $sql = "SELECT id_gruppo from ".$prefix."_ele_lista where num_lista='$val' and id_cons='$id_cons'";
777 $res = $dbi->prepare("$sql");
778 $res->execute();
779 list($tempig)=$res->fetch(PDO::FETCH_NUM);
780 $sql = "SELECT num_gruppo from ".$prefix."_ele_gruppo where id_gruppo='$tempig' and id_cons='$id_cons'";
781 $res = $dbi->prepare("$sql");
782 $res->execute();
783 list($tempng)=$res->fetch(PDO::FETCH_NUM);
784 $grpinc[$val]=$tempng;
785 }
786 $elencog=array();
787 $sindseggiopre=array();
788 foreach($groups as $testk=>$valk) if($testk!=$gruppo) {$elencog[$testk]=$valk;}
789 $testseggio=calcoloseggi($elencog,floor($numcons*(100-$suppremio)/100),0);
790 foreach($testseggio as $testk=>$valk) { $sindseggiopre[]=$testk;}
791##################
792 $descrsind=$desgruppi[$gruppo];
793 foreach ($groups as $key=>$val){
794#controlla se un gruppo di liste, tra quelle perdenti, ha superato il 50%
795 if ($key!=$gruppo and $val> $validi/2) $premio=2;
796#elimina gruppi che non hanno superato lo sbarramento
797 if ($val<$sbarra){
798 foreach ($listagruppo as $lst=>$grp)
799 if ($grp==$key){
800 unset($listagruppo[$lst]);
801 unset($desliste[$lst]);
802 unset($lists[$lst]);
803 }
804 unset($groups[($key)]);
805 unset($desgruppi[($key)]);
806
807 }
808 }
809 foreach ($collegate as $lst)
810 if (isset($lists[$lst])){
811 if($premio){
812 $oldlstgrp[$lst]=$listagruppo[$lst];
813 $oldlists[$lst]=$lists[$lst];
814 }
815 $groups[$listagruppo[$lst]]-=$lists[$lst];
816 $listagruppo[$lst]=$gruppo;
817 $groups[$gruppo]+=$lists[$lst];
818 }
819#controlla se la percentuale del gruppo vincente e' tra il 40 e il 60% o il sindaco e' eletto al secondo turno
820#e se nessun altro gruppo ha superato il 50% assegna il premio di maggioranza
821#e se nessun altro gruppo ha superato il 50% e nessuno ha ottenuto piu' del 60% dei seggi, assegna il premio di maggioranza
822 $consmin=$numcons;
823 $gruppomin=calcoloseggi($groups,$consmin,0);
824 $nopremio=1;
825 if (($groups[$gruppo]>=(($validi*$supminpremio)/100) or ! $primoturno) and $groups[$gruppo]<(($validi*$suppremio)/100) and !$premio and $nopremio) $premio=1;
826 else $premio=0;
827 $consel=array();
828 $consel[]=array(_LISTA,_VOTI,_SEGGI,_CANDIDATO,_CIFRAELE,_QUOZIENTI);
829 $groupsappo=$groups;
830 $candidati=array();
831 $grpperd=$gruppoperd;
832//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%
833//maggio 2011: da qui
834 if(!isset($groups[$gruppoperd])) $groups[$gruppoperd]=0;
835 foreach ($collperd as $lst)
836 if (isset($lists[$lst])){
837 $oldlstgrp[$lst]=$listagruppo[$lst];
838 $listagruppo[$lst]=$gruppoperd;
839 $oldlists[$lst]=$lists[$lst];
840 $groups[$gruppoperd]+=$lists[$lst];
841 $groups[$oldlstgrp[$lst]]-=$lists[$lst];
842 }
843////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.
844 if ($premio) {
845################### nell'array sindseggio vengono inseriti i candidati sindaco che restano senza seggio per gli apparentamenti
846 $elencog=array();
847 $testseggio=array();
848 $sindseggio=array();
849 foreach($groups as $testk=>$valk) {if($testk!=$gruppo) $elencog[$testk]=$valk;}
850 $perdente[$gruppoperd]=$groups[$gruppoperd];
851 $testseggio=calcoloseggi($elencog,floor($numcons-$numcons*($suppremio)/100),0);
852 foreach($testseggio as $testk=>$valk)
853 foreach($sindseggiopre as $testk=>$valk){ if(isset($testseggio[$valk]) and $testseggio[$valk]) continue; $sindseggio[$valk]=$valk;}
854 $sindaco[$gruppo]=$groups[$gruppo]; $groups[$gruppo]=0;
855 $gruppomag=calcoloseggi($sindaco,ceil($numcons*$suppremio/100),0);
856#######calcola i seggi per lista
857 foreach ($gruppomag as $key=>$val){
858 foreach($listagruppo as $lst=>$grp){
859 if($grp!=$key) continue;
860 $id_lista=$idlst[$lst];
861 $x=$lst;
862 $y=$lists[$x];
863 $pos=0;
864 $z=0;
865 $arvin[$x][$pos++]=$desliste[$lst];
866 $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 t1.num_cand,t1.cognome,t1.nome order by voti desc,t1.num_cand";
867 $res_can = $dbi->prepare("$sql");
868 $res_can->execute();
869 $num_candlst[$x]=$res_can->rowCount();
870 while(list($cand,$pre)=$res_can->fetch(PDO::FETCH_NUM)){
871 $cifra[$x][$pos]=$y+$pre;
872 $arvin[$x][$pos++]=$cand;
873 }
874 $listemag[$x]=$y;
875 $desliste[$x]=$descr;
876 $percliste[$x]="<br/>$y (".number_format($y*100/$validi,2)."%)";
877 $z++;
878 $seggimag=array();
879 $x=0;
880#####25 maggio 2014 - il candidato sindaco non eletto ha diritto al seggio anche se di maggioranza
881### individua ultimi seggi assegnati a liste collegate
882 if($grp==$gruppo){
883 $listdec =array();
884 $seggitmp=calcoloseggi($listemag,$val,1);
885 foreach ($seggitmp as $keyl=>$vall){
886 if($vall==0) continue;
887 $sql = "SELECT id_gruppo from ".$prefix."_ele_lista where num_lista='$keyl' and id_cons='$id_cons'";
888 $res = $dbi->prepare("$sql");
889 $res->execute();
890 list($tempig)=$res->fetch(PDO::FETCH_NUM);
891 $sql = "SELECT num_gruppo from ".$prefix."_ele_gruppo where id_gruppo='$tempig' and id_cons='$id_cons'";
892 $res = $dbi->prepare("$sql");
893 $res->execute();
894 list($tempng)=$res->fetch(PDO::FETCH_NUM);
895 if (isset($sindseggio[$tempng])) {$listdec[$tempng][]=$keyl;}
896 }
897 }
898 }
899 $seggimag=calcoloseggi($listemag,$val,1);
900####cerca ultimo seggio assegnato per gruppo di liste collegate al primo turno
901 foreach ($seggimag as $key2=>$val2){
902 if($val2==0) continue;
903 if(isset($grpinc[$key2])) { $tempng=$grpinc[$key2];}
904 if(isset($listdec[$tempng]))
905 foreach($listdec[$tempng] as $ark=>$arv) {
906 if(!isset($ultquoz[($sindseggio[$tempng])]) and $sindseggio[$tempng]) {$ultquoz[($sindseggio[$tempng])]=$quozienti[$arv][($val2-1)];$lastlist[$tempng]=$arv;}
907 elseif ($ultquoz[($sindseggio[$tempng])]>$quozienti[$arv][($val2-1)])
908 {
909 $ultquoz[($sindseggio[$tempng])]=$quozienti[$arv][($val2-1)];$lastlist[($sindseggio[$tempng])]=$arv;
910 }
911 }
912 }
913 foreach ($seggimag as $key2=>$val2){
914## condizione per esclusione di un seggio da destinare al sindaco non eletto in_array($key2,$lastlist)
915 if(isset($lastlist))
916 foreach($lastlist as $key3=>$val3){
917 if($key2==$val3) {
918 $arappo=array_shift($arvin[$key2]);$tpmgrp=0;
919 array_unshift($arvin[$key2],$desgruppi[$key3]); array_unshift($arvin[$key2],$arappo);array_unshift($cifra[$key2],"--");array_unshift($cifra[$key2],"--");
920 }
921 }
922## fine condizione - impostare variabile in db per differenziare il comportamento per consultazioni diverse
923 for ($z=0;$z<$val2;$z++){
924 if ($z) $consel[]=array("","","",$arvin[$key2][($z+1)],$cifra[$key2][($z+1)],number_format($quozienti[$key2][$z],2));
925 else
926 {
927 $consel[]=array($arvin[$key2][0],$percliste[$key2],$val2,$arvin[$key2][($z+1)],$cifra[$key2][($z+1)],number_format($quozienti[$key2][$z],2));
928 $arlisdesv[]=$arvin[$key2][0];$arlissegv[]=$val2;$arlisnumv[]=$key2;
929 }
930 }
931 $x++;
932 if($val2)
933 $consel[]=array($arvin[$key2][0],"$PNE","",$arvin[$key2][($z+1)],$cifra[$key2][($z+1)],number_format($quozienti[$key2][$z],2));
934 }
935 }
936 }
937 if ($premio) $consmin=floor($numcons*(100-$suppremio)/100);
938 else $consmin=$numcons;
939#####calcolo per la minoranza o in caso non ci sia premio di maggioranza
940 $gruppomin=calcoloseggi($groups,$consmin,0);
941 $ordinati[$gruppo]=$gruppomin[$gruppo];
942 foreach ($gruppomin as $key=>$val){
943 if($key!=$gruppo) $ordinati[$key]=$val;
944 }
945 $gruppomin=$ordinati;
946 foreach ($gruppomin as $key=>$val){
947 if($premio and $key==$gruppo) continue;
948 $listemin=array();
949 $cifra=array();
950 foreach($listagruppo as $lst=>$grp){
951 if($grp!=$key) continue;
952 $id_lista=$idlst[$lst];
953 $x=$lst;
954 $y=$lists[$x];
955 $pos=0;
956 $z=0;
957 $pos=0;$z=0;
958 if(!$premio and $key==$gruppo) $arvin[$x][$pos++]=$desliste[$lst];
959 else $arper[$x][$pos++]=$desliste[$lst];
960 $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";
961 $res_can = $dbi->prepare("$sql");
962 $res_can->execute();
963 $num_candlst[$x]=$res_can->rowCount();
964 while(list($cand,$pre)=$res_can->fetch(PDO::FETCH_NUM)) {
965 $cifra[$x][$pos]=$y+$pre;
966 if(!$premio and $key==$gruppo)
967 $arvin[$x][$pos++]=$cand;
968 else
969 $arper[$x][$pos++]=$cand;
970 }
971 $listemin[$x]=$y;
972 $desliste[$x]=$descr;
973 $percliste[$x]="<br/>$y (".number_format($y*100/$validi,2)."%)";
974 }
975 $seggimin=array();
976 echo "$mex";
977 $ultimo='';
978 $seggimin=calcoloseggi($listemin,$val,1);
979 echo "$mex";
980 if(!$premio and $key==$gruppo)
981 foreach ($seggimin as $lista=>$valc){
982 $arper[$lista]=$arvin[$lista];
983 }
984 if ($val and $key!=$gruppo and $consin) {$conselsin[]=array("$CSEC",$desgruppi[$key]); $arcansin[]=$desgruppi[$key];}
985 foreach ($seggimin as $lista=>$val)
986 if(isset($oldlstgrp[$lista]) and !isset($oldseggi[$lista])) {$oldseggi[$lista]=$val;
987 }
988 if($val==0){
989 if($ultimo==''){
990 foreach($oldlists as $lst=>$vot)
991 {
992 if (!isset($quozienti[$lst][($val)])) $quozienti[$lst][($val)]=$vot;
993 if ($oldlstgrp[$lst]!= $key or !isset($oldseggi[$lst]) or $oldseggi[$lst]==0) continue;
994 if($ultimo=='') $ultimo=$lst;
995 if($quozienti[$ultimo][($val)]==$last[$lst])
996 {
997 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";
998 elseif($lists[$ultimo]>$lists[$lst]) {$ultimo=$lst;$mex="";}
999 }
1000 if ($quozienti[$ultimo][($val)]> $last[$lst]) {$ultimo=$lst;$mex="";}
1001 }
1002 $lst=$ultimo;
1003 if($ultimo and $consin){
1004 if($conselb[$ttl[($lst)]][2]>1) $conselb[$ttl[($lst)]][2]--;else $conselb[$ttl[($lst)]][2]='';
1005 $daunset[]=$tt[($lst)];
1006 $conselsin[]=array("$CSEC",$desgruppi[$key]);
1007 $arcansin[]=$desgruppi[$key];
1008 }
1009 }
1010 }
1011 foreach ($seggimin as $lista=>$val){
1012 if($ultimo==$lista and $key!=$gruppo and $consin) $val--;
1013 }
1014 foreach ($seggimin as $lista=>$val){
1015 if($ultimo==$lista and $key!=$gruppo and $consin) $val--;
1016 for ($z=0;$z<$val;$z++){
1017 if ($z) $conselb[]=array("","","",$arper[$lista][($z+1)],$cifra[$lista][($z+1)],number_format($quozienti[$lista][$z],2));
1018 else{
1019 if(!isset($arper[$lista][($z+1)])) $arper[$lista][($z+1)]=0;
1020 if(!isset($cifra[$lista][($z+1)])) $cifra[$lista][($z+1)]=0;
1021 $conselb[]=array($arper[$lista][0],$percliste[$lista],$val,$arper[$lista][($z+1)],$cifra[$lista][($z+1)],number_format($quozienti[$lista][$z],2));
1022 $ttl[$lista]=(count($conselb)-1);
1023 }
1024 }
1025 if (isset($oldlists[$lista]))
1026 {
1027 $tt[$lista]=(count($conselb)-1);
1028 if($z) $last[$lista]=$quozienti[$lista][($z-1)]; else $last[$lista]=0;
1029 }
1030 if($val){
1031 if(!isset($arper[$lista][($z+1)])) $arper[$lista][($z+1)]=0;
1032 if(!isset($cifra[$lista][($z+1)])) $cifra[$lista][($z+1)]=0;
1033 if(!isset($quozienti[$lista][$z])) $quozienti[$lista][$z]=0;
1034 $conselb[]=array($arper[$lista][0],"$PNE","",$arper[$lista][($z+1)],$cifra[$lista][($z+1)],number_format($quozienti[$lista][$z],2));
1035 }
1036 }
1037 }//chiude foreach gruppomin
1038 echo "<table summary=\"Tabella dei consiglieri eletti\" class=\"table-docs\" cellspacing=\"0\" cellpadding=\"2\" border=\"1\" rules=\"all\">";
1039 echo "<tr class=\"bggray\"><td scope=\"row\"><b>";
1040 echo _SINDACO.": ".$desgruppi[$gruppo]."</b></td></tr></table>";
1041 if(isset($daunset)){
1042 if ((sort($daunset,SORT_NUMERIC))==false) echo "Errore di programma!";
1043 ELSE {
1044 $tmpda=array_reverse($daunset);
1045 foreach($tmpda as $key=>$val) {
1046 $conselb[$val][0]=$conselb[($val+1)][0];$conselb[$val][1]=$conselb[($val+1)][1];
1047 unset($conselb[($val+1)]);
1048 }
1049 }
1050 }
1051 if (!$premio)
1052 {
1053 foreach($conselb as $key=>$val)
1054 {
1055 if ($val[2]){
1056 $nlst=intval($val[0]);
1057 $arlisdesv[]=$val[0];
1058 $arlissegv[]=$val[2];
1059 }
1060 if($listagruppo[$nlst]!=$gruppo) continue;
1061 $consel[]=array($val[0],$val[1],$val[2],$val[3],$val[4],$val[5]);
1062 }
1063 }
1064 if (isset($conselsin)) foreach($conselsin as $key=>$val)
1065 {
1066 $consel[]=array($val[0],$val[1]);
1067 }
1068 foreach($conselb as $key=>$val)
1069 {
1070 if ($val[2]){
1071 $nlst=intval($val[0]);
1072 $arlisdesp[]=$val[0];
1073 $arlissegp[]=$val[2];
1074 }
1075 if($listagruppo[$nlst]==$gruppo) continue;
1076 $consel[]=array($val[0],$val[1],$val[2],$val[3],$val[4],$val[5]);
1077 }
1078 stampalista($consel);
1079 unset($_SESSION['ballo1']);unset($_SESSION['ballo2']);unset($_SESSION['grp1']);unset($_SESSION['grp2']);
1080}
1081
1082?>
Note: See TracBrowser for help on using the repository browser.