source: trunk/client/modules/Elezioni/confronti.php@ 285

Last change on this file since 285 was 265, checked in by roby, 6 years ago
File size: 15.9 KB
RevLine 
[2]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 confronti */
9/* */
10/************************************************************************/
11/*
121)visualizza l'elenco delle consultazioni nel comune con una check box per la selezione
132)gli id_cons delle consultazioni selezionate vengono inseriti in $_SESSION['confronti][]
143)per ogni consultazione chiede di associare le liste al gruppo1, al gruppo2 o a nessun gruppo
154)per ogni gruppo1 inserisci id_lista in $gruppo1[], così per ogni gruppo2
165)somma i voti delle liste in gruppo1 per ogni consultazione e inserisci in array1, così per gruppo2
176)proponi la scelta della modalita' di visualizzazione: per voti ottenuti, percentuale su voti validi, percentuale su elettori.
18*/
19if (!defined('MODULE_FILE')) {
20 die ("You can't access this file directly...");
21}
22$param=strtolower($_SERVER['REQUEST_METHOD']) == 'get' ? $_GET : $_POST;
23
24if (isset($param['grp1'])) $grp1=addslashes($param['grp1']); else $grp1='';//_GRUPPO1;
25if (isset($param['grp2'])) $grp2=addslashes($param['grp2']); else $grp2='';//_GRUPPO2;
26if (isset($param['grp3'])) $grp3=addslashes($param['grp3']); else $grp3='';
27if (isset($param['pag'])) $pag=intval($param['pag']); else $pag=0;
28if (isset($param['pags'])) $pags=intval($param['pags']); else $pags=0;
29if (isset($param['listecol'])) $listecol=intval($param['listecol']); else $listecol=0;
30
[98]31$grp1= htmlentities($grp1);
32$grp2= htmlentities($grp2);
33$grp3= htmlentities($grp3);
34
[2]35echo "<table><tr><td align=\"center\">"._CNFR_CONS."</td></tr></table>";
36
37//visualizza le consultazioni tra le quali scegliere quelle da confrontare
38function sceglicons(){
39global $param,$id_cons_gen, $dbi, $prefix, $id_comune;
40$_SESSION['confr']=array();
[98]41$_SESSION['grulis']=array();
[2]42$_SESSION['grp1']=array();
43$_SESSION['grp2']=array();
44$_SESSION['grp3']=array();
45$x=1;
46
47while (isset($_SESSION['num_lista'.$x]))
48 unset($_SESSION['num_lista'.$x]);
49/*$x=1;
50while (isset($param['num_lista'.$x])) {
51 if ($param['num_lista'.$x]==$gruppo) array_push($collegate,$_SESSION['num_lista'.$x]);
52 elseif ($param['num_lista'.$x]!=0) array_push($collperd,$_SESSION['num_lista'.$x]);
53 $x++;
54}*/
[265]55$sql="SELECT t1.descrizione,t2.id_cons FROM ".$prefix."_ele_consultazione as t1, ".$prefix."_ele_cons_comune as t2, ".$prefix."_ele_tipo as t3 where t1.id_cons_gen=t2.id_cons_gen and t1.tipo_cons=t3.tipo_cons and t3.circo='0' and t3.genere>'2' and t2.id_comune='$id_comune' order by t1.data_fine,t1.descrizione";
56$res = $dbi->prepare("$sql");
57$res->execute();
58if ($res->rowCount()){
[2]59 echo "<form id=\"cons\" action=\"modules.php\">";
60 echo "<table><tr><td>"
61 ."<input type=\"hidden\" name=\"op\" value=\"come\"/><input type=\"hidden\" name=\"info\" value=\"confronti\"/>";
62 echo "<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\"/>";
63 echo "<input type=\"hidden\" name=\"id_comune\" value=\"$id_comune\"/>";
64
65 echo "<table><tr>
66 <td>Dai un nome<br/>al il primo gruppo</td><td><input type=\"text\" name=\"grp1\" value=\"\"/></td></tr>
67 <tr><td>Dai un nome<br/>al secondo gruppo</td><td><input type=\"text\" name=\"grp2\" value=\"\"/></td></tr>
68 <tr><td>Se vuoi un raffronto <br/>con il totale degli altri gruppi</td><td><input type=\"checkbox\" name=\"grp3\"/></td></tr>
69 <tr><td align=\"center\" colspan=\"2\"><br/>"._SCELTA_CONS."</td></tr>";
70 $x=1;
[265]71 while (list($descr_cons,$id_cons)= $res->fetch(PDO::FETCH_NUM)){
[2]72 echo "<tr><td>$descr_cons</td><td><input type=\"checkbox\" name=\"check$x\"/>";
73 echo "<input type=\"hidden\" name=\"cons$x\" value=\"$id_cons\"/>";
74 echo "<input type=\"hidden\" name=\"verifica\" value=\"1\"/></td></tr>";
75 $x++;
76 }
77 echo "<tr><td><input type=\"hidden\" name=\"pags\" value=\"$x\"/></td><td><input type=\"submit\" name=\"invia\" value=\""._OK."\"/></td></tr></table>
78 </td>
79 <td class=\"modulo\"><h2>Help on line</h2><br/>
80 <h3>Esempi di uso</h3><br />
81 <b>Raffronto centrodestra-centrosinistra</b><br/>
82 - Mettere i nomi ai gruppi da assemblare<br/>
83 - Scegliere se confrontarli anche con i restanti gruppi<br />
84 - Scegliere le consultazioni, almeno una, da raffrontare e premere ok<br/>
85 - Scegliere le liste da abbinare ad ogni gruppo<br /><br/>
86 <b>Raffronto andamento per un solo gruppo o lista</b><br />
87 - Immettere solo un nome del gruppo lasciando vuoto l'altro<br />
88 - Scegliere le consultazioni premere ok<br />
89 - Scegliere le liste da abbinare ad ogni gruppo<br /><br/>
90
91
92
93
94
95
96</td></tr></table>
97
98</form>";
99}
100}
101
102//visualizza le liste per consultazione e permette di associarle ai gruppi
103function scegliliste(){
[98]104 global $bgcolor1,$bgcolor2,$param,$id_cons_gen, $dbi, $prefix, $id_comune, $pag, $pags,$id_cons,$grp1,$grp2,$grp3,$fascia;
105 $limite=0;
[2]106 // ipotesi di campi vuoti
107 if(!$grp1 && !$grp2 && !$grp3){echo "<span class=\"red\">Metti il nome di almeno un gruppo oppure il check al raffronto totale</span>"; include("footer.php"); exit;}
108
109
110
111
112
113 $verifica=0;
114 if (!$pag) //alla prima esecuzione filtra le consultazioni selezionate
115 {
116 $pag=1;
117 $x=1;
118 $y=1;
119 while (isset($param['cons'.$x])) {
[98]120 if(isset($param[('check'.$x)]) and $param[('check'.$x)])
[2]121
122 {
123 $_SESSION['confr'][$y]=$param[('cons'.$x)];
124 $y++;
125 $verifica++; // verifica di scelte consultazioni
126 }
127 else $pags--;
128 $x++;
129
130 }
131 if ($verifica<=1){echo "<span class=\"red\">Scegli almeno due consultazioni</span>"; include("footer.php"); exit;} //esce
132 }else{
133 $_SESSION['grp1'][$pag]=array();
134 $_SESSION['grp2'][$pag]=array();
135 $_SESSION['grp3'][$pag]=array();
136 $x=1;
137 while (isset($param['num_lista'.$x])) {
138
139 if ($param['num_lista'.$x]=='grp1') {array_push($_SESSION['grp1'][$pag],$_SESSION['num_lista'.$x]);}
140
141 if ($param['num_lista'.$x]=='grp2') {array_push($_SESSION['grp2'][$pag],$_SESSION['num_lista'.$x]);}
142
143 if ($param['num_lista'.$x]=='grp3') {array_push($_SESSION['grp3'][$pag],$_SESSION['num_lista'.$x]);}
144 unset($_SESSION['num_lista'.$x]);
145
146 $x++;
147 }
148 $pag++;
149 }
150 if($pag>=$pags) return(1); //in $pags il numero delle consultazioni
151 $id_cons2=$_SESSION['confr'][$pag];
[265]152 $sql="SELECT t1.descrizione,t1.tipo_cons,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='$id_cons2'";
153 $res_lis = $dbi->prepare("$sql");
154 $res_lis->execute();
155
156 list($descr,$tipoc,$legge)=$res_lis->fetch(PDO::FETCH_NUM);
[98]157 if($legge){
[265]158 $sql="SELECT limite from ".$prefix."_ele_conf where id_conf='$legge'";
159 $res = $dbi->prepare("$sql");
160 $res->execute();
161
162 list($limite)=$res->fetch(PDO::FETCH_NUM);
[98]163 }
164if($tipoc==3 and $fascia<=$limite){
165 $_SESSION['grulis'][$id_cons2]='1';
[265]166 $sql="SELECT t2.id_gruppo,t1.descrizione,t2.descrizione from ".$prefix."_ele_lista as t1 left join ".$prefix."_ele_gruppo as t2 on t1.id_gruppo=t2.id_gruppo where t1.id_cons='$id_cons2' order by t2.num_gruppo";
167
[98]168}else{
[265]169 $sql="SELECT t1.id_lista,t1.descrizione,t2.descrizione from ".$prefix."_ele_lista as t1 left join ".$prefix."_ele_gruppo as t2 on t1.id_gruppo=t2.id_gruppo where t1.id_cons='$id_cons2' order by t2.num_gruppo";
[98]170 $_SESSION['grulis'][$id_cons2]='0';
171 }
[265]172$res_lis = $dbi->prepare("$sql");
173$res_lis->execute();
174
175 $yy=$res_lis->rowCount();
[2]176 if ($yy){
177 echo "<form name=\"liste\" action=\"modules.php\">"
178 ."<input type=\"hidden\" name=\"op\" value=\"come\"/><input type=\"hidden\" name=\"info\" value=\"confronti\">";
179 echo "<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\"/>";
180 echo "<input type=\"hidden\" name=\"id_comune\" value=\"$id_comune\"/>";
181 if($grp1)echo "<input type=\"hidden\" name=\"grp1\" value=\"$grp1\"/>";
182 if($grp2)echo "<input type=\"hidden\" name=\"grp2\" value=\"$grp2\"/>";
183 if($grp3)echo "<input type=\"hidden\" name=\"grp3\" value=\"$grp3\"/>";
184 echo "<br/>";
185 echo "<table cellspacing=\"0\" cellpadding=\"2\" border=\"1\"><tr class=\"bggray\"><td bgcolor=\"$bgcolor1\" colspan=\"5\">"._CONSULTAZIONE.": <b>$descr</b><br/>"._SCELTA_LISTE."</td></tr><tr class=\"bggray\"><td bgcolor=\"$bgcolor1\" colspan=\"2\"></td>";
186 if($grp1)echo "<td bgcolor=\"$bgcolor1\"><b>$grp1</b></td>";
187 if($grp2)echo "<td bgcolor=\"$bgcolor1\"><b>$grp2</b></td>";
188 echo "<td bgcolor=\"$bgcolor1\"><b>"._ALTROGRP."</b></td>";
189 echo "</tr>";
190 $z=1;
[265]191 while(list($id_lista,$descr,$gruppo) = $res_lis->fetch(PDO::FETCH_NUM)) {
[2]192 $_SESSION['num_lista'.$z]=$id_lista;
193 echo "<tr><td>$gruppo</td><td>$descr</td>";
194 if($grp1)echo "<td><input type=\"radio\" name=\"num_lista$z\" value=\"grp1\"/></td>";
195 if($grp2)echo "<td><input type=\"radio\" name=\"num_lista$z\" value=\"grp2\"/></td>";
196 echo "<td><input type=\"radio\" name=\"num_lista$z\" value=\"grp3\" checked=\"checked\"/></td>";
197
198 echo "</tr>";
199 $z++;
200 }
201 echo "<tr><td colspan=\"5\"><input type=\"hidden\" name=\"pag\" value=\"$pag\"/><input type=\"hidden\" name=\"pags\" value=\"$pags\"/>";
202 echo "<input type=\"submit\" name=\"invia\" value=\""._OK."\"/></td></tr></table></form>";
203 }
204 return(0);
205}
206
207// stampa a video i risultati
208function outgraf($ar1,$ar2,$ar3){
209global $pags,$id_comune,$prefix,$dbi,$grp1,$grp2,$grp3;
210
211$riga1="<table border=\"1\"><tr class=\"bggray\"><td></td>";
212$riga5="<tr align=\"center\"><td>"._VOTANTI."</td>";
213foreach($_SESSION['confr'] as $y=>$x){
[265]214 $sql="SELECT sum(maschi+femmine) from ".$prefix."_ele_sezioni where id_cons='$x'";
215 $res = $dbi->prepare("$sql");
216 $res->execute();
217
218 list($elet)=$res->fetch(PDO::FETCH_NUM);
[98]219 if($_SESSION['grulis'][$x]=='1')
[265]220 $sql="SELECT sum(voti) from ".$prefix."_ele_voti_gruppo where id_cons='$x'";
[98]221 else
[265]222 $sql="SELECT sum(voti) from ".$prefix."_ele_voti_lista where id_cons='$x'";
223 $res = $dbi->prepare("$sql");
224 $res->execute();
225
226 list($tot[$y])=$res->fetch(PDO::FETCH_NUM);
227 $sql="SELECT t1.descrizione FROM ".$prefix."_ele_consultazione as t1, ".$prefix."_ele_cons_comune as t2 where t1.id_cons_gen=t2.id_cons_gen and t2.id_comune='$id_comune' and t2.id_cons='$x'";
228 $res = $dbi->prepare("$sql");
229 $res->execute();
230 list($descr)=$res->fetch(PDO::FETCH_NUM);
[2]231 $riga1.="<td>$descr</td>";
232 $riga5.="<td>".$tot[$y]."<br/>".number_format($tot[$y]*100/$elet)."%</td>";
233 // dati per grafico
234 $descriz[$y]=$descr;
235 $perctot[$y]=number_format($tot[$y]*100/$elet);
236
237 }
238$riga1.="</tr>";
239if($grp1)$riga2="<tr align=\"center\"><td>$grp1</td>";
240if($grp2)$riga3="<tr align=\"center\"><td>$grp2</td>";
241if($grp3)$riga4="<tr align=\"center\"><td>"._ALTROGRP."</td>"; else $riga4='';
242#for ($x=1;$x<=$pags;$x++){
243foreach($_SESSION['confr'] as $x=>$y){
244 $perc1=number_format(($ar1[$x]*100/$tot[$x]),2);
245 $perc2=number_format(($ar2[$x]*100/$tot[$x]),2);
246 $perc3=number_format(($ar3[$x]*100/$tot[$x]),2);
247 $perc4=number_format(($ar1[$x]*100/$tot[$x]),3);
248 $perc5=number_format(($ar2[$x]*100/$tot[$x]),3);
249 $perc6=number_format(($ar3[$x]*100/$tot[$x]),3);
250 if (($perc1+$perc2+$perc3)>(100.00)){
251 if((($perc4*1000)%10)<(($perc5*1000) % 10)) $max=1; else $max=2;
252 if ($max==1) if((($perc4*1000)%10)>(($perc6*1000)%10)) $max=3;
253 elseif((($perc5*1000)%10)>(($perc6*1000)%10)) $max=3;
254 if($max==1)$perc1-=0.01;
255 elseif($max==2)$perc2-=0.01;
256 else $perc3-=0.01;
257 }elseif (($perc4+$perc5+$perc6)<(100.00))
258 {
259 if((($perc4*1000)%10)>(($perc5*1000) % 10)) $max=1; else $max=2;
260 if ($max==1) if((($perc4*1000)%10)<(($perc6*1000)%10)) $max=3;
261 elseif((($perc5*1000)%10)<(($perc6*1000)%10)) $max=3;
262 if($max==1)$perc1+=0.01;
263 elseif($max==2)$perc2+=0.01;
264 else $perc3+=0.01;
265 }
266 if($grp1)$riga2.= "<td>".$ar1[$x]."<br/>$perc1%</td>";
267 if($grp2)$riga3.= "<td>".$ar2[$x]."<br/>$perc2%</td>";
268 if($grp3)$riga4.= "<td>".$ar3[$x]."<br/>$perc3%</td>";
269 // per grafici
270 $percg1[$x]=$perc1;
271 $percg2[$x]=$perc2;
272 $percg3[$x]=$perc3;
273}
274if($grp1)$riga2.="</tr>";if($grp2)$riga3.="</tr>";if($grp3)$riga4.="</tr>";$riga5.="</tr></table>";
275echo $riga1.$riga2.$riga3.$riga4.$riga5;
276
277/* dati da inviare in array al grafico
278$descrizione: consultazione
279$grp1 e grp2: nome dei gruppi
280$ar1 fino a 3 : numero voti gruppi e altri
281percg1 fino a 3 : percentuali gruppi e altri
282$tot : totale voti
283$perctot : percentuale totale voti
284$altro="Altro";
285
286echo "<br/>";
287foreach($_SESSION['confr'] as $x=>$y){
288echo "$descriz[$x]<br/>";
289echo "$grp1 : $ar1[$x] - $percg1[$x]%<br/>";
290echo "$grp2 : $ar2[$x] - $percg2[$x]%<br/>";
291echo "Altri : $ar3[$x] - $percg3[$x]%<br/>";
292echo "Totali: $tot[$x] - $perctot[$x]%<hr>";
293
294
295}
296*/
297// preparazione per grafico
298foreach($ar1 as $val) $ars1[]=$val;
299foreach($ar2 as $val) $ars2[]=$val;
300foreach($ar3 as $val) $ars3[]=$val;
301foreach($percg1 as $val) $per1[]=$val;
302foreach($percg2 as $val) $per2[]=$val;
303foreach($percg3 as $val) $per3[]=$val;
304foreach($descriz as $val) $desc[]=$val;
305
306// includere nel linguaggio
307define("_TITOLOVOTI","Raffronti per voto");
308define("_TITOLOPERC","Raffronti percentuali");
309define("_ALTRO","Altri");
310
311if(!$grp1 && !$grp2)$altro=""._ALL."";
312else $altro=""._ALTRO."";
313
314$titolovoti=urlencode(_TITOLOVOTI);
315$titoloperc=urlencode(_TITOLOPERC);
316$altro=urlencode($altro);
317$desc=serialize($desc);
318//$desc=urlencode($desc);
319
320
321$grp1=urlencode($grp1);
322$grp2=urlencode($grp2);
323$grp3=urlencode($grp3);
324$altro=urlencode($altro);
325// voti
326$ars1=serialize($ars1);
327$ars1=urlencode($ars1);
328$ars2=serialize($ars2);
329$ars2=urlencode($ars2);
330$ars3=serialize($ars3);
331$ars3=urlencode($ars3);
332// percentuali
333$per1=serialize($per1);
334$per1=urlencode($per1);
335$per2=serialize($per2);
336$per2=urlencode($per2);
337$per3=serialize($per3);
338$per3=urlencode($per3);
339
[105]340$logo=verificasimbolo();
[2]341
342 echo "<table><tr><td>
[105]343 <img src='modules/Elezioni/grafici/raffrontivoto.php?altro=$altro&amp;desc=$desc&amp;grp1=$grp1&amp;grp2=$grp2&amp;grp3=$grp3&amp;ar1=$ars1&amp;ar2=$ars2&amp;ar3=$ars3&amp;tot=$tot&amp;titvoti=$titolovoti&amp;logo=$logo' alt=\"Grafico\" /></td></tr></table>";
[2]344
345 echo "<table><tr><td>
[105]346 <img src='modules/Elezioni/grafici/raffrontiperc.php?altro=$altro&amp;desc=$desc&amp;grp1=$grp1&amp;grp2=$grp2&amp;grp3=$grp3&amp;percg1=$per1&amp;percg2=$per2&amp;percg3=$per3&amp;perctot=$perctot&amp;titperc=$titoloperc&amp;logo=$logo' alt=\"Grafico\" /></td></tr></table>";
[2]347
348
349}
350
351$zz=0;
352if (!$pags) sceglicons();
353elseif($pag<=$pags) {$zz=scegliliste();
354}
355
356if($zz !=0) {
357 for ($x=1;$x<$pags;$x++){
358 $ar1[$x]=0;
359 $ar2[$x]=0;
360 $ar3[$x]=0;
[98]361 $id_cons2=$_SESSION['confr'][$x];
[2]362 foreach ($_SESSION['grp1'][$x] as $key=>$val){
[98]363 if($_SESSION['grulis'][$id_cons2]=='1')
[265]364 $sql="SELECT sum(voti) from ".$prefix."_ele_voti_gruppo where id_gruppo='$val'";
[98]365 else
[265]366 $sql="SELECT sum(voti) from ".$prefix."_ele_voti_lista where id_lista='$val'";
367 $res = $dbi->prepare("$sql");
368 $res->execute();
369
370 list($voti)=$res->fetch(PDO::FETCH_NUM);
[2]371 $ar1[$x]+=$voti;
372 }
373 foreach ($_SESSION['grp2'][$x] as $key=>$val){
[98]374 if($_SESSION['grulis'][$id_cons2]=='1')
[265]375 $sql="SELECT sum(voti) from ".$prefix."_ele_voti_gruppo where id_gruppo='$val'";
[98]376 else
[265]377 $sql="SELECT sum(voti) from ".$prefix."_ele_voti_lista where id_lista='$val'";
378 $res = $dbi->prepare("$sql");
379 $res->execute();
380
381 list($voti)=$res->fetch(PDO::FETCH_NUM);
[2]382 $ar2[$x]+=$voti;
383 }
384 foreach ($_SESSION['grp3'][$x] as $key=>$val){
[98]385 if($_SESSION['grulis'][$id_cons2]=='1')
[265]386 $sql="SELECT sum(voti) from ".$prefix."_ele_voti_gruppo where id_gruppo='$val'";
[98]387 else
[265]388 $sql="SELECT sum(voti) from ".$prefix."_ele_voti_lista where id_lista='$val'";
389 $res = $dbi->prepare("$sql");
390 $res->execute();
391
392 list($voti)=$res->fetch(PDO::FETCH_NUM);
[2]393 $ar3[$x]+=$voti;
394 }
395 }
396 outgraf($ar1,$ar2,$ar3);
397
398}
399
400?>
Note: See TracBrowser for help on using the repository browser.