source: trunk/client/modules/Elezioni/funzioni.php@ 65

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

creata funzione per gestione calcolo percentuali in visualizzazione completa di arrotondamento (applicata solo ai totali in visualizzazione griglia per verifica)

File size: 11.3 KB
Line 
1<?php
2
3/************************************************************************/
4/* Eleonline - Raccolta e diffusione dei dati elettorali */
5/* by Luciano Apolito & Roberto Gigli */
6/* http://www.eleonline.it */
7/* info@eleonline.it luciano@aniene.net rgigli@libero.it */
8/************************************************************************/
9
10
11/*******************************************************
12 #'Pagina precedente' e 'Pagina Successiva' #
13 immettere nel file da dividere la lettura
14 del numero complessivo dei dati:
15 Es: $max=sql_num_rows($res);
16
17 l'offset settato al numero dei dati da
18 visualizzare per pagina:
19 Es: $offset=5;
20
21 l'azzeramento della variabile $min
22 Es: if (!isset($min)) $min=0;
23
24 il nome del file (opzione) da ricaricare)
25 Es: $file="gruppopercsez"; // nome op per pagine
26
27
28*/
29
30
31
32function page($id_cons,$go,$max,$min,$prev,$next,$offset,$file){
33global $lettera,$ordine,$id_comune;
34
35
36 echo"<br /><div class=\"modulo\">";
37 $prev=$min-$offset;
38 if ($prev>=0) {
39 echo "<a href=\"modules.php?name=Elezioni&amp;op=$go&amp;min=$prev&amp;id_cons_gen=$id_cons&amp;id_comune=$id_comune&amp;file=$file&amp;lettera=$lettera&amp;ordine=$ordine\">";
40 echo "[ <b>$offset "._PREV_MATCH."</b> ]</a>";
41 }
42
43 $next=$min+$offset;
44 if ($next>=($offset-1)) {
45 if($next>=$max) $next = $max;
46 else {
47
48 echo "<a href=\"modules.php?name=Elezioni&amp;op=$go&amp;min=$next&amp;id_cons_gen=$id_cons&amp;id_comune=$id_comune&amp;file=$file&amp;lettera=$lettera&amp;ordine=$ordine\">";
49 echo " [<b>$offset "._NEXT_MATCH."</b> ] </a>";
50 }
51 }
52 echo "</div><br /><br/>";
53
54}
55
56
57
58
59
60// *********************************
61// Funzioni formattazione data
62// ***********************************
63
64
65function giorno()
66{
67$giorni= array('--','01','02','03','04','05','06','07','08','09','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28','29','30','31');
68foreach($giorni as $gi)
69 $giorno .= "<option value=$gi>$gi</option>";
70$giorno .= "</select>";
71echo "$giorno";
72}
73
74
75function mese()
76{
77$mesi= array('--','01','02','03','04','05','06','07','08','09','10','11','12');
78foreach($mesi as $me)
79 $mese .= "<option value=$me>$me </option>";
80$mese .= "</select>";
81echo "$mese";
82}
83
84function anno()
85{
86$curr=date("Y",time());
87$anni=array('--',$curr--,$curr--,$curr--,$curr--,$curr--,$curr--,$curr--);
88foreach($anni as $an)
89 $anno .= "<option value=$an>$an</option>";
90$anno .= "</select>";
91echo "$anno";
92}
93
94function ore()
95{
96$ore= array('00','01','02','03','04','05','06','07','08','09','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24');
97foreach($ore as $ori)
98 $ore .= "<option value=$ori>$ori</option>";
99$ore .= "</select>";
100echo "$ore";
101}
102
103
104function minuti()
105{
106$minuti= array('00','01','02','03','04','05','06','07','08','09','10','11','12','13','14',
107'15', '16', '17', '18','19','20','21','22','23','24','25','26','27','28','29','30','31','32','33',
108'34','35','36','37','38','39','40','41','42','43','44','45','46','47','48','49','50',
109'51','52','53','54','55','56','57','58','59');
110foreach($minuti as $minu)
111 $minuti .= "<option value=$minu>$minu </option>";
112$minuti .= "</select>";
113echo "$minuti";
114}
115
116function secondi()
117{
118$secondi= array('00','01','02','03','04','05','06','07','08','09','10','11','12','13','14',
119'15', '16', '17', '18','19','20','21','22','23','24','25','26','27','28','29','30','31','32','33',
120'34','35','36','37','38','39','40','41','42','43','44','45','46','47','48','49','50',
121'51','52','53','54','55','56','57','58','59');
122foreach($secondi as $sec)
123 $secondi .= "<option value=$sec>$sec</option>";
124$secondi .= "</select>";
125echo "$secondi";
126}
127
128
129
130function form_data($data)
131
132 {
133 list($anno,$mese,$giorno) = explode("-", $data) ;
134 if ($giorno>0)
135 return("$giorno-$mese-$anno");
136 else
137 return("&nbsp; ");
138 }
139
140
141function taglio($parole,$descrizione)
142{
143
144/* funzione per il taglio di una frase giusta senza
145troncare le parole by luc 13 febbraio 2007
146uso:
147taglio(numero di parole, frase)
148*/
149
150$lunghezza=strlen($descrizione);
151$altra='0';
152$testo='';
153$lettera='';
154
155
156for ($x=0;$x<$parole;$x++){
157 if($testo!='')$testo .=" ";
158
159 for ($j=$altra;$j<$lunghezza;$j++){
160 $lettera=$descrizione{$j};
161 if ($lettera!=" "){
162 $testo .=$lettera;
163 }else{
164 $altra=$j+1; $j=$lunghezza;
165 }
166
167 }
168}
169
170
171return "$testo";
172
173}
174#### legge freed rss 1.0
175
176function readrss($url) {
177
178
179 $rdf = parse_url($url);
180 $fp = fsockopen($rdf['host'], 80, $errno, $errstr, 15);
181 if (!$fp) {
182 $content = "";
183 echo $content;
184 return;
185 }
186
187 if ($fp) {
188 if (!empty($rdf['query']))
189 $rdf['query'] = "?" . $rdf['query'];
190
191 fputs($fp, "GET " . $rdf['path'] . $rdf['query'] . " HTTP/1.0\r\n");
192 fputs($fp, "HOST: " . $rdf['host'] . "\r\n\r\n");
193 $string = "";
194
195 while(!feof($fp)) {
196 $pagetext = fgets($fp,300);
197 $string .= chop($pagetext);
198 }
199
200
201
202
203 fputs($fp,"Connection: close\r\n\r\n");
204 fclose($fp);
205 $items = explode("</item>",$string);
206 $content ="<h5>Risultati </h5>";
207 $content .= "<span class=\"content\">";
208
209 for ($i=0;$i<20;$i++) {
210 $link = preg_replace("/.*<link>/","",$items[$i]);
211 $link = preg_replace("/</link>.*/","",$link);
212 $title2 = preg_replace("/.*<title>/","",$items[$i]);
213 $title2 = preg_replace("/</title>.*/","",$title2);
214 $title2 = stripslashes($title2);
215 $descr = preg_replace("/.*<description>/","",$items[$i]);
216 $descr = preg_replace("/</description>.*/","",$descr );
217 $descr = stripslashes($descr );
218
219 if (empty($items[$i]) AND $cont != 1) {
220 $content = "";
221
222 $cont = 0;
223
224 echo $content;
225 return;
226 } else {
227 if (strcmp($link,$title2) AND !empty($items[$i])) {
228 $cont = 1;
229 $content .= "<strong><big>&middot;</big></strong> <a href=\"$link\" target=\"new\">$title2</a> $descr<br />\n";
230 }
231 }
232
233 }
234
235
236 }
237
238 if (($cont == 0) OR (empty($content))) {
239 $content = "<span class=\"content\">Problema feed rss</span>";
240 }
241
242 echo $content;
243
244}
245### legge i risultati e li reinvia
246### richiamare con
247### list ($gruppo,$pro)=grupporss();
248
249function grupporss() {
250global $admin, $bgcolor1, $bgcolor5, $prefix, $dbi, $offset, $min,$descr_cons,$genere,$votog,$votol,$votoc,$circo, $id_cons,$id_cons_gen,$id_comune,$id_circ,$tipo_cons,$w,$l,$op,$siteistat,$flash,$circondt1 ;
251
252
253
254
255 //if($genere=='4' || $tipo_cons>='10') $tab="ele_voti_lista";
256 if($genere=='4' || $votog) $tab="ele_voti_lista";
257 else $tab="ele_voti_gruppo";
258
259
260
261 $res = mysql_query("select * from ".$prefix."_$tab where id_cons='$id_cons' group by id_sez ",$dbi);
262
263 if ($res) $numero=mysql_num_rows($res);else $numero=0;
264 $res = mysql_query("select t2.* from ".$prefix."_ele_sezioni as t2, ".$prefix."_ele_sede as t1 where t2.id_cons='$id_cons' and t1.id_sede=t2.id_sede $circondt1",$dbi);
265 if ($res) $sezioni=mysql_num_rows($res);else $sezioni=0;
266
267 if ($numero>0){
268 if ($genere!=0){
269 $restotv = mysql_query("select sum(voti) from ".$prefix."_$tab where id_cons='$id_cons' ", $dbi);
270 list($tot) = mysql_fetch_row($restotv);
271
272 $i=0;
273 // lista o gruppo
274 if ($genere!=4){
275
276 if ($votog){
277
278 $res = mysql_query("select t1.id_gruppo, t1.num_gruppo, t1.descrizione, sum(t2.voti) as somma
279 from ".$prefix."_ele_gruppo as t1,
280 ".$prefix."_ele_voti_lista as t2,
281 ".$prefix."_ele_lista as t3
282 where t1.id_cons='$id_cons'
283 and t2.id_lista=t3.id_lista
284 and t1.id_gruppo=t3.id_gruppo
285 group by t1.id_gruppo
286 order by somma desc", $dbi);$cosa='id_gruppo';
287
288 }else{
289
290
291 $res = mysql_query("select t1.id_gruppo, t1.num_gruppo, t1.descrizione, sum(t2.voti) as somma
292 from ".$prefix."_ele_gruppo as t1
293 left join ".$prefix."_$tab as t2 on (t1.id_gruppo=t2.id_gruppo)
294 where t1.id_cons='$id_cons' and t1.id_cons=t2.id_cons $circondt1
295 group by t2.id_gruppo
296 order by somma desc", $dbi);$cosa='id_gruppo';
297 }
298
299
300 }else{
301 $res = mysql_query("select t1.id_lista, t1.num_lista, t1.descrizione, sum(t2.voti) as somma
302 from ".$prefix."_ele_lista as t1
303 left join ".$prefix."_$tab as t2 on (t1.id_lista=t2.id_lista)
304 where t1.id_cons='$id_cons' and t1.id_cons=t2.id_cons
305 group by t2.id_lista
306 order by somma desc", $dbi);$cosa='id_lista';
307 }
308
309
310
311 $gruppinum=mysql_num_rows($res);
312 $altrivoti=0;
313 while (list($id,$num,$descrizione,$voti) = mysql_fetch_row($res)){
314
315
316
317 // funz per il taglio corretto della frase 13 feb 2007
318
319 $descrizione=substr($descrizione,0,20);
320 $gruppo[$i]=ucwords(strtolower($descrizione));
321
322 //if (strlen($descrizione)>25) $gruppo[$i].="...";
323 if ($tot!='' and $tot!='0')
324 $pro[$i]=number_format($voti*100/$tot,3);
325 $pro[$i]=number_format($pro[$i],2); // arrotondamento
326
327
328
329
330
331
332
333
334 $i++;
335 }
336
337
338
339
340 $titolo=""._PERCE." "._VOTIE."";
341
342
343
344
345
346
347
348 return array($gruppo,$pro);
349
350
351
352 }
353
354 }
355}
356
357function caricablocchi(){
358#### carica i blocchi presenti in modules/Elezioni/blocchi
359#### nome del file da carica xx_nome.php
360#### dove xx sta per un numero per visualizzare in ordine
361### 01_votanto.php Ú un nome valido
362### off_votanto.php per disabilitare la visualizzazione
363
364
365
366$list = array();
367$bl=opendir('modules/Elezioni/blocchi');
368 while ($file = readdir($bl)) {
369 if (!is_dir("modules/Elezioni/blocchi/$file") and (!preg_match('/^\./',$file)) and !stristr($file,"off_")) {
370 array_push($list, $file);
371 }
372 }
373 closedir($bl);
374
375 if(count($list)>0)
376 sort($list);
377 for ($item_num=0; $item_num < count($list); $item_num++) {
378 $tmp=preg_replace('/^[0-9][0-9]_/i',"",$list[$item_num]);
379 $title=str_replace("_"," ",str_replace(".php","",$tmp));
380 // backward theme compatibility
381
382 include ("modules/Elezioni/blocchi/$list[$item_num]");
383
384 //echo "<br />";
385 }
386}
387
388function block($pos){
389
390global $prefix,$dbi;
391
392 if($pos=="dx") $p=0; elseif($pos=="sx")$p=1;else $p='';
393
394 $result = mysql_query("SELECT * FROM ".$prefix."_ele_widget where pos_or='$p' and attivo='1' order by pos_ver asc", $dbi);
395 if($result){
396 while ($row = mysql_fetch_array($result)) {
397 $nome=$row['nome_file'];
398 include ("modules/Elezioni/blocchi/$nome");
399 }
400 }
401}
402
403function check_block($pos){
404# verifica se ci sono blocchi nel db
405global $prefix,$dbi;
406if($pos=="dx") $p=0; elseif($pos=="sx")$p=1;else $p='';
407
408 $result = mysql_query("SELECT * FROM ".$prefix."_ele_widget where pos_or='$p' and attivo='1' order by pos_ver asc", $dbi);
409 if ($result) $numero=mysql_num_rows($result);else $numero=0;
410
411 return $numero;
412
413}
414
415function arrayperc($temp,$sevaltot)
416{
417 $temp2tot=0;$temp2=array();
418 while (list($key,$voti)= each($temp)) {
419 $temp2[$key]=(ceil($voti*1000/$sevaltot)-($voti*1000/$sevaltot));
420 $valperc=number_format($voti*100/$sevaltot,2);
421 $temp3[$key]=$valperc;
422 $temp2tot+=$valperc;
423 }
424 while ($temp2tot>100){
425 foreach ($temp2 as $key => $val) {
426 if ($val == max($temp2)) {$temp3[$key]-=0.01;$temp2tot-=0.01;$temp2[$key]=0;break;}
427 }
428 }
429 while ($temp2tot<100){
430 foreach ($temp2 as $key => $val) {
431 if ($val == min($temp2)) {$temp3[$key]+=0.01;$temp2tot+=0.01;$temp2[$key]=1;break;}
432 }
433
434 }
435 return($temp3);
436
437}
438?>
Note: See TracBrowser for help on using the repository browser.