source: trunk/admin/modules/Elezioni/ele_controlli.php@ 423

Last change on this file since 423 was 422, checked in by roby, 6 months ago
  • ADMIN

-- modifica alla funzione di colorazione delle sezioni per eliminare una segnalazione di errore nel caso di voto disgiunto.
-- Cambiata la colorazione in verde chiaro per le sezioni in cui lo spoglio per i voti ai candidati di lista è iniziato ma non completato
-- corretta una query per compatibilita con impostazione "ONLY_FULL_GROUP_BY"

File size: 16.7 KB
RevLine 
[319]1<?php
2/************************************************************************/
3/* Eleonline - Raccolta e diffusione dei dati elettorali */
4/************************************************************************/
5/* Modulo controlla affluenze */
6/* Amministrazione */
7/************************************************************************/
8
9function controllo_aff($id_cons,$id_sez,$id_parz){
10 global $prefix,$dbi,$id_sede,$id_con_gen,$genere;
11
12 $err=0;
13 $sql="select maschi,femmine from ".$prefix."_ele_sezioni where id_sez='$id_sez'";
14 $res = $dbi->prepare("$sql");
15 $res->execute();
16 list($maschi,$femmine)=$res->fetch(PDO::FETCH_NUM);
17
[360]18 $sql="select voti_uomini,voti_donne,voti_complessivi,id_gruppo from ".$prefix."_ele_voti_parziale where id_sez='$id_sez' order by id_gruppo,data,orario";
[319]19 $res = $dbi->prepare("$sql");
20 $res->execute();
[360]21 $votiu2=0;$votid2=0;$votit2=0;$idg2=-1;
22 while(list($voti_u,$voti_d,$voti_t,$idg)=$res->fetch(PDO::FETCH_NUM)) {
23 if($idg2!=$idg) {
24 $votiu2=0;$votid2=0;$votit2=0;
25 $idg2=$idg;
26 }
27 if((($voti_u+$voti_d!=$voti_t && $voti_u+$voti_d>0) || $voti_u>$maschi || $voti_d>$femmine || $voti_t>$maschi+$femmine ||$voti_u<$votiu2 ||$voti_d<$votid2 || $voti_t<$votit2) ) {
28 $err=1; break;}
29 $votiu2=$voti_u;$votid2=$voti_d;$votit2=$voti_t;
30 }
[319]31 $tipo='affluenze';
32 $sql="select id from ".$prefix."_ele_controlli where tipo='$tipo' and id_sez='$id_sez' ";
33 $res = $dbi->prepare("$sql");
34 $res->execute();
35 $righe=$res->rowCount();
36 if($righe){
[360]37 while(list($id)=$res->fetch(PDO::FETCH_NUM)){#die("$sql");
38# if($id==$id_parz){
[319]39 if(!$err){
[360]40 $sql="delete from ".$prefix."_ele_controlli where tipo='$tipo' and id_sez='$id_sez' ";
[319]41 $res = $dbi->prepare("$sql");
42 $res->execute();
43
44 }
45 $err=0;
46 break;
[360]47# }
[319]48 }
49 }
50 if($err){
[360]51 $sql="insert into ".$prefix."_ele_controlli value('$id_cons','$id_sez','$tipo','$idg2')";#die("$sql");
[319]52 $res = $dbi->prepare("$sql");
53 $res->execute();
54 }
55
56 $sql="SELECT validi,nulli,bianchi,contestati,voti_nulli FROM ".$prefix."_ele_sezioni as t1 where t1.id_sez='$id_sez'";
57 $res = $dbi->prepare("$sql");
58 $res->execute();
59 list($validi, $nulli, $bianchi,$contestati,$votinulli)=$res->fetch(PDO::FETCH_NUM);
60 if (($validi+$nulli+$bianchi+$contestati+$votinulli)>0)
61 if($genere==0) controllo_votir($id_cons,$id_sez,'aff');
62 else controllo_voti($id_cons,$id_sez);
63
64}
65
66
67
68function controllo_voti($id_cons,$id_sez){
69 global $prefix,$dbi,$id_sede,$id_con_gen,$genere;
70 ##############################
71 $err=0;
72 $sql="SELECT id_gruppo FROM ".$prefix."_ele_gruppo where id_cons='$id_cons'";
73 $resref = $dbi->prepare("$sql");
74 $resref->execute();
75 if($genere==0){
76 $numscru=$resref->rowCount(); $rifscru=0;
77 while(list($idrefgruppo)=$resref->fetch(PDO::FETCH_NUM)) {
78 $sql="SELECT si,no,validi,nulli,bianchi,contestati FROM ".$prefix."_ele_voti_ref where id_sez='$id_sez' and id_gruppo='$idrefgruppo'";
79 $res2 = $dbi->prepare("$sql");
80 $res2->execute();
81 $refscru=$res2->rowCount();
82 $sql="SELECT max(voti_complessivi) FROM ".$prefix."_ele_voti_parziale where id_sez='$id_sez' and id_gruppo='$idrefgruppo'";
83 $res3 = $dbi->prepare("$sql");
84 $res3->execute();
85 list($voti)=$res3->fetch(PDO::FETCH_NUM);
86 $rifscru++;
87 list($si,$no,$validi,$nulli,$bianchi,$contestati)=$res2->fetch(PDO::FETCH_NUM);
[328]88 if($validi and ($si+$no==$validi) and ($validi+$nulli+$bianchi+$contestati==$voti))
[319]89 continue;
90 else {$err=1; break;}
91 }
92 }else{
93 #per le altre consultazione
94 $sql="SELECT max(voti_complessivi) FROM ".$prefix."_ele_voti_parziale where id_sez='$id_sez'";
95 $res3 = $dbi->prepare("$sql");
96 $res3->execute();
97 list($voti)=$res3->fetch(PDO::FETCH_NUM);
98 $sql="SELECT validi FROM ".$prefix."_ele_sezioni where id_sez='$id_sez' and id_cons='$id_cons' ";
99 $res2 = $dbi->prepare("$sql");
100 $res2->execute();
101 list($validi) = $res2->fetch(PDO::FETCH_NUM);
102 if($validi) {
103 $status=0;
104 $query="SELECT validi,nulli,bianchi,contestati,voti_nulli,solo_gruppo,validi_lista,contestati_lista,voti_nulli_lista,solo_lista FROM ".$prefix."_ele_sezioni as t1 where t1.id_sez='$id_sez'";
105 $sql="$query";
106 $res4 = $dbi->prepare("$sql");
107 $res4->execute();
108 list($validi, $nulli, $bianchi,$contestati,$votinulli)=$res4->fetch(PDO::FETCH_NUM);
109 if (($validi+$nulli+$bianchi+$contestati+$votinulli)!=$voti)
110 {$err=1;}
111 }
112 }
113 $tipo='votanti';
114 $sql="select id from ".$prefix."_ele_controlli where tipo='$tipo' and id_sez='$id_sez' ";
115 $res = $dbi->prepare("$sql");
116 $res->execute();
117 $righe=$res->rowCount();
118 if($righe){
119 if(!$err){
120 $sql="delete from ".$prefix."_ele_controlli where tipo='$tipo' and id='$id_sez' ";
121 $res = $dbi->prepare("$sql");
122 $res->execute();
123 }
124 $err=0;
125 }
126 if($err){
127 $sql="insert into ".$prefix."_ele_controlli value('$id_cons','$id_sez','$tipo','$id_sez')";
128 $res = $dbi->prepare("$sql");
129 $res->execute();
130 }
131 if ($genere==4){
132 $sql="select id_lista from ".$prefix."_ele_voti_lista where id_cons='$id_cons' and id_sez='$id_sez'";
133 $res = $dbi->prepare("$sql");
134 $res->execute();
135 if($res->rowCount()) controllo_votil($id_cons,$id_sez,'0');
136 }else{
137 $sql="select id_gruppo from ".$prefix."_ele_voti_gruppo where id_cons='$id_cons' and id_sez='$id_sez'";
138 $res = $dbi->prepare("$sql");
139 $res->execute();
140 if($res->rowCount()) controllo_votig($id_cons,$id_sez,$genere);
141 }
142
143}
144
145
146function controllo_votig($id_cons,$id_sez){
147 global $prefix,$dbi,$id_sede,$id_cons_gen,$genere;
148 ##############################
149 $err=0; $err2=0;
[360]150 $sql="SELECT id_gruppo FROM ".$prefix."_ele_gruppo where id_cons='$id_cons'";
[319]151 $resref = $dbi->prepare("$sql");
152 $resref->execute();
[360]153 $sql="SELECT sum(voti),count(voti) FROM ".$prefix."_ele_voti_gruppo where id_sez='$id_sez'";
[337]154 $resref = $dbi->prepare("$sql");
155 $resref->execute();
[360]156 list($votig,$numrec)=$resref->fetch(PDO::FETCH_NUM);
[319]157 $sql="SELECT max(voti_complessivi) FROM ".$prefix."_ele_voti_parziale where id_sez='$id_sez'";
158 $res3 = $dbi->prepare("$sql");
159 $res3->execute();
160 list($voti)=$res3->fetch(PDO::FETCH_NUM);
161 $sql="SELECT validi FROM ".$prefix."_ele_sezioni where id_sez='$id_sez' and id_cons='$id_cons' ";
162 $res2 = $dbi->prepare("$sql");
163 $res2->execute();
164 list($validi) = $res2->fetch(PDO::FETCH_NUM);
[360]165 if($validi and $numrec) {
[319]166 $status=0;
167 $query="SELECT validi,nulli,bianchi,contestati,voti_nulli,solo_gruppo,validi_lista,contestati_lista,voti_nulli_lista,solo_lista FROM ".$prefix."_ele_sezioni as t1 where t1.id_sez='$id_sez'";
168 $sql="$query";
169 $res4 = $dbi->prepare("$sql");
170 $res4->execute();
171 list($validi, $nulli, $bianchi,$contestati,$votinulli)=$res4->fetch(PDO::FETCH_NUM);
[337]172 if (($validi+$nulli+$bianchi+$contestati+$votinulli)!=$voti or $validi!=$votig)
[319]173 {$err=1;}
174 }
175 $tipo='gruppo';
176 $sql="select id from ".$prefix."_ele_controlli where tipo='$tipo' and id_sez='$id_sez'";
177 $res = $dbi->prepare("$sql");
178 $res->execute();
179 $righe=$res->rowCount();
180 if($righe){
181 if(!$err){
182 $sql="delete from ".$prefix."_ele_controlli where tipo='$tipo' and id='$id_sez' ";
183 $res = $dbi->prepare("$sql");
184 $res->execute();
185 }
186 $err=0;
187 }
188 if($err){
189 $sql="insert into ".$prefix."_ele_controlli value('$id_cons','$id_sez','$tipo','$id_sez')";
190 $res = $dbi->prepare("$sql");
191 $res->execute();
192 }
193 $sql="select id_lista from ".$prefix."_ele_voti_lista where id_cons='$id_cons' and id_sez='$id_sez'";
194 $res = $dbi->prepare("$sql");
195 $res->execute();
196 if($res->rowCount()) controllo_votil($id_cons,$id_sez,'0');
197
198}
199
200
201function controllo_votir($id_cons,$id_sez){
202 global $prefix,$dbi,$id_sede,$id_cons_gen,$genere;
203 ##############################
[326]204 $err=0; $err2=0; $idrg=0;
[319]205 $sql="SELECT id_gruppo FROM ".$prefix."_ele_gruppo where id_cons='$id_cons'";
206 $resref = $dbi->prepare("$sql");
207 $resref->execute();
208 $numscru=$resref->rowCount(); $rifscru=0;
209 while(list($idrefgruppo)=$resref->fetch(PDO::FETCH_NUM)) {
210 $sql="SELECT si,no,validi,nulli,bianchi,contestati FROM ".$prefix."_ele_voti_ref where id_sez='$id_sez' and id_gruppo='$idrefgruppo'";
211 $res2 = $dbi->prepare("$sql");
212 $res2->execute();
213 $refscru=$res2->rowCount();
214 $sql="SELECT max(voti_complessivi) FROM ".$prefix."_ele_voti_parziale where id_sez='$id_sez' and id_gruppo='$idrefgruppo'";
215 $res3 = $dbi->prepare("$sql");
216 $res3->execute();
217 list($voti)=$res3->fetch(PDO::FETCH_NUM);
218 $rifscru++;
219 list($si,$no,$validi,$nulli,$bianchi,$contestati)=$res2->fetch(PDO::FETCH_NUM);
[328]220 if(!$validi or (($si+$no==$validi) and ($validi+$nulli+$bianchi+$contestati==$voti)))
[319]221 continue;
[326]222 else {$err=1; $idrg=$idrefgruppo; break;}
[319]223
[326]224 }
[319]225
226#############
227 $tipo='referendum';
[326]228 $sql="select id from ".$prefix."_ele_controlli where tipo='$tipo' and id_sez='$id_sez'";
[319]229 $res = $dbi->prepare("$sql");
230 $res->execute();
231 $righe=$res->rowCount();
232 if($righe){
[326]233 if(!$err){
234 $sql="delete from ".$prefix."_ele_controlli where tipo='$tipo' and id_sez='$id_sez' ";
[319]235 $res = $dbi->prepare("$sql");
236 $res->execute();
237 }
238 $err=0;
239 }
240 if($err){
[326]241 $sql="insert into ".$prefix."_ele_controlli value('$id_cons','$id_sez','$tipo','$idrg')";
[319]242 $res = $dbi->prepare("$sql");
243 $res->execute();
244 }
245#############
246
247}
248
249function controllo_votic($id_cons,$id_sez,$id_lista){
250 global $prefix,$dbi,$id_sede,$id_cons_gen,$validi;
251 ##############################
252 $err=0;
253 $sql="SELECT preferenze,disgiunto,solo_gruppo,id_conf,id_fascia FROM ".$prefix."_ele_cons_comune where id_cons='$id_cons'";
254 $res = $dbi->prepare("$sql");
255 $res->execute();
256 list($prefs,$disg,$solog,$legge,$fascia)=$res->fetch(PDO::FETCH_NUM);
257 $sql="SELECT limite FROM ".$prefix."_ele_conf where id_conf='$legge'";
258 $res = $dbi->prepare("$sql");
259 $res->execute();
260 if($res->rowCount())
261 list($limite)=$res->fetch(PDO::FETCH_NUM);
262 else
263 $limite=-1;
264 if($fascia<=$limite){
265 $sql="select id_gruppo from ".$prefix."_ele_lista where id_lista='$id_lista'";
266 $res = $dbi->prepare("$sql");
267 $res->execute();
268 list($id_gruppo)=$res->fetch(PDO::FETCH_NUM);
269 $sql="select voti from ".$prefix."_ele_voti_gruppo where id_gruppo='$id_gruppo' and id_sez='$id_sez'";
270 } else $sql="select voti from ".$prefix."_ele_voti_lista where id_lista='$id_lista' and id_sez='$id_sez'";
271 $res = $dbi->prepare("$sql");
272 $res->execute();
273 list($votil)=$res->fetch(PDO::FETCH_NUM);
274 $sql="SELECT sum(voti),max(voti) FROM ".$prefix."_ele_voti_candidati where id_sez='$id_sez' and id_cand in (select id_cand from ".$prefix."_ele_candidati where id_lista='$id_lista')";
275 $res = $dbi->prepare("$sql");
276 $res->execute();
277 list($votic,$mvc)=$res->fetch(PDO::FETCH_NUM);
278 if(($votic)>($votil*$prefs) || $mvc>$votil)
279 {$err=1;}
280
281 return $err;
282}
283
284
285
286function controllo_votil($id_cons,$id_sez,$id_lista){
287 global $prefix,$dbi,$id_sede,$id_cons_gen,$validi;
288 ##############################
[365]289 $sql="select id from ".$prefix."_ele_controlli where tipo='lista' and id_sez='$id_sez' and id>0";
290 $res = $dbi->prepare("$sql");
291 $res->execute();
292 while (list($idl)=$res->fetch(PDO::FETCH_NUM)) {
293 $err=controllo_votic($id_cons,$id_sez,$idl);
294 if(!$err){
295 $sql="delete from ".$prefix."_ele_controlli where tipo='lista' and id_sez='$id_sez' and id=$idl";
296 $res = $dbi->prepare("$sql");
297 $res->execute();
298 }
299 }
[319]300 $err=0;
301 $tipo='lista';
[337]302 $sql="SELECT t1.genere,t1.voto_g FROM ".$prefix."_ele_tipo as t1 left join ".$prefix."_ele_consultazione as t2 on t1.tipo_cons=t2.tipo_cons where id_cons_gen='$id_cons_gen'";
[319]303 $res = $dbi->prepare("$sql");
304 $res->execute();
[337]305 list($genere,$votog)=$res->fetch(PDO::FETCH_NUM);
[422]306 $sql="SELECT preferenze,disgiunto,solo_gruppo,id_fascia,id_conf FROM ".$prefix."_ele_cons_comune where id_cons='$id_cons'";
[319]307 $res = $dbi->prepare("$sql");
308 $res->execute();
[422]309 list($prefs,$disg,$solog,$fascia,$id_conf)=$res->fetch(PDO::FETCH_NUM);
310 $sql="SELECT supdisgiunto FROM ".$prefix."_ele_conf where id_conf='$id_conf'";
311 $res = $dbi->prepare("$sql");
312 $res->execute();
313 if($res->rowCount())
314 list($supdis)=$res->fetch(PDO::FETCH_NUM);
315 else $supdis=0;
[319]316 if($id_lista){
317 $err=controllo_votic($id_cons,$id_sez,$id_lista);
318 $tipo='lista';
319 }else{
320
[337]321 if($genere==4 or $votog)
[319]322 $sql="SELECT id_lista, voti, '0' FROM ".$prefix."_ele_voti_lista where id_sez='$id_sez'";
323 else
324 $sql="SELECT id_gruppo, voti, solo_gruppo FROM ".$prefix."_ele_voti_gruppo where id_sez='$id_sez'";
325 $resref = $dbi->prepare("$sql");
326 $resref->execute();
327 $totlis=0;
328 $totgru=0;
329 $totsg=0;
330 $totsl=0;
331 $tnl=0;
[337]332 if($genere==4 or $votog){
[319]333 $sql="SELECT validi,contestati,nulli,bianchi,voti_nulli FROM ".$prefix."_ele_sezioni where id_cons='$id_cons' and id_sez='$id_sez'";
334 $res = $dbi->prepare("$sql");
335 $res->execute();
336 list($validil,$contestatil,$nullil,$bianchi,$vnulli) = $res->fetch(PDO::FETCH_NUM);
337 $sql="SELECT max(voti_complessivi) FROM ".$prefix."_ele_voti_parziale where id_cons='$id_cons' and id_sez='$id_sez'";
338 $res = $dbi->prepare("$sql");
339 $res->execute();
340 list($votit) = $res->fetch(PDO::FETCH_NUM);
341 while (list($idg,$votig,$svg)=$resref->fetch(PDO::FETCH_NUM)) {
342 $err=controllo_votic($id_cons,$id_sez,$idg);
[365]343 if($err){ $tipo='lista'; $id_lista=$idg; break; }
[337]344 $sql="SELECT voti, nulli_lista, solo_lista FROM ".$prefix."_ele_voti_lista where id_sez='$id_sez' and id_lista='$idg'";
[319]345 $res2 = $dbi->prepare("$sql");
346 $res2->execute();
347 $totgru+=$votig;
348 $totsg+=$svg;
349 if($res2->rowCount()){
350 list($votil,$nl,$svl)=$res2->fetch(PDO::FETCH_NUM);
351 $totlis+=$votil;
352 $totsl+=$svl;
353 $tnl+=$nl;
354 if(($votig+$svl)<($votil+$svg+$nl))
[365]355 { $err=1; $tipo='lista';$id_lista=$idg; break; }
[319]356 }
357 }
[337]358 if (($validil+$contestatil+$nullil+$bianchi+$vnulli!=$votit and $validil+$contestatil+$nullil+$bianchi+$vnulli>0) or ($totlis!=$validil and $totlis>0)) {$err=1;$tipo='lista';}
[319]359 }else{
360 $sql="SELECT validi,validi_lista,contestati_lista,voti_nulli_lista,solo_gruppo,solo_lista FROM ".$prefix."_ele_sezioni where id_cons='$id_cons' and id_sez='$id_sez'";
361 $res = $dbi->prepare("$sql");
362 $res->execute();
363 list($votiv,$validil,$contestatil,$nullil,$solog,$solol) = $res->fetch(PDO::FETCH_NUM);
[321]364 $vl=0;
365 $tvl=0;
[337]366 if($resref->rowCount()){
[422]367 $totg=0;$totl=0;
[365]368 while (list($idg,$votig,$svg)=$resref->fetch(PDO::FETCH_NUM)) {
369 $sql="SELECT id_lista FROM ".$prefix."_ele_lista where id_gruppo='$idg'";
370 $res2 = $dbi->prepare("$sql");
371 $res2->execute();
372 while(list($idl)=$res2->fetch(PDO::FETCH_NUM)){
373 $err=controllo_votic($id_cons,$id_sez,$idl);
374 if($err){ $tipo='lista'; break; }
375 $sql="SELECT voti FROM ".$prefix."_ele_voti_lista where id_lista='$idl' and id_sez='$id_sez'";
376 $res3 = $dbi->prepare("$sql");
377 $res3->execute();
378 list($vl)=$res3->fetch(PDO::FETCH_NUM);
379 $tvl+=$vl;
380 }
381 if($err) break;
382 $sql="SELECT sum(voti), sum(nulli_lista),sum(solo_lista) FROM ".$prefix."_ele_voti_lista where id_sez='$id_sez' and id_lista in (select id_lista from ".$prefix."_ele_lista where id_gruppo='$idg')";
383 $res2 = $dbi->prepare("$sql");
384 $res2->execute();
385 $totgru+=$votig;
386 $totsg+=$svg;
387 if($res2->rowCount()){
388 list($votil,$nl,$svl)=$res2->fetch(PDO::FETCH_NUM);
389 $totlis+=$votil;
390 $totsl+=$svl;
[422]391 $tnl+=$nl;
392 if(($votig+$svl)!=($votil+$svg+$nl) and (!$supdis and !$disg))
[365]393 { $err=1; $tipo='lista'; break; }
[422]394 }
395 $totg+=($votig+$svl);$totl+=($votil+$svg+$nl); #$svl da ele_voti_gruppo e $solog da ele_sezioni
396
[319]397 }
[422]398 if(($totg)!=($totl+$nullil+$contestatil) or $totsg!=$solog)
399 { $err=1; $tipo='lista';}
400
[337]401 }else{
402 #inserire controllo per consultazioni con voto alle liste ma senza voto di gruppo
403 }
[319]404 if (!$totsg) $totsg=$solog;
[365]405 if (($totlis!=$validil or $validil+$contestatil+$nullil+$totsg!=$votiv) and ($validil+$contestatil+$nullil+$solol>0 or $tvl>0)) {$err=1;$tipo='lista';}
406 if(($solog && !$disg && ($tnl!=$nullil && $disg)) || $totsl!=$solol || ($totsg!=$solog)) {$err=1;$tipo='lista';}
407 }
[319]408 }
[365]409 if(!$err){
410 if($id_lista) $andlis=" and id='$id_lista' "; else $andlis="";
411 $sql="delete from ".$prefix."_ele_controlli where tipo='lista' and id_sez='$id_sez' $andlis";
412 $res = $dbi->prepare("$sql");
413 $res->execute();
414 }
[319]415
416 if($err){
[360]417 $sql="select * from ".$prefix."_ele_controlli where tipo='lista' and id_sez='$id_sez' and id='$id_lista'";
[319]418 $res = $dbi->prepare("$sql");
[358]419 $res->execute();
420 if(!$res->rowCount()) {
[365]421 if(!$id_lista) $id_lista=0;
[358]422 $sql="insert into ".$prefix."_ele_controlli value('$id_cons','$id_sez','$tipo','$id_lista')";
423 $res = $dbi->prepare("$sql");
[365]424 $res->execute();
[358]425 }
[319]426 }
427
428}
429?>
Note: See TracBrowser for help on using the repository browser.