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

Last change on this file since 250 was 105, checked in by eol, 13 years ago

Sistemazione elementi grafici e di esportazione dati, stemma sui grafici (var nel config.php $ins_logo=0 per eliminare lo stemma).

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