source: trunk/admin/modules/Elezioni/ele_consiglieri.php@ 31

Last change on this file since 31 was 2, checked in by root, 15 years ago

importo il progetto

File size: 26.0 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 eletti */
9/* Amministrazione */
10/************************************************************************/
11if (!defined('MODULE_FILE')) {
12 die ("You can't access this file directly...");
13}
14//$limite=5; //fascia di separazione del maggioritario
15$param=strtolower($_SERVER['REQUEST_METHOD']) == 'get' ? $_GET : $_POST;
16$id_cons_gen=intval($param['id_cons_gen']);
17$perms=ChiSei($id_cons_gen);
18if ($perms<32 or !$id_cons_gen) die("$id_cons_gen -Non hai i permessi per inserire dati, o non hai scelto la consultazione!");
19include("modules/Elezioni/ele.php");
20$res = mysql_query("SELECT t1.tipo_cons,t2.id_cons 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_gen='$id_cons_gen' and t2.id_comune='$id_comune'" , $dbi);
21if (isset($param['gruppo'])) $gruppo=intval($param['gruppo']); else $gruppo='';
22if (isset($param['numgruppo'])) $numgruppo=intval($param['numgruppo']); else $numgruppo='';
23if (isset($param['listecol'])) $listecol=intval($param['listecol']); else $listecol=0;
24ele();
25$collegate= array();
26for ($x=1;$x<=$listecol;$x++)
27 if ($param[$x]=='on') array_push($collegate,$x);
28$collperd= array();
29for ($x=1;$x<=$listecolper;$x++)
30 if ($param[$x]=='on') array_push($collperd,$x);
31if (mysql_num_rows($res)){
32list($tipo_cons,$id_cons) = mysql_fetch_row($res);
33$result = mysql_query("select fascia, capoluogo from ".$prefix."_ele_comuni where id_comune='$id_comune'", $dbi);
34list($fascia,$capoluogo) = mysql_fetch_row($result);
35if (!$gruppo){
36 $res_val = mysql_query("SELECT sum(validi) from ".$prefix."_ele_sezioni where id_cons='$id_cons'",$dbi);
37 list($validi) = mysql_fetch_row($res_val);
38 $res_lis = mysql_query("SELECT t1.num_gruppo,sum(t2.voti) from ".$prefix."_ele_gruppo as t1, ".$prefix."_ele_voti_gruppo as t2 where t1.id_cons='$id_cons' and t1.id_gruppo=t2.id_gruppo group by t1.num_gruppo order by t1.num_gruppo",$dbi);
39 while (list($num_gruppo,$voti)= mysql_fetch_row($res_lis)){
40 if ($voti>($validi/2)) {$gruppo=$num_gruppo;break;}
41 }
42}
43if($fascia<6 and $capoluogo) $fascia=6;
44if ($fascia<$limite) consmin($fascia);
45elseif ($gruppo>0) conssup($fascia,$gruppo,$collegate,$collperd);
46elseif ($numgruppo>0){
47 echo "<form name=\"gruppo\" action=\"admin.php\">"
48 ."<input type=\"hidden\" name=\"op\" value=\"consiglieri\">";
49 echo "<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\">";
50 echo "<br>";
51 echo "<table><tr><td bgcolor=\"$bgcolor1\"><b>"._GRUVIN."</b></td>";
52 $res = mysql_query("SELECT id_gruppo,descrizione FROM ".$prefix."_ele_gruppo where id_cons='$id_cons' and num_gruppo=$numgruppo", $dbi);
53 list($idgruppo, $descr_gruppo) = mysql_fetch_row($res);
54 echo "<td bgcolor=\"$bgcolor1\"><b>$descr_gruppo</b></td></tr></table>";
55 $res_lis = mysql_query("SELECT num_lista,descrizione from ".$prefix."_ele_lista where id_cons='$id_cons' and id_gruppo!=$idgruppo",$dbi);
56 echo "Selezionare le liste collegate al secondo turno <table>";
57 $x=0;
58 while(list($num_lista,$descr) = mysql_fetch_row($res_lis)) {
59 echo "<tr><td>$num_lista</td><td>$descr</td><td><input type=\"checkbox\" name=\"$num_lista\" ></td></tr>";
60 if ($num_lista>$x) $x=$num_lista;
61 }
62 echo "<tr><td><input type=\"hidden\" name=\"listecol\" value=\"$x\"><input type=\"hidden\" name=\"gruppo\" value=\"$numgruppo\">";
63 echo "<input type=\"submit\" name=\"invia\" value=\""._OK."\"></td></tr></table></form>";
64}else {
65 echo "<form name=\"numgruppo\" action=\"admin.php\">"
66 ."<input type=\"hidden\" name=\"op\" value=\"consiglieri\">";
67 echo "<input type=\"hidden\" name=\"id_cons_gen\" value=\"$id_cons_gen\">";
68 echo "<br>";
69 echo "<table><tr><td bgcolor=\"$bgcolor1\"><b>"._GRUVIN."</b></td><td>";
70 $res = mysql_query("SELECT t1.num_gruppo,t1.descrizione, sum(t2.voti) as pref FROM ".$prefix."_ele_gruppo as t1, ".$prefix."_ele_voti_gruppo as t2 where t1.id_gruppo=t2.id_gruppo and t1.id_cons='$id_cons' group by t1.num_gruppo,t1.descrizione order by pref desc limit 0,2", $dbi);
71 while(list($num_gruppo, $descr_gruppo,$pref) = mysql_fetch_row($res)) {
72# echo "<option value=\"$num_gruppo\">$descr_gruppo";
73 echo "<input type=\"radio\" name=\"numgruppo\" value=\"$num_gruppo\">$descr_gruppo<br>";
74 }
75 echo "</td></tr>";
76 echo "<tr><td><input type=\"submit\" name=\"invia\" value=\""._OK."\"></td></tr></table></form>";
77
78}
79}
80
81
82function consmin($fascia) {
83global $id_cons, $prefix,$dbi;
84$sorteggio=0;
85#funzione di calcolo per comuni fino a 15.000 abitanti
86#carica numero di liste e voti, i voti sono quelli del gruppo perche' non c'e' voto di lista
87$res_lis = mysql_query("SELECT t1.num_gruppo,sum(t2.voti) from ".$prefix."_ele_gruppo as t1, ".$prefix."_ele_voti_gruppo as t2 where t1.id_cons='$id_cons' and t1.id_gruppo=t2.id_gruppo group by t1.num_gruppo order by t1.num_gruppo",$dbi);
88$num_liste = mysql_num_rows($res_lis);
89#carica le preferenze
90$pref = array();
91$test = 0;
92$lisvin=0;
93while (list($num_lista,$voti)= mysql_fetch_row($res_lis)){
94 array_push($pref,$voti);
95 if ($voti>$test) {$lisvin=$num_lista; $test=$voti;}
96}
97#setta a zero la lista vincente
98$pref[($lisvin-1)]=0;
99#carica il numero di consiglieri per la minoranza
100switch ($fascia) {
101 case 1: $numcons=12; break;
102 case 2: $numcons=16; break;
103 case 3: $numcons=20; break;
104 case 4: $numcons=20; break;
105 case 5: $numcons=30; break;
106 case 6: $numcons=40; break;
107 case 7: $numcons=46; break;
108 case 8: $numcons=50; break;
109 case 9: $numcons=60; break;
110}
111$num_cons=number_format($numcons/3);
112#carica gli array dei quozienti
113for ($y=0;$y<$num_cons;$y++){
114 for ($x=0;$x<10;$x++)
115 $ele[$y][$x]= $pref[$y]/($x+1);
116}
117#inizializza l'array degli eletti
118for ($x=0;$x<$num_liste;$x++)
119 $eletti[$x]=0;
120
121#for ($x=0;$x<$num_liste;$x++)
122#echo $ele[$x][0]." <br>";
123#estrae i quozienti piu' alti
124$sorteggio=0;
125for ($y=0;$y<$num_cons;$y++){
126 $temp=0;
127 $cand=0;
128 for ($x=0;$x<$num_liste;$x++){
129 if ($ele[$x][0]==$temp and $pref[$x]==$pref[$cand] and ($y+1)==$num_cons) {$sorteggio=1; $mex="Per attribuire l'ultimo seggio è necessario un sorteggio tra la lista n. ".($x+1)." e la lista n. ".($cand+1);}
130 if ($ele[$x][0]>$temp or ($ele[$x][0]==$temp and $pref[$x]>$pref[$cand])) {
131 $temp=$ele[$x][0];
132 $cand=$x;
133 $sorteggio=0;
134 }
135 }
136 if (!$sorteggio){
137 $eletti[$cand]++;
138 array_shift($ele[$cand]);echo "<br>";
139 }
140}
141for ($x=0;$x<$num_liste;$x++)
142 echo "lista n. ".intval($x+1)." ".$eletti[$x]." eletti <br>";
143echo "sorteggio: $sorteggio <br>";
144echo "lista vincente ".$lisvin." ".number_format(($numcons*2)/3)." eletti";
145}
146
147
148
149
150
151function calcoloseggi($gruppi,$num_cons){
152global $ultimo,$mex,$sorteggio;
153
154include ("crea_pagina.php");
155#carica le preferenze
156$pref = array();
157$ultimo=0;
158$mex='';
159$sorteggio=0;
160unset($eletti);
161#inizializza l'array degli eletti
162#for ($x=1;$x<=$num_liste;$x++)
163foreach ($gruppi as $x=>$val){
164 $eletti[$x]=0;
165 }
166#carica gli array dei quozienti
167#for ($y=0;$y<$num_liste;$y++)
168foreach($gruppi as $y=>$tmp){
169 for ($x=0;$x<$num_cons;$x++)
170 $ele[$y][$x]= $tmp/($x+1);
171}
172#estrae i quozienti piu' alti
173for ($y=0;$y<$num_cons;$y++){
174 $temp=0;
175 $cand=0;
176# for ($x=0;$x<$num_liste;$x++){
177
178foreach($gruppi as $x=>$tmp){
179 if ($ele[$x][0]==$temp and $pref[$x]==$pref[$cand] and ($y+1)==$num_cons) {$sorteggio=1; $mex="Per attribuire l'ultimo seggio è necessario un sorteggio tra la lista n. ".($x+1)." e la lista n. ".($cand+1);}
180 if ($ele[$x][0]>$temp or ($ele[$x][0]==$temp and $pref[$x]>$pref[$cand])) {
181 $temp=$ele[$x][0];
182 $cand=$x;
183 $sorteggio=0;
184 }
185 }
186 if (!$sorteggio){
187 $eletti[$cand]++;
188 $ultimo=$cand;
189 array_shift($ele[$cand]);
190 }
191}
192return ($eletti);
193}
194
195function stampalista($arvin,$arper) {
196//echo "<table><tr><td>";
197$x=0;
198while (isset($arvin[$x][0])) {
199echo "--------------vince key:$key - val:$val<br>";
200 $y=0;
201 while (isset($arvin[$x][$y])){
202 echo "-----chiave:$lista val:$y<br>";
203 $y++;
204 }
205$x++;
206}
207foreach ($arper as $key=>$val) {
208 foreach($val as $x=>$y) echo "-----chiave:$x val:$y<br>";
209echo "perde key:$key - val:$val<br>";
210}
211
212}
213
214function conssup($fascia,$gruppo,$collegate,$collperd) {
215global $id_cons, $prefix,$dbi;
216global $groups,$lists,$eletti,$ultimo;
217$groups=array();
218$lists=array();
219$eletti=array();
220
221#$sorteggio=0;
222#funzione di calcolo per comuni oltre 15.000 abitanti
223#carica il numero di consiglieri da eleggere
224switch ($fascia) {
225 case 1: $numcons=12; break;
226 case 2: $numcons=16; break;
227 case 3: $numcons=20; break;
228 case 4: $numcons=20; break;
229 case 5: $numcons=30; break;
230 case 6: $numcons=40; break;
231 case 7: $numcons=46; break;
232 case 8: $numcons=50; break;
233 case 9: $numcons=60; break;
234}
235
236
237
238
239
240
241
242
243
244
245
246/////////////////////test
247$varper="<table><tr><td>SEGGI ASSEGNATI ALLA MINORANZA</TD></TR></TABLE><table><tr> ";
248$varvin="<table><tr><td>SEGGI ASSEGNATI ALLA MAGGIORANZA</TD></TR></TABLE><table><tr> ";
249$res_val = mysql_query("SELECT sum(validi) from ".$prefix."_ele_sezioni where id_cons='$id_cons'",$dbi);
250list($validi) = mysql_fetch_row($res_val);
251$res_per = mysql_query("SELECT t1.descrizione,t1.num_gruppo,sum(t3.voti) as voti from ".$prefix."_ele_gruppo as t1, ".$prefix."_ele_lista as t2, ".$prefix."_ele_voti_lista as t3 where t1.id_cons='$id_cons' and t1.id_gruppo=t2.id_gruppo and t2.id_lista=t3.id_lista group by t1.descrizione,t1.num_gruppo order by t1.num_gruppo",$dbi);
252$groups=array();
253$premio=0;
254#carica l'array deui gruppi e della cifra di gruppo
255while (list($descr,$num_gruppo,$voti)= mysql_fetch_row($res_per)){
256 $desgruppi[$num_gruppo]=$descr;
257 #controlla se un gruppo di liste, tra quelle perdenti, ha superato il 50%
258 if ($num_gruppo!=$gruppo and $voti>= $validi/2) $premio=2;
259 $groups[($num_gruppo)]=$voti;
260 #elimina gruppi che non hanno superato lo sbarramento
261 if ($voti< ($validi*3)/100) unset($groups[($num_gruppo)]);
262}
263#controlla se la percentuale del gruppo vincente e' tra il 40 e il 60%
264#e se nessun altro gruppo ha superato il 50% assegna il premio di maggioranza
265if ($groups[$gruppo]>number_format(($validi*4)/10) and $groups[$gruppo]<number_format(($validi*6)/10) and !$premio) $premio=1;
266else $premio=0;
267
268$candidati=array();
269if ($premio) {
270 $sindaco[$gruppo]=$groups[$gruppo];
271 unset($groups[$gruppo]);
272 $gruppomag=calcoloseggi($sindaco,($numcons*6/10));
273#######calcola i seggi per lista
274$arvin[0][0]=$desgruppi[$gruppo];
275foreach ($gruppomag as $key=>$val){
276 echo " gruppo n. : $key : val : $val<br>";
277echo "ultimo assegnato al gruppo: $ultimo<br>";
278$res_lis = mysql_query("SELECT t2.id_lista,t2.descrizione,t2.num_lista,sum(t3.voti) as voti from ".$prefix."_ele_gruppo as t1, ".$prefix."_ele_lista as t2, ".$prefix."_ele_voti_lista as t3 where t1.id_cons='$id_cons' and t1.id_gruppo=t2.id_gruppo and t2.id_lista=t3.id_lista and t1.num_gruppo='$key' group by t2.id_lista,t2.descrizione,t2.num_lista order by t2.num_lista",$dbi);
279while (list($id_lista,$descr,$x,$y)=mysql_fetch_row($res_lis)){
280 $pos=1;
281 $arvin[$x][$pos++]=$descr." - Voti: $y (".number_format($y*100/$validi,2)."%)";
282 $res_can = mysql_query("SELECT concat(t1.cognome,' ',t1.nome) as descr,sum(t2.voti) as voti from ".$prefix."_ele_candidati as t1, ".$prefix."_ele_voti_candidati as t2 where t1.id_lista='$id_lista' and t1.id_cand=t2.id_cand GROUP BY descr order by voti desc,num_cand",$dbi);
283 while(list($cand,$pre)=mysql_fetch_row($res_can)) $arvin[$x][$pos++]=$descr." - $y ";
284 $listemag[$x]=$y;
285 $desliste[$x]=$descr;
286}
287#foreach ($groups as $key=>$val)echo " key: $key : val : $val<br>";
288 $seggimag=array();
289 $seggimag=calcoloseggi($listemag,$val);
290 foreach ($seggimag as $key=>$val){
291 $arvin[$key][0]=$val;
292 echo "lista n. $key seggi spettanti:$val<br>";
293# $consiglio
294 }
295}
296$numcons=($numcons*4/10);
297}
298
299#####calcolo per la minoranza o in caso non ci sia premio di maggioranza
300$gruppomin=calcoloseggi($groups,$numcons);
301foreach ($gruppomin as $key=>$val){
302 if(!$premio and $key==$gruppo) $arvin[0][0]=$desgruppi[$gruppo];
303 else $arper[0][0]=$desgruppi[$key];
304 echo " gruppo n. : $key : val : $val<br>";
305echo "ultimo assegnato al gruppo: $ultimo<br>";
306$res_lis = mysql_query("SELECT t2.id_lista,t2.descrizione,t2.num_lista,sum(t3.voti) as voti from ".$prefix."_ele_gruppo as t1, ".$prefix."_ele_lista as t2, ".$prefix."_ele_voti_lista as t3 where t1.id_cons='$id_cons' and t1.id_gruppo=t2.id_gruppo and t2.id_lista=t3.id_lista and t1.num_gruppo='$key' group by t2.id_lista,t2.descrizione,t2.num_lista order by t2.num_lista",$dbi);
307$x=0;
308while (list($id_lista,$descr,$x,$y)=mysql_fetch_row($res_lis)){
309 unset($listemin);
310 $pos=1;
311 if(!$premio and $key==$gruppo) $arvin[$x][$pos++]=$descr." - Voti: $y (".number_format($y*100/$validi,2)."%)";
312 else $arper[$x][$pos++]=$descr." - Voti: $y (".number_format($y*100/$validi,2)."%)";
313 $res_can = mysql_query("SELECT concat(t1.cognome,' ',t1.nome) as descr,sum(t2.voti) as voti from ".$prefix."_ele_candidati as t1, ".$prefix."_ele_voti_candidati as t2 where t1.id_lista='$id_lista' and t1.id_cand=t2.id_cand GROUP BY descr order by voti desc,num_cand",$dbi);
314 while(list($cand,$pre)=mysql_fetch_row($res_can))
315 if(!$premio and $key==$gruppo) $arvin[$x][$pos++]=$descr." - $y ";
316 else $arper[$x][$pos++]=$descr." - $y ";
317 $listemin[$x]=$y;
318 $desliste[$x]=$descr;
319}
320#foreach ($groups as $key=>$val)echo " key: $key : val : $val<br>";
321 $seggimin=array();
322 $seggimin=calcoloseggi($listemin,$val);
323 foreach ($seggimin as $key=>$val){
324 if(!$premio and $key==$gruppo) $arvin[$key][0]=$val;
325 else $arper[$key][0]=$val;
326 echo "lista n. $key seggi spettanti:$val<br>";
327# $consiglio
328 }
329}
330crea_tabella($arvin);
331crea_tabella($arper);
332
333/*if(isset($listemin)) unset($listemin);
334echo "<br><br><br> gruppo n. : $key : val : $val<br>";
335echo "ultimo assegnato al gruppo: $ultimo<br>";
336$res_lis = mysql_query("SELECT t2.num_lista,sum(t3.voti) from ".$prefix."_ele_gruppo as t1, ".$prefix."_ele_lista as t2, ".$prefix."_ele_voti_lista as t3 where t1.id_cons='$id_cons' and t1.id_gruppo=t2.id_gruppo and t2.id_lista=t3.id_lista and t1.num_gruppo='$key' group by t2.num_lista order by t2.num_lista",$dbi);
337$x=0;
338while (list($x,$y)=mysql_fetch_row($res_lis)) $listemin[$x]=$y;
339#foreach ($groups as $key=>$val)echo " key: $key : val : $val<br>";
340 $seggimin=array();
341 $seggimin=calcoloseggi($listemin,$val);
342 foreach ($seggimin as $key=>$val){
343 if ($key==$ultimo) $val--;
344 echo "lista n. $key seggi spettanti:$val<br>";
345 }
346}
347/*$seggi = array();
348$seggi=calcoloseggi($groups,$numcons);
349foreach ($seggi as $key=>$val){
350unset($groups);
351 echo " gruppo n. : $key : val : $val<br>";
352echo "ultimo assegnato al gruppo: $ultimo<br>";
353$res_lis = mysql_query("SELECT t2.num_lista,sum(t3.voti) from ".$prefix."_ele_gruppo as t1, ".$prefix."_ele_lista as t2, ".$prefix."_ele_voti_lista as t3 where t1.id_cons='$id_cons' and t1.id_gruppo=t2.id_gruppo and t2.id_lista=t3.id_lista and t1.num_gruppo='$key' group by t2.num_lista order by t2.num_lista",$dbi);
354$x=0;
355while (list($x,$y)=mysql_fetch_row($res_lis)) $groups[$x]=$y;
356#foreach ($groups as $key=>$val)echo " key: $key : val : $val<br>";
357 $seggilista=array();
358 $seggilista=calcoloseggi($groups,$val);
359 foreach ($seggilista as $key=>$val){
360 if ($key==$ultimo) $val--;
361 echo "lista n. $key seggi spettanti:$val<br>";
362 }
363}
364/*while (list($num_gruppo,$num_lista,$voti)= mysql_fetch_row($res_lis)){
365 //array_push($groups[($num_gruppo)],($num_lista));
366 $groups[($num_gruppo)][($num_lista)]=array();
367 array_push($groups[($num_gruppo)][($num_lista)],$voti);
368}
369foreach ($groups as $key=>$val){
370echo "gruppo: $key -- voti: ".$val[0]."<br>";
371 foreach($val[1] as $lis=>$vot)
372 foreach ($vot as $des=>$che)
373 echo " lista $des voti $che<br>";
374}*/
375//////////////////////////
376
377
378
379
380
381#controlla che la lista vincente abbia ottenuto almeno il 40% dei voti validi e meno del 60
382$res_vin = mysql_query("SELECT sum(t3.voti) from ".$prefix."_ele_gruppo as t1, ".$prefix."_ele_lista as t2, ".$prefix."_ele_voti_lista as t3 where t1.id_cons='$id_cons' and t1.id_gruppo=t2.id_gruppo and t2.id_lista=t3.id_lista and t1.num_gruppo='$gruppo'",$dbi);
383list($voti)= mysql_fetch_row($res_vin);
384$res_val = mysql_query("SELECT sum(validi) from ".$prefix."_ele_sezioni where id_cons='$id_cons'",$dbi);
385list($validi) = mysql_fetch_row($res_val);
386#ma nessun altro gruppo di liste deve aver raggiunto il 50% dei voti validi
387$res_per = mysql_query("SELECT t1.num_gruppo,sum(t3.voti) from ".$prefix."_ele_gruppo as t1, ".$prefix."_ele_lista as t2, ".$prefix."_ele_voti_lista as t3 where t1.id_cons='$id_cons' and t1.id_gruppo=t2.id_gruppo and t2.id_lista=t3.id_lista and t1.num_gruppo!='$gruppo' group by t1.num_gruppo order by t1.num_gruppo",$dbi);
388$premio=0;
389$gruppi=0;
390$quorum=array();
391if ($voti>number_format(($validi*4)/10) and $voti<number_format(($validi*6)/10)) $premio=1;
392while (list($gruppoper,$voti)= mysql_fetch_row($res_per))
393{
394 if ($voti>= $validi/2) $premio=0;
395 if ($voti>= ($validi*3)/100) {array_push($quorum,$gruppoper);}
396 $gruppi++;
397}
398if (!$premio)array_push($quorum,$gruppo);
399#carica numero di liste e voti, se c'e' il premio si effettuano due calcoli separati uno per le liste vincenti e uno per le altre
400if ($premio){
401 $res_lisper = mysql_query("SELECT t1.num_gruppo,t2.num_lista,sum(t3.voti) from ".$prefix."_ele_gruppo as t1, ".$prefix."_ele_lista as t2, ".$prefix."_ele_voti_lista as t3 where t1.id_cons='$id_cons' and t1.id_gruppo=t2.id_gruppo and t2.id_lista=t3.id_lista and t1.num_gruppo != '$gruppo' group by t1.num_gruppo,t2.num_lista order by t2.num_lista",$dbi);
402 $num_liste = mysql_num_rows($res_lisper);
403 $num_cons=number_format(($numcons*4)/10);
404 $res_lisvin = mysql_query("SELECT t2.num_lista,sum(t3.voti) from ".$prefix."_ele_gruppo as t1, ".$prefix."_ele_lista as t2, ".$prefix."_ele_voti_lista as t3 where t1.id_cons='$id_cons' and t1.id_gruppo=t2.id_gruppo and t2.id_lista=t3.id_lista and t1.num_gruppo = '$gruppo' group by t2.num_lista order by t2.num_lista",$dbi);
405 $num_listevin = mysql_num_rows($res_lisvin);
406 $num_consvin=number_format(($numcons*6)/10);
407}else{
408 $res_lisper = mysql_query("SELECT t1.num_gruppo,t2.num_lista,sum(t3.voti) from ".$prefix."_ele_gruppo as t1, ".$prefix."_ele_lista as t2, ".$prefix."_ele_voti_lista as t3 where t1.id_cons='$id_cons' and t1.id_gruppo=t2.id_gruppo and t2.id_lista=t3.id_lista group by t1.num_gruppo,t2.num_lista order by t2.num_lista",$dbi);
409 $num_liste = mysql_num_rows($res_lisper);
410 $num_cons=$numcons;
411}
412#carica le preferenze
413$pref = array();
414$liste = array();
415$digruppo = array();
416$ultimo = array();
417$groups = array();
418#inizializza l'array degli eletti
419for ($x=0;$x<=$num_liste;$x++){
420 $eletti[$x]=0;
421 }
422 $x=0;
423while (list($num_gruppo,$num_lista,$voti)= mysql_fetch_row($res_lisper)){
424 if (!in_array($num_gruppo,$quorum)) {$voti=0;}
425 array_push($pref,$voti);
426 array_push($liste,$num_lista);
427 $digruppo[$x]=$num_gruppo;
428 if (!isset($groups[$num_gruppo])) $groups[$num_gruppo]=array();
429 array_push($groups[$num_gruppo],$num_lista);
430 $x++;
431}
432#carica gli array dei quozienti
433for ($y=0;$y<$num_liste;$y++){
434 for ($x=0;$x<$num_cons;$x++)
435 $ele[$y][$x]= $pref[$y]/($x+1);
436}
437#estrae i quozienti piu' alti
438$sorteggio=0;
439for ($y=0;$y<$num_cons;$y++){
440 $temp=0;
441 $cand=0;
442 $mex='';
443 for ($x=0;$x<$num_liste;$x++){
444 if ($ele[$x][0]==$temp and $pref[$x]==$pref[$cand] and ($y+1)==$num_cons) {$sorteggio=1; $mex="Per attribuire l'ultimo seggio è necessario un sorteggio tra la lista n. ".($x+1)." e la lista n. ".($cand+1);}
445 if ($ele[$x][0]>$temp or ($ele[$x][0]==$temp and $pref[$x]>$pref[$cand])) {
446 $temp=$ele[$x][0];
447 $cand=$x;
448 $sorteggio=0;
449 }
450 }
451 if (!$sorteggio){
452 $eletti[$cand]++;
453 $ultimo[$digruppo[($cand)]]=$cand;
454 array_shift($ele[$cand]);
455 }
456}
457
458foreach ($ultimo as $key=>$sind) { //echo "lista: $sind - gruppo: $key eletti: ".$eletti[($val-1)]."<br>";
459 if($key!=$gruppo) $eletti[$sind]--;
460}
461#
462#foreach($groups as $key=>$val1) foreach ($val1 as $val) echo "gruppo: $key - lista: $val eletti: ".$eletti[($val-1)]."<br>";
463#for ($x=0;$x<$num_liste;$x++) //caricare in una variabile il testo da visualizzare, e' necessario controllare: if (!$premio) vanno separate le liste vincenti dalle altre
464# echo "lista n. ".$liste[$x]." ".$eletti[$x]." eletti<br>";
465#echo "sorteggio: $sorteggio <br>";
466$varper="<table><tr><td>SEGGI ASSEGNATI ALLA MINORANZA</TD></TR></TABLE><table><tr> ";
467$varvin="<table><tr><td>SEGGI ASSEGNATI ALLA MAGGIORANZA</TD></TR></TABLE><table><tr> ";
468
469#for ($y=0;$y<$gruppi;$y++)
470foreach($groups as $key=>$val1) {
471 if (isset($ultimo[$key])) {
472 $res_gru = mysql_query("SELECT descrizione from ".$prefix."_ele_gruppo where id_cons='$id_cons' and num_gruppo='".$key."'",$dbi);
473 list($descr) = mysql_fetch_row($res_gru);
474 if ($key==$gruppo){
475 $varvin.= "<td valign=\"top\">\n<table><tr><td> Seggi spettanti al gruppo n. ".$key."</td></tr>";
476 $varvin.="<tr><td bgcolor=\"".$_SESSION['bgcolor2']."\">SINDACO ELETTO: $descr</td></tr><tr></table>\n";
477 $varvin.="<table><tr>";
478 }else{
479 $varper.= "<td valign=\"top\">\n<table><tr><td> Seggi spettanti al gruppo n. ".$key."</td></tr>";
480 $varper.="<tr><td bgcolor=\"".$_SESSION['bgcolor2']."\">$descr</td></tr><tr></table>\n";
481 $varper.="<table><tr>";
482 }
483 foreach($val1 as $val) {
484 if ($eletti[($val-1)]){
485 $res_lis = mysql_query("SELECT id_lista,descrizione from ".$prefix."_ele_lista where id_cons='$id_cons' and num_lista='".$val."'",$dbi);
486 list($id_lista,$descr) = mysql_fetch_row($res_lis);
487 $res_lis = mysql_query("SELECT concat(t1.cognome,' ',t1.nome) as descr,sum(t2.voti) as voti from ".$prefix."_ele_candidati as t1, ".$prefix."_ele_voti_candidati as t2 where t1.id_lista='$id_lista' and t1.id_cand=t2.id_cand GROUP BY descr order by voti desc,num_cand",$dbi);
488 if ($key==$gruppo) $varvin.="<td valign=\"top\">\n<table><tr><td>Lista n. $val: $descr <b>seggi ".$eletti[($val-1)]."</b></td><td></td></tr>";
489 else $varper.="<td valign=\"top\">\n<table><tr><td>Lista n. $val: $descr <b>seggi ".$eletti[($val-1)]."</b></td><td></td></tr>";
490 $x=0;
491 while (list($descr,$voti) = mysql_fetch_row($res_lis)) {
492 $bgcolor1= (($x++)<$eletti[($val-1)]) ? $_SESSION['bgcolor2'] : $_SESSION['bgcolor1'] ;
493 if ($key==$gruppo) $varvin.="<tr><td bgcolor=\"$bgcolor1\">$descr</td><td bgcolor=\"$bgcolor1\">$voti</td></tr>";
494 else $varper.="<tr><td bgcolor=\"$bgcolor1\">$descr</td><td bgcolor=\"$bgcolor1\">$voti</td></tr>";
495 }
496 if ($key==$gruppo) $varvin.= "</table>\n</td>";
497 else $varper.= "</table>\n</td>";
498 }
499 }
500 if ($key==$gruppo) $varvin.="</tr></table>\n</td>";
501 else $varper.="</tr></table>\n</td>";
502 }
503 }
504 $varper.="</tr><tr><td>$mex</td></tr></table>\n";
505
506unset ($eletti);
507unset($ele);
508if($premio){
509$num_cons=$num_consvin;
510$num_liste=$num_listevin;
511#carica le preferenze
512$pref = array();
513$liste = array();
514while (list($num_lista,$voti)= mysql_fetch_row($res_lisvin)){
515 array_push($pref,$voti);
516 array_push($liste,$num_lista);
517}
518#carica gli array dei quozienti
519for ($y=0;$y<$num_liste;$y++){
520 for ($x=0;$x<$num_cons;$x++)
521 $ele[$y][$x]= $pref[$y]/($x+1);
522}
523#inizializza l'array degli eletti
524for ($x=0;$x<$num_liste;$x++)
525 $eletti[$x]=0;
526#estrae i quozienti piu' alti
527$sorteggio=0;
528for ($y=0;$y<$num_cons;$y++){
529 $temp=0;
530 $cand=0;
531 for ($x=0;$x<$num_liste;$x++){
532 if ($ele[$x][0]==$temp and $pref[$x]==$pref[$cand] and ($y+1)==$num_cons) {$sorteggio=1; $mex="Per attribuire l'ultimo seggio è necessario un sorteggio tra la lista n. ".($x+1)." e la lista n. ".($cand+1);}
533 if ($ele[$x][0]>$temp or ($ele[$x][0]==$temp and $pref[$x]>$pref[$cand])) {
534 $temp=$ele[$x][0];
535 $cand=$x;
536 $sorteggio=0;
537 }
538 }
539 if (!$sorteggio){
540 $eletti[$cand]++;
541 array_shift($ele[$cand]);
542 }
543}
544#visualizza il gruppo, il candidato a sindaco eletto consigliere, le liste e i consiglieri
545#for ($x=0;$x<$num_liste;$x++)
546# echo "lista n. ".$liste[$x]." ".$eletti[$x]." eletti <br>";
547#echo "sorteggio: $sorteggio <br>";
548#foreach($eletti as $key=>$val) echo "lista: ".$liste[$key]." - eletti: $val <br>";
549///////////////
550//foreach($groups as $key=>$val1) {echo "lista: $val - gruppo: $key eletti: ".$eletti[($val-1)]."<br>";
551 $key=$gruppo;
552 $res_gru = mysql_query("SELECT descrizione from ".$prefix."_ele_gruppo where id_cons='$id_cons' and num_gruppo='".$key."'",$dbi);
553 list($descr) = mysql_fetch_row($res_gru);
554 $varvin.= "<td valign=\"top\">\n<table><tr><td> Seggi spettanti al gruppo n. ".$key."</td></tr>";
555 $varvin.="<tr><td bgcolor=\"".$_SESSION['bgcolor2']."\">SINDACO ELETTO: $descr</td></tr><tr></table>\n";
556 $varvin.="<table><tr>";
557 foreach($eletti as $lis=>$val) { //echo "lista: ".$liste[$lis]." - gruppo: $key eletti: ".$val."<br>";
558// if ($eletti[($val-1)]){
559 $res_lis = mysql_query("SELECT id_lista,descrizione from ".$prefix."_ele_lista where id_cons='$id_cons' and num_lista='".$liste[$lis]."'",$dbi);
560 list($id_lista,$descr) = mysql_fetch_row($res_lis);
561 $res_lis = mysql_query("SELECT concat(t1.cognome,' ',t1.nome) as descr,sum(t2.voti) as voti from ".$prefix."_ele_candidati as t1, ".$prefix."_ele_voti_candidati as t2 where t1.id_lista='$id_lista' and t1.id_cand=t2.id_cand GROUP BY descr order by voti desc,num_cand",$dbi);
562 $varvin.="<td valign=\"top\">\n<table><tr><td>Lista n. ".$liste[$lis].": $descr <b>seggi ".$val."</b></td><td></td></tr>";
563 $x=0;
564 while (list($descr,$voti) = mysql_fetch_row($res_lis)) {
565 $bgcolor1= (($x++)<$val) ? $_SESSION['bgcolor2'] : $_SESSION['bgcolor1'] ;
566 $varvin.="<tr><td bgcolor=\"$bgcolor1\">$descr</td><td bgcolor=\"$bgcolor1\">$voti</td></tr>";
567 }
568 $varvin.= "</table>\n</td>";
569// }
570 }
571 $varvin.="</tr></table>\n</td>";
572
573
574///////////////
575}
576$varvin.="</tr><tr><td>$mex</td></tr></table>\n";
577 echo $varvin;
578 echo $varper;
579
580}
581
582
583
584
585?>
Note: See TracBrowser for help on using the repository browser.