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

Last change on this file since 73 was 13, checked in by roby, 14 years ago

sicurezza anti xss

File size: 14.5 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 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
31$grp1= htmlentities($grp1);
32$grp2= htmlentities($grp2);
33$grp3= htmlentities($grp3);
34
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();
41$_SESSION['grp1']=array();
42$_SESSION['grp2']=array();
43$_SESSION['grp3']=array();
44$x=1;
45
46while (isset($_SESSION['num_lista'.$x]))
47 unset($_SESSION['num_lista'.$x]);
48/*$x=1;
49while (isset($param['num_lista'.$x])) {
50 if ($param['num_lista'.$x]==$gruppo) array_push($collegate,$_SESSION['num_lista'.$x]);
51 elseif ($param['num_lista'.$x]!=0) array_push($collperd,$_SESSION['num_lista'.$x]);
52 $x++;
53}*/
54$res = mysql_query("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", $dbi);
55if (mysql_num_rows($res)){
56 echo "<form id=\"cons\" action=\"modules.php\">";
57 echo "<table><tr><td>"
58 ."<input type=\"hidden\" name=\"op\" value=\"come\"/><input type=\"hidden\" name=\"info\" value=\"confronti\"/>";
59 echo "<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\"/>";
60 echo "<input type=\"hidden\" name=\"id_comune\" value=\"$id_comune\"/>";
61
62 echo "<table><tr>
63 <td>Dai un nome<br/>al il primo gruppo</td><td><input type=\"text\" name=\"grp1\" value=\"\"/></td></tr>
64 <tr><td>Dai un nome<br/>al secondo gruppo</td><td><input type=\"text\" name=\"grp2\" value=\"\"/></td></tr>
65 <tr><td>Se vuoi un raffronto <br/>con il totale degli altri gruppi</td><td><input type=\"checkbox\" name=\"grp3\"/></td></tr>
66 <tr><td align=\"center\" colspan=\"2\"><br/>"._SCELTA_CONS."</td></tr>";
67 $x=1;
68 while (list($descr_cons,$id_cons)= mysql_fetch_row($res)){
69 echo "<tr><td>$descr_cons</td><td><input type=\"checkbox\" name=\"check$x\"/>";
70 echo "<input type=\"hidden\" name=\"cons$x\" value=\"$id_cons\"/>";
71 echo "<input type=\"hidden\" name=\"verifica\" value=\"1\"/></td></tr>";
72 $x++;
73 }
74 echo "<tr><td><input type=\"hidden\" name=\"pags\" value=\"$x\"/></td><td><input type=\"submit\" name=\"invia\" value=\""._OK."\"/></td></tr></table>
75 </td>
76 <td class=\"modulo\"><h2>Help on line</h2><br/>
77 <h3>Esempi di uso</h3><br />
78 <b>Raffronto centrodestra-centrosinistra</b><br/>
79 - Mettere i nomi ai gruppi da assemblare<br/>
80 - Scegliere se confrontarli anche con i restanti gruppi<br />
81 - Scegliere le consultazioni, almeno una, da raffrontare e premere ok<br/>
82 - Scegliere le liste da abbinare ad ogni gruppo<br /><br/>
83 <b>Raffronto andamento per un solo gruppo o lista</b><br />
84 - Immettere solo un nome del gruppo lasciando vuoto l'altro<br />
85 - Scegliere le consultazioni premere ok<br />
86 - Scegliere le liste da abbinare ad ogni gruppo<br /><br/>
87
88
89
90
91
92
93</td></tr></table>
94
95</form>";
96}
97}
98
99//visualizza le liste per consultazione e permette di associarle ai gruppi
100function scegliliste(){
101 global $bgcolor1,$bgcolor2,$param,$id_cons_gen, $dbi, $prefix, $id_comune, $pag, $pags,$id_cons,$grp1,$grp2,$grp3;
102 // ipotesi di campi vuoti
103 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;}
104
105
106
107
108
109 $verifica=0;
110 if (!$pag) //alla prima esecuzione filtra le consultazioni selezionate
111 {
112 $pag=1;
113 $x=1;
114 $y=1;
115 while (isset($param['cons'.$x])) {
116 if($param[('check'.$x)])
117
118 {
119 $_SESSION['confr'][$y]=$param[('cons'.$x)];
120 $y++;
121 $verifica++; // verifica di scelte consultazioni
122 }
123 else $pags--;
124 $x++;
125
126 }
127 if ($verifica<=1){echo "<span class=\"red\">Scegli almeno due consultazioni</span>"; include("footer.php"); exit;} //esce
128 }else{
129 $_SESSION['grp1'][$pag]=array();
130 $_SESSION['grp2'][$pag]=array();
131 $_SESSION['grp3'][$pag]=array();
132 $x=1;
133 while (isset($param['num_lista'.$x])) {
134
135 if ($param['num_lista'.$x]=='grp1') {array_push($_SESSION['grp1'][$pag],$_SESSION['num_lista'.$x]);}
136
137 if ($param['num_lista'.$x]=='grp2') {array_push($_SESSION['grp2'][$pag],$_SESSION['num_lista'.$x]);}
138
139 if ($param['num_lista'.$x]=='grp3') {array_push($_SESSION['grp3'][$pag],$_SESSION['num_lista'.$x]);}
140 unset($_SESSION['num_lista'.$x]);
141
142 $x++;
143 }
144 $pag++;
145 }
146 if($pag>=$pags) return(1); //in $pags il numero delle consultazioni
147 $id_cons2=$_SESSION['confr'][$pag];
148 $res_lis = mysql_query("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_cons='$id_cons2'",$dbi);
149 list($descr)=mysql_fetch_row($res_lis);
150# $res_lis = mysql_query("SELECT t1.id_lista,t1.descrizione,t2.descrizione from ".$prefix."_ele_lista as t1, ".$prefix."_ele_gruppo as t2 where t1.id_gruppo=t2.id_gruppo and t1.id_cons='$id_cons2' order by t2.num_gruppo",$dbi);
151 $res_lis = mysql_query("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",$dbi);
152 $yy=mysql_num_rows($res_lis);
153 if ($yy){
154 echo "<form name=\"liste\" action=\"modules.php\">"
155 ."<input type=\"hidden\" name=\"op\" value=\"come\"/><input type=\"hidden\" name=\"info\" value=\"confronti\">";
156 echo "<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\"/>";
157 echo "<input type=\"hidden\" name=\"id_comune\" value=\"$id_comune\"/>";
158 if($grp1)echo "<input type=\"hidden\" name=\"grp1\" value=\"$grp1\"/>";
159 if($grp2)echo "<input type=\"hidden\" name=\"grp2\" value=\"$grp2\"/>";
160 if($grp3)echo "<input type=\"hidden\" name=\"grp3\" value=\"$grp3\"/>";
161 echo "<br/>";
162 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>";
163 if($grp1)echo "<td bgcolor=\"$bgcolor1\"><b>$grp1</b></td>";
164 if($grp2)echo "<td bgcolor=\"$bgcolor1\"><b>$grp2</b></td>";
165 echo "<td bgcolor=\"$bgcolor1\"><b>"._ALTROGRP."</b></td>";
166 echo "</tr>";
167 $z=1;
168 while(list($id_lista,$descr,$gruppo) = mysql_fetch_row($res_lis)) {
169 $_SESSION['num_lista'.$z]=$id_lista;
170 echo "<tr><td>$gruppo</td><td>$descr</td>";
171 if($grp1)echo "<td><input type=\"radio\" name=\"num_lista$z\" value=\"grp1\"/></td>";
172 if($grp2)echo "<td><input type=\"radio\" name=\"num_lista$z\" value=\"grp2\"/></td>";
173 echo "<td><input type=\"radio\" name=\"num_lista$z\" value=\"grp3\" checked=\"checked\"/></td>";
174
175 echo "</tr>";
176 $z++;
177 }
178 echo "<tr><td colspan=\"5\"><input type=\"hidden\" name=\"pag\" value=\"$pag\"/><input type=\"hidden\" name=\"pags\" value=\"$pags\"/>";
179 echo "<input type=\"submit\" name=\"invia\" value=\""._OK."\"/></td></tr></table></form>";
180 }
181 return(0);
182}
183
184// stampa a video i risultati
185function outgraf($ar1,$ar2,$ar3){
186global $pags,$id_comune,$prefix,$dbi,$grp1,$grp2,$grp3;
187
188$riga1="<table border=\"1\"><tr class=\"bggray\"><td></td>";
189$riga5="<tr align=\"center\"><td>"._VOTANTI."</td>";
190foreach($_SESSION['confr'] as $y=>$x){
191 $res= mysql_query("SELECT sum(maschi+femmine) from ".$prefix."_ele_sezioni where id_cons='$x'",$dbi);
192 list($elet)=mysql_fetch_row($res);
193 $res= mysql_query("SELECT sum(voti) from ".$prefix."_ele_voti_lista where id_cons='$x'",$dbi);
194 list($tot[$y])=mysql_fetch_row($res);
195 $res = mysql_query("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'", $dbi);
196 list($descr)=mysql_fetch_row($res);
197 $riga1.="<td>$descr</td>";
198 $riga5.="<td>".$tot[$y]."<br/>".number_format($tot[$y]*100/$elet)."%</td>";
199 // dati per grafico
200 $descriz[$y]=$descr;
201 $perctot[$y]=number_format($tot[$y]*100/$elet);
202
203 }
204$riga1.="</tr>";
205if($grp1)$riga2="<tr align=\"center\"><td>$grp1</td>";
206if($grp2)$riga3="<tr align=\"center\"><td>$grp2</td>";
207if($grp3)$riga4="<tr align=\"center\"><td>"._ALTROGRP."</td>"; else $riga4='';
208#for ($x=1;$x<=$pags;$x++){
209foreach($_SESSION['confr'] as $x=>$y){
210 $perc1=number_format(($ar1[$x]*100/$tot[$x]),2);
211 $perc2=number_format(($ar2[$x]*100/$tot[$x]),2);
212 $perc3=number_format(($ar3[$x]*100/$tot[$x]),2);
213 $perc4=number_format(($ar1[$x]*100/$tot[$x]),3);
214 $perc5=number_format(($ar2[$x]*100/$tot[$x]),3);
215 $perc6=number_format(($ar3[$x]*100/$tot[$x]),3);
216 if (($perc1+$perc2+$perc3)>(100.00)){
217 if((($perc4*1000)%10)<(($perc5*1000) % 10)) $max=1; else $max=2;
218 if ($max==1) if((($perc4*1000)%10)>(($perc6*1000)%10)) $max=3;
219 elseif((($perc5*1000)%10)>(($perc6*1000)%10)) $max=3;
220 if($max==1)$perc1-=0.01;
221 elseif($max==2)$perc2-=0.01;
222 else $perc3-=0.01;
223 }elseif (($perc4+$perc5+$perc6)<(100.00))
224 {
225 if((($perc4*1000)%10)>(($perc5*1000) % 10)) $max=1; else $max=2;
226 if ($max==1) if((($perc4*1000)%10)<(($perc6*1000)%10)) $max=3;
227 elseif((($perc5*1000)%10)<(($perc6*1000)%10)) $max=3;
228 if($max==1)$perc1+=0.01;
229 elseif($max==2)$perc2+=0.01;
230 else $perc3+=0.01;
231 }
232 if($grp1)$riga2.= "<td>".$ar1[$x]."<br/>$perc1%</td>";
233 if($grp2)$riga3.= "<td>".$ar2[$x]."<br/>$perc2%</td>";
234 if($grp3)$riga4.= "<td>".$ar3[$x]."<br/>$perc3%</td>";
235 // per grafici
236 $percg1[$x]=$perc1;
237 $percg2[$x]=$perc2;
238 $percg3[$x]=$perc3;
239}
240if($grp1)$riga2.="</tr>";if($grp2)$riga3.="</tr>";if($grp3)$riga4.="</tr>";$riga5.="</tr></table>";
241echo $riga1.$riga2.$riga3.$riga4.$riga5;
242
243/* dati da inviare in array al grafico
244$descrizione: consultazione
245$grp1 e grp2: nome dei gruppi
246$ar1 fino a 3 : numero voti gruppi e altri
247percg1 fino a 3 : percentuali gruppi e altri
248$tot : totale voti
249$perctot : percentuale totale voti
250$altro="Altro";
251
252echo "<br/>";
253foreach($_SESSION['confr'] as $x=>$y){
254echo "$descriz[$x]<br/>";
255echo "$grp1 : $ar1[$x] - $percg1[$x]%<br/>";
256echo "$grp2 : $ar2[$x] - $percg2[$x]%<br/>";
257echo "Altri : $ar3[$x] - $percg3[$x]%<br/>";
258echo "Totali: $tot[$x] - $perctot[$x]%<hr>";
259
260
261}
262*/
263// preparazione per grafico
264foreach($ar1 as $val) $ars1[]=$val;
265foreach($ar2 as $val) $ars2[]=$val;
266foreach($ar3 as $val) $ars3[]=$val;
267foreach($percg1 as $val) $per1[]=$val;
268foreach($percg2 as $val) $per2[]=$val;
269foreach($percg3 as $val) $per3[]=$val;
270foreach($descriz as $val) $desc[]=$val;
271
272// includere nel linguaggio
273define("_TITOLOVOTI","Raffronti per voto");
274define("_TITOLOPERC","Raffronti percentuali");
275define("_ALTRO","Altri");
276
277if(!$grp1 && !$grp2)$altro=""._ALL."";
278else $altro=""._ALTRO."";
279
280$titolovoti=urlencode(_TITOLOVOTI);
281$titoloperc=urlencode(_TITOLOPERC);
282$altro=urlencode($altro);
283$desc=serialize($desc);
284//$desc=urlencode($desc);
285
286
287$grp1=urlencode($grp1);
288$grp2=urlencode($grp2);
289$grp3=urlencode($grp3);
290$altro=urlencode($altro);
291// voti
292$ars1=serialize($ars1);
293$ars1=urlencode($ars1);
294$ars2=serialize($ars2);
295$ars2=urlencode($ars2);
296$ars3=serialize($ars3);
297$ars3=urlencode($ars3);
298// percentuali
299$per1=serialize($per1);
300$per1=urlencode($per1);
301$per2=serialize($per2);
302$per2=urlencode($per2);
303$per3=serialize($per3);
304$per3=urlencode($per3);
305
306
307 echo "<table><tr><td>
308 <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' alt=\"Grafico\" /></td></tr></table>";
309
310 echo "<table><tr><td>
311 <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' alt=\"Grafico\" /></td></tr></table>";
312
313
314}
315
316$zz=0;
317if (!$pags) sceglicons();
318elseif($pag<=$pags) {$zz=scegliliste();
319}
320
321if($zz !=0) {
322 for ($x=1;$x<$pags;$x++){
323 $ar1[$x]=0;
324 $ar2[$x]=0;
325 $ar3[$x]=0;
326 foreach ($_SESSION['grp1'][$x] as $key=>$val){
327 $res= mysql_query("SELECT sum(voti) from ".$prefix."_ele_voti_lista where id_lista='$val'",$dbi);
328 list($voti)=mysql_fetch_row($res);
329 $ar1[$x]+=$voti;
330 }
331 foreach ($_SESSION['grp2'][$x] as $key=>$val){
332 $res= mysql_query("SELECT sum(voti) from ".$prefix."_ele_voti_lista where id_lista='$val'",$dbi);
333 list($voti)=mysql_fetch_row($res);
334 $ar2[$x]+=$voti;
335 }
336 foreach ($_SESSION['grp3'][$x] as $key=>$val){
337 $res= mysql_query("SELECT sum(voti) from ".$prefix."_ele_voti_lista where id_lista='$val'",$dbi);
338 list($voti)=mysql_fetch_row($res);
339 $ar3[$x]+=$voti;
340 }
341 }
342 outgraf($ar1,$ar2,$ar3);
343
344}
345
346?>
Note: See TracBrowser for help on using the repository browser.