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

Last change on this file since 360 was 357, checked in by roby, 3 years ago

admin: funzioni di controllo del db e suoi aggiornamenti.

File size: 40.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
19$param=strtolower($_SERVER['REQUEST_METHOD']) == 'get' ? $_GET : $_POST;
20
21if (isset($param['gruppo'])) $gruppo=intval($param['gruppo']); else $gruppo='';
22if (isset($param['numgruppo'])) $numgruppo=intval($param['numgruppo']); else $numgruppo='';
23if (isset($param['listecol'])) $listecol=intval($param['listecol']); else $listecol=0;
24
25$sql = "select id_conf,id_fascia from ".$prefix."_ele_cons_comune where id_cons='$id_cons'";
26$result = $dbi->prepare("$sql");
27$result->execute();
28
29list($id_conf,$fascia) = $result->fetch(PDO::FETCH_NUM);
30
31$sql = "SELECT limite,consin,infpremio,supsbarramento,suppremio,listinfsbar,listinfconta,listsupconta,supminpremio,infminpremio from ".$prefix."_ele_conf where id_conf='$id_conf'";
32$res = $dbi->prepare("$sql");
33$res->execute();
34
35list($limite,$consin,$infpremio,$supsbarramento,$suppremio,$listinfsbar,$listinfconta,$listsupconta,$supminpremio,$infminpremio) = $res->fetch(PDO::FETCH_NUM);
36$numcons=0;
37
38echo "<table><tr><td align=\"center\">"._PROIEZCONS."</td></tr></table>";
39
40
41function consiglio(){
42global $param,$id_cons_gen, $dbi, $prefix, $id_comune, $gruppo, $numgruppo, $listecol, $id_comune, $limite,$numcons,$id_conf,$fascia,$id_cons;
43$collegate= array();
44$collperd= array();
45$x=1;
46$primoturno=0;
47while (isset($param['num_lista'.$x])) {
48 if ($param['num_lista'.$x]==$gruppo) array_push($collegate,$_SESSION['num_lista'.$x]);
49# elseif ($param['num_lista'.$x]!=0) array_push($collperd,$_SESSION['num_lista'.$x]);
50 $x++;
51}
52$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'";
53$res = $dbi->prepare("$sql");
54$res->execute();
55
56if ($res->rowCount()){
57 list($tipo_cons,$id_cons,$fascia,$conf) = $res->fetch(PDO::FETCH_NUM);
58 $sql = "select capoluogo from ".$prefix."_ele_comuni where id_comune='$id_comune'";
59$result = $dbi->prepare("$sql");
60$result->execute();
61
62 list($capoluogo) = $result->fetch(PDO::FETCH_NUM);
63 $sql = "select fascia_capoluogo from ".$prefix."_ele_conf where id_conf='$conf'";
64$result = $dbi->prepare("$sql");
65$result->execute();
66
67 list($fascia2) = $result->fetch(PDO::FETCH_NUM);
68 if($fascia<$fascia2 and $capoluogo) $fascia=$fascia2;
69
70 $sql = "SELECT seggi from ".$prefix."_ele_fasce where id_fascia='$fascia' and id_conf=$id_conf";
71$result = $dbi->prepare("$sql");
72$result->execute();
73
74 list($numcons) = $result->fetch(PDO::FETCH_NUM);
75$sql = "SELECT id_cand, sum(voti) from ".$prefix."_ele_voti_candidati where id_cons='$id_cons' group by id_cand";
76$res_val = $dbi->prepare("$sql");
77$res_val->execute();
78
79$num_cons= $res_val->rowCount();
80if ($num_cons<$numcons){
81 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";
82 include("footer.php");
83 die();
84}
85 if (!$gruppo){
86 $sql = "SELECT sum(validi) from ".$prefix."_ele_sezioni where id_cons='$id_cons'";
87$res_val = $dbi->prepare("$sql");
88$res_val->execute();
89
90 list($validi) = $res_val->fetch(PDO::FETCH_NUM);
91 $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";
92$res_lis = $dbi->prepare("$sql");
93$res_lis->execute();
94
95 $test=0;$flag=0;
96 while (list($num_gruppo,$voti)= $res_lis->fetch(PDO::FETCH_NUM)){
97 if ($voti>($validi/2)) {$gruppo=$num_gruppo;$primoturno=1;}
98 if ($voti==$test) $flag=1; else $test=$voti;
99 }
100 }
101 if ($fascia<=$limite){
102 $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";
103 $res_lis = $dbi->prepare("$sql");
104 $res_lis->execute();
105 if($res_lis->rowCount()==1)
106 {
107 list($num_gruppo1,$voti1)= $res_lis->fetch(PDO::FETCH_NUM);
108 $voti2=0;
109 $sql = "SELECT sum(maschi+femmine) from ".$prefix."_ele_sezioni where id_cons='$id_cons'";
110 $res_val = $dbi->prepare("$sql");
111 $res_val->execute();
112 list($elettori)=$res_val->fetch(PDO::FETCH_NUM);
113 $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";
114 $res_val = $dbi->prepare("$sql");
115 $res_val->execute();
116 list($votanti)=$res_val->fetch(PDO::FETCH_NUM);
117 if($votanti<($elettori/2) || $voti1<($votanti/2))
118 {
119 include(ele.php);
120 echo "<div>Non Ú possibile assegnare i seggi, la consultazione Ú nulla</div>";
121 include(footer.php);
122 die();
123 }
124 }else{
125 list($num_gruppo1,$voti1)= $res_lis->fetch(PDO::FETCH_NUM);
126 list($num_gruppo2,$voti2)= $res_lis->fetch(PDO::FETCH_NUM);
127 }
128 if ($voti1>$voti2)
129 $numgruppo=$num_gruppo1;
130 }
131 if ($fascia<=$limite and $numgruppo) consmin($fascia,$numgruppo);
132 elseif ($gruppo>0) conssup($fascia,$gruppo,$collegate,$collperd,$primoturno);
133 elseif ($numgruppo>0){
134 $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'].")";
135$res_lis = $dbi->prepare("$sqllis");
136$res_lis->execute();
137
138 $yy=$res_lis->rowCount();
139 $sql = "select sum(voti) from ".$prefix."_ele_voti_lista where id_cons='$id_cons'";
140$res_voti = $dbi->prepare("$sql");
141$res_voti->execute();
142
143 list($validilista) = $res_voti->fetch(PDO::FETCH_NUM);
144 if ($yy){
145while(list($id_lista,$num_lista,$descr,$pgrup) = $res_lis->fetch(PDO::FETCH_NUM)) {
146 $sql = "select sum(voti) from ".$prefix."_ele_voti_lista where id_lista='$id_lista'";
147$res_voti = $dbi->prepare("$sql");
148$res_voti->execute();
149
150 list($votilista) = $res_voti->fetch(PDO::FETCH_NUM);
151 if(!isset($voti[$pgrup])) $voti[$pgrup]=0;
152 $voti[$pgrup]+=$votilista;
153}
154 foreach ($voti as $key=>$val){if($val<($validilista*3/100)) unset($voti[$key]);} ##################################################
155 $res_lis = $dbi->prepare("$sqllis");
156 $res_lis->execute();
157 echo "<br/>";
158 echo "<form id=\"gruppo\" action=\"modules.php\">";
159 echo "<table cellspacing=\"0\" cellpadding=\"2\" border=\"1\"><tr class=\"bggray\"><td colspan=\"4\">"._COLLEGAMENTI."</td></tr><tr class=\"bggray\"><td>";
160 echo "<input type=\"hidden\" name=\"op\" value=\"consiglieri\"/>";
161 echo "<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\"/>";
162 echo "<input type=\"hidden\" name=\"id_comune\" value=\"$id_comune\"/></td>";
163
164echo "<td><b>".$_SESSION['grp1']."</b></td>";
165 echo "<td><b>".$_SESSION['grp2']."</b></td>";
166 echo "<td><b>"._NONCOLLE."</b></td></tr>";
167
168 $z=1;
169 while(list($id_lista,$num_lista,$descr,$pgrup) = $res_lis->fetch(PDO::FETCH_NUM)) {
170 if(!isset($voti[$pgrup])) continue;
171 $x=$_SESSION['ballo1'];
172 echo "<tr><td>$descr</td><td><input type=\"radio\" name=\"num_lista$z\" value=\"$x\"/></td>";
173 $x=$_SESSION['ballo2'];
174 $_SESSION['num_lista'.$z]=$num_lista;
175 echo "<td><input type=\"radio\" name=\"num_lista$z\" value=\"$x\"/></td>";
176 echo "<td><input type=\"radio\" name=\"num_lista$z\" value=\"0\" checked=\"checked\"/></td></tr>";
177 $z++;
178 }
179
180 echo "<tr><td colspan=\"4\"><input type=\"hidden\" name=\"listecol\" value=\"$x\"/><input type=\"hidden\" name=\"gruppo\" value=\"$numgruppo\"/>";
181 echo "<input type=\"submit\" name=\"invia\" value=\""._OK."\"/></td></tr></table></form>";
182 }else conssup($fascia,$numgruppo,$collegate,$collperd,$primoturno);
183 }else {
184 echo "<br/>";
185 echo "<form id=\"numgruppo\" action=\"modules.php\">";
186 echo "<table><tr class=\"bggray\"><td>"._SCELTASIN.":</td><td align=\"left\">";
187 echo "<input type=\"hidden\" name=\"op\" value=\"consiglieri\"/>";
188 echo "<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\"/>";
189 echo "<input type=\"hidden\" name=\"id_comune\" value=\"$id_comune\"/>";
190 $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.num_gruppo,t1.descrizione order by pref desc limit 0,2";
191$res = $dbi->prepare("$sql");
192$res->execute();
193
194 while(list($id_gruppo,$num_gruppo, $descr_gruppo,$pref) = $res->fetch(PDO::FETCH_NUM)) {
195 if (!isset($_SESSION['ballo1'])) {
196 $_SESSION['ballo1']=$num_gruppo;
197 $_SESSION['grp1']=$descr_gruppo;
198 $_SESSION['idgrp1']=$id_gruppo;
199 }else{
200 $_SESSION['ballo2']=$num_gruppo;
201 $_SESSION['grp2']=$descr_gruppo;
202 $_SESSION['idgrp2']=$id_gruppo;
203 }
204 echo "<input type=\"radio\" name=\"numgruppo\" value=\"$num_gruppo\"/>$descr_gruppo<br/>";
205 }
206 echo "</td>";
207 echo "<td><input type=\"submit\" name=\"invia\" value=\""._OK."\"/></td></tr></table></form>";
208
209 }
210 }
211}
212
213function consmin($fascia,$grp) {
214global $id_cons, $prefix,$dbi,$num_candlst,$quozienti,$PNE,$CSEC,$consin,$numcons;
215global $infpremio,$fisso,$sincons, $votol;
216if (!isset($fisso)) $fisso=0; #se fisso=1 il premio di maggioranza Ú fisso
217if (isset($votol)) {$votolista=$votol; $fisso=$votol;} #se votolista=1 c'e' voto di lista
218if (!isset($sincons)) $sincons=0; #se sincons=1 il sindaco eletto occupa un posto di consigliere
219$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";
220$res = $dbi->prepare("$sql");
221$res->execute();
222$numgruppi=$res->rowCount();
223$PNE=_PRIMONON;
224$CSEC=_SINDCONS;
225$sorteggio=0;
226$num_candlst=array();
227#funzione di calcolo per comuni fino a 15.000 abitanti (più esattamente fino al valore di $limite)
228
229if ($sincons) $numcons--;
230#$numcons--;
231$consel=array();
232$conselcsne=array();
233$conselmin=array();
234//$consel[]=array("Lista","Voti","Seggi","Nominativo","Cifra Elettorale","Quoziente");
235$consel[]=array(_LISTA,_VOTI,_SEGGI,_CANDIDATO,_CIFRAELE,_QUOZIENTI);
236#carica numero di liste e voti, i voti sono quelli del gruppo se non c'e' voto di lista
237if($votolista=='0')
238 $sql = "SELECT sum(validi) from ".$prefix."_ele_sezioni where id_cons='$id_cons'";
239else
240 $sql = "SELECT sum(voti) from ".$prefix."_ele_voti_lista where id_cons='$id_cons'";
241$res_val = $dbi->prepare("$sql");
242$res_val->execute();
243
244list($validi) = $res_val->fetch(PDO::FETCH_NUM);
245#se votolista==1, Ú abilitato il voto di lista ed Ú quello su cui si calcola l'assegnazione dei seggi
246if ($fisso==1){
247 #seleziona il sindaco
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,1";
249$res_per = $dbi->prepare("$sql");
250$res_per->execute();
251
252 list($descr,$num_gruppo,$id_lista1,$num_lista,$descr_lista,$voti)= $res_per->fetch(PDO::FETCH_NUM);
253$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";
254$res_per = $dbi->prepare("$sql");
255$res_per->execute();
256
257 list($id_lista2,$voti)= $res_per->fetch(PDO::FETCH_NUM);
258 #e la lista di minoranza
259 $ordine= $id_lista1>$id_lista2 ? "desc":"";
260$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";
261$res_per = $dbi->prepare("$sql");
262$res_per->execute();
263
264 }else{
265$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";
266$res_per = $dbi->prepare("$sql");
267$res_per->execute();
268
269}
270$groups=array();
271$seggimag=array();
272$premio=0;
273$x=0;
274#carica l'array dei gruppi e della cifra di gruppo
275while (list($descr,$num_gruppo,$id_lista,$num_lista,$descr_lista,$voti)= $res_per->fetch(PDO::FETCH_NUM)){
276 $desgruppi[$num_gruppo]=$descr;
277 $desliste[$num_lista]=$num_lista.") ".$descr_lista;
278 $idlst[$num_lista]=$id_lista;
279 $listagruppo[$num_lista]=$num_gruppo;
280 $lists[$num_lista]=$voti;
281 if ($grp){
282 if ($grp!=$num_gruppo) {$groups[($num_gruppo)]=$voti;$listemin[$num_lista]=$voti;}
283 else {$gruppo[($num_gruppo)]=$voti;$listemag[$num_lista]=$voti;$lisvin=$num_lista;}
284 }else{
285 if ($x) {$groups[($num_gruppo)]=$voti;$listemin[$num_lista]=$voti;}
286 else {$gruppo[($num_gruppo)]=$voti;$listemag[$num_lista]=$voti;$lisvin=$num_lista;}
287 }
288 $x++;
289 }#controllo del premio di maggioranza
290// if ($gruppo[$listagruppo[$lisvin]]>($validi*2/3))
291 if($numgruppi==1) $fisso=1;
292 if ($gruppo[$listagruppo[$lisvin]]>($validi*$infpremio/100) and $fisso==1)
293 {
294$seggimag[$lisvin]=number_format($numcons*($gruppo[$listagruppo[$lisvin]]*100/$validi)/100);
295##echo "<br> seggimag:".$seggimag[$lisvin];
296$num_cons=number_format($numcons-$seggimag[$lisvin]);
297# $num_cons=$numcons;
298 } else {
299// $seggimag[$lisvin]=number_format($numcons*2/3);
300// $num_cons=number_format($numcons/3);
301 $seggimag[$lisvin]=number_format($numcons*$infpremio/100);
302 $num_cons=number_format($numcons-$seggimag[$lisvin]);
303 }
304 foreach ($listagruppo as $lista=>$val){
305 $id_lista=$idlst[$lista];
306 $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";
307$res_can = $dbi->prepare("$sql");
308$res_can->execute();
309
310
311 $num_candlst[$lista]=$res_can->rowCount();
312 $pos=0;
313 while(list($cand,$pre)=$res_can->fetch(PDO::FETCH_NUM)){
314 if(!isset($lists[$lista])) $lists[$lista]=0;
315 $cifra[$lista][$pos]=$lists[$lista]+$pre;
316 $arvin[$lista][$pos++]=$cand;
317 }
318 }
319 if ($num_candlst[$lisvin]<$seggimag[$lisvin]) {
320 $num_cons+=$seggimag[$lisvin]-$num_candlst[$lisvin];
321 $seggimag[$lisvin]=$num_candlst[$lisvin];
322 }
323 if (isset($gruppo[$listagruppo[$lisvin]])) $seggimag=calcoloseggi($listemag,$seggimag[$lisvin],1);
324 if(isset($mex))
325 echo "$mex";
326 foreach ($seggimag as $lista=>$val)
327 for ($z=0;$z<$val;$z++){
328 if ($z) $consel[]=array("","","",$arvin[$lista][($z)],$cifra[$lista][($z)],number_format($quozienti[$lista][$z],2));
329 else $consel[]=array($desliste[$lista],$lists[$lista],$val,$arvin[$lista][($z)],$cifra[$lista][($z)],number_format($quozienti[$lista][$z],2));
330 }
331 if($arvin[$lista][($z)]) $consel[]=array($desliste[$lista],"$PNE","",$arvin[$lista][($z)],$cifra[$lista][($z)],number_format($quozienti[$lista][$z],2));
332 $seggimin=array();
333 $seggimin=calcoloseggi($listemin,$num_cons,1);
334 foreach ($seggimin as $lista=>$val){
335 if ($consin and $val>0){
336 $conselcsne[]=array("$CSEC","","",$desgruppi[$listagruppo[$lista]],"","");
337 $val--;
338 }
339 for ($z=0;$z<$val;$z++){
340 if ($z) $conselmin[]=array("","","",$arvin[$lista][($z)],$cifra[$lista][($z)],number_format($quozienti[$lista][$z],2));
341 else $conselmin[]=array($desliste[$lista],$lists[$lista],$val,$arvin[$lista][($z)],$cifra[$lista][($z)],number_format($quozienti[$lista][$z],2));
342 }
343 if($arvin[$lista][($z)]) $conselmin[]=array($desliste[$lista],"$PNE","",$arvin[$lista][($z)],$cifra[$lista][($z)],number_format($quozienti[$lista][$z],2));
344 }
345 foreach($conselcsne as $key=>$val)
346 {
347 $consel[]=array($val[0],$val[3]);
348 }
349 foreach($conselmin as $key=>$val)
350 {
351 $consel[]=array($val[0],$val[1],$val[2],$val[3],$val[4],$val[5]);
352 }
353
354
355
356 echo "<table summary=\"Tabella dei consiglieri eletti\" class=\"table-docs\" cellspacing=\"0\" cellpadding=\"2\" border=\"1\" rules=\"all\">";
357 echo "<tr class=\"bggray\"><td scope=\"row\">";
358 echo _SINDACO.": ".$desgruppi[$listagruppo[$lisvin]]."</td></tr></table>";
359 stampalista($consel);
360
361
362}
363
364
365
366function calcoloseggi($gruppi,$num_cons,$flag){
367global $ultimo,$mex,$sorteggio,$quozienti,$num_cand,$num_candlst;
368
369#carica le preferenze
370$pref = array();
371$ultimo=0;
372$mex='';
373$sorteggio=0;
374$eletti = array();
375$ele = array();
376$quozienti = array();
377$num_quoz= $num_cons;
378#inizializza l'array degli eletti
379foreach ($gruppi as $x=>$val){
380 $eletti[$x]=0;
381 }
382#carica gli array dei quozienti
383foreach($gruppi as $y=>$tmp){
384
385 if($flag) $num_quoz= $num_cons<$num_candlst[$y] ? $num_cons:$num_candlst[$y];
386 if(!isset($ele[$y][0])) $ele[$y][0]=0;
387 for ($x=0;$x<=$num_quoz;$x++){
388 $ele[$y][$x]= $tmp/($x+1);
389 $quozienti[$y][$x]= $tmp/($x+1); ###echo "<br>[$y][$x]=".$tmp/($x+1);
390 }
391}
392#estrae i quozienti piu' alti
393for ($y=0;$y<$num_cons;$y++){
394 $temp=0;
395 $cand=0;
396 if(! isset($pref['0'])) $pref['0']='';
397 if(! isset($pref['1'])) $pref['1']='';
398 foreach($gruppi as $x=>$tmp){
399 if(!isset($ele[$x][0])) $ele[$x][0]=0;
400 if(!isset($pref[$x])) $pref[$x]=0;
401 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);}
402 if ($ele[$x][0]>$temp or ($ele[$x][0]==$temp and $pref[$x]>$pref[$cand])) {
403 $temp=$ele[$x][0];
404 $cand=$x;
405 $sorteggio=0;$mex='';
406 }
407 }
408 if (!$sorteggio and $cand){
409 $eletti[$cand]++;
410 $ultimo=$cand;
411 array_shift($ele[$cand]);
412 }
413}
414return ($eletti);
415}
416
417function stampalista($ar) {
418global $PNE,$CSEC;
419$cmin=_SEGGIMIN;
420$csin="";
421 $bg='bgw';
422
423 $tmpbg='bggray2';
424 $tmpbg1='bgw';
425 $tmpbg2='bggray';
426 $tmpbg3='bggray2';
427 $fmin=2;
428 echo "<table summary=\"Tabella dei consiglieri eletti\" class=\"table-docs\" cellspacing=\"0\" cellpadding=\"2\" border=\"1\" rules=\"all\">";
429 $y=1;$i='';$e=0;
430 foreach ($ar as $riga) {
431 $e++;
432 if($riga[0]==$CSEC and $fmin==2)
433 {
434 { $fmin=1;
435 echo "</table>";
436 echo "<table summary=\"Tabella dei candidati sindaco eletti consigliere\" class=\"table-docs\" cellspacing=\"0\" cellpadding=\"2\" border=\"1\" rules=\"all\">";
437 echo "<tr class=\"bggray\"><td scope=\"row\" colspan=\"3\"><b>";
438 echo $csin;
439 echo "</b></td></tr>";
440 echo "<tr class=\"bggray\"><td scope=\"row\"><b>"._CANDIDATO."</b></td><td scope=\"row\"><b>"._NOMINATIVO."</b></td></tr>";
441 }
442 }
443 if($riga[0]!=$CSEC and $fmin==1)
444 { $fmin=0;
445 echo "</table>";
446 echo "<table summary=\"Tabella dei consiglieri di minoranza\" class=\"table-docs\" cellspacing=\"0\" cellpadding=\"2\" border=\"1\" rules=\"all\">";
447 echo "<tr class=\"bggray\"><td scope=\"row\" colspan=\"6\"><b>";
448 echo $cmin;
449 echo "</b></td></tr>";
450 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>";
451 }
452 if($riga[1]==$PNE) echo "<tr class=\"red\">";
453 else{
454 $bg= ($riga[1]) ? $tmpbg3:$tmpbg1;
455 if($y) {
456 echo "<tr class=\"bggray\">";
457 }else{
458 echo "<tr class=\"$bg\">";
459 }
460 }
461 foreach ($riga as $cella) {
462 if ($e==1){
463 $t="<th scope=\"colgroup\"";$f="</th>";
464 }else{
465 $t="<td scope=\"row\"";$f="</td>";
466 }
467 echo "$t $i align=\"left\">$cella $f";
468 $i='';
469
470 }
471 if ($y) $y=0;
472 echo "</tr>";
473 }
474 echo "</table>";
475
476}
477
478function conssup($fascia,$gruppo,$collegate,$collperd,$primoturno) {
479global $id_cons, $id_cons_gen, $id_comune, $prefix,$dbi;
480global $groups,$lists,$eletti,$ultimo,$quozienti,$num_candlst,$mex,$PNE,$CSEC,$consin;
481global $supsbarramento, $supminpremio, $suppremio;
482global $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
497if (!isset($_SESSION['ballo1'])) $_SESSION['ballo1']='';
498if (!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
507list($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
518while (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}
529################### carica array ... 25 maggio 2014
530foreach($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
535 list($tempig)=$res->fetch(PDO::FETCH_NUM);
536 $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
540 list($tempng)=$res->fetch(PDO::FETCH_NUM);
541 $grpinc[$val]=$tempng;
542}
543 $elencog=array();
544 $sindseggiopre=array();
545 foreach($groups as $testk=>$valk) if($testk!=$gruppo) {$elencog[$testk]=$valk;}
546 $testseggio=calcoloseggi($elencog,floor($numcons*(100-$suppremio)/100),0);
547 foreach($testseggio as $testk=>$valk) { $sindseggiopre[]=$testk;}
548##################
549$descrsind=$desgruppi[$gruppo];
550foreach ($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
567 foreach ($collegate as $lst)
568 if (isset($lists[$lst])){
569 if($premio){
570 $oldlstgrp[$lst]=$listagruppo[$lst];
571 $oldlists[$lst]=$lists[$lst];
572 }
573 $groups[$listagruppo[$lst]]-=$lists[$lst];
574 $listagruppo[$lst]=$gruppo;
575 $groups[$gruppo]+=$lists[$lst];
576 }
577 ////maggio 2011: da qui
578
579#controlla se la percentuale del gruppo vincente e' tra il 40 e il 60% o il sindaco e' eletto al secondo turno
580#e se nessun altro gruppo ha superato il 50% assegna il premio di maggioranza
581#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");
586if (($groups[$gruppo]>=(($validi*$supminpremio)/100) or ! $primoturno) and $groups[$gruppo]<(($validi*$suppremio)/100) and !$premio and $nopremio) $premio=1;
587else $premio=0;
588 $consel=array();
589 $consel[]=array(_LISTA,_VOTI,_SEGGI,_CANDIDATO,_CIFRAELE,_QUOZIENTI);
590$groupsappo=$groups;
591$candidati=array();
592$grpperd=$gruppoperd;
593//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%
594//maggio 2011: da qui
595if(!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
605////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
607if ($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##################
617################### 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);
629#######calcola i seggi per lista
630foreach ($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";
655#####25 maggio 2014 - il candidato sindaco non eletto ha diritto al seggio anche se di maggioranza
656### individua ultimi seggi assegnati a liste collegate
657if($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
681####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];}
684if(isset($listdec[$tempng]))
685foreach($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}
715if ($premio) $consmin=floor($numcons*(100-$suppremio)/100);
716else $consmin=$numcons;
717
718#####calcolo per la minoranza o in caso non ci sia premio di maggioranza
719$gruppomin=calcoloseggi($groups,$consmin,0);
720$ordinati[$gruppo]=$gruppomin[$gruppo];
721foreach ($gruppomin as $key=>$val){
722 if($key!=$gruppo) $ordinati[$key]=$val;
723}
724$gruppomin=$ordinati;
725foreach ($gruppomin as $key=>$val){
726 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)
763 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];}
776foreach ($seggimin as $lista=>$val)
777 if(isset($oldlstgrp[$lista]) and !isset($oldseggi[$lista])) {$oldseggi[$lista]=$val;
778}
779 if($val==0){
780 if($ultimo==''){
781 foreach($oldlists as $lst=>$vot)
782 {
783if (!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])
787 {
788 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
839 }//chiude foreach gruppomin
840# }
841 echo "<table summary=\"Tabella dei consiglieri eletti\" class=\"table-docs\" cellspacing=\"0\" cellpadding=\"2\" border=\"1\" rules=\"all\">";
842 echo "<tr class=\"bggray\"><td scope=\"row\"><b>";
843 echo _SINDACO.": ".$desgruppi[$gruppo]."</b></td></tr></table>";
844 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++;
854 if (!$premio)
855 {
856 foreach($conselb as $key=>$val)
857 {
858 if ($val[2]){
859 $nlst=intval($val[0]);
860 $arlisdesv[]=$val[0];
861 $arlissegv[]=$val[2];
862 }
863 if($listagruppo[$nlst]!=$gruppo) continue;
864 $consel[]=array($val[0],$val[1],$val[2],$val[3],$val[4],$val[5]);
865 }
866 }
867
868 if (isset($conselsin)) foreach($conselsin as $key=>$val)
869 {
870 $consel[]=array($val[0],$val[1]);
871 }
872 foreach($conselb as $key=>$val)
873 {
874 if ($val[2]){
875 $nlst=intval($val[0]);
876 $arlisdesp[]=$val[0];
877 $arlissegp[]=$val[2];
878 }
879 if($listagruppo[$nlst]==$gruppo) continue;
880 $consel[]=array($val[0],$val[1],$val[2],$val[3],$val[4],$val[5]);
881 }
882
883// plotgraf($descrsind,$arlisdesv,$arlissegv,$arlisdesp,$arlissegp,$arcansin); // per grafico
884 stampalista($consel);
885 unset($_SESSION['ballo1']);unset($_SESSION['ballo2']);unset($_SESSION['grp1']);unset($_SESSION['grp2']);
886}
887// Grafico
888function 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";
919echo "<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}
925?>
Note: See TracBrowser for help on using the repository browser.