Changeset 220 for trunk/client/modules/Elezioni/consiglieri.php
- Timestamp:
- May 30, 2014, 10:50:37 PM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/client/modules/Elezioni/consiglieri.php
r199 r220 22 22 if (isset($param['numgruppo'])) $numgruppo=intval($param['numgruppo']); else $numgruppo=''; 23 23 if (isset($param['listecol'])) $listecol=intval($param['listecol']); else $listecol=0; 24 25 24 26 25 $result = mysql_query("select id_conf,id_fascia from ".$prefix."_ele_cons_comune where id_cons='$id_cons'", $dbi); … … 210 209 if ($gruppo[$listagruppo[$lisvin]]>($validi*$infpremio/100) and $fisso==0) 211 210 { 212 foreach ($groups as $key=>$val) $gruppo[$key]=$val;213 $groups=$gruppo; 214 $gruppo=array();215 $num_cons=$numcons;211 $seggimag[$lisvin]=number_format($numcons*($gruppo[$listagruppo[$lisvin]]*100/$validi)/100); 212 echo "<br> seggimag:".$seggimag[$lisvin]; 213 $num_cons=number_format($numcons-$seggimag[$lisvin]); 214 # $num_cons=$numcons; 216 215 } else { 217 216 // $seggimag[$lisvin]=number_format($numcons*2/3); … … 297 296 #carica gli array dei quozienti 298 297 foreach($gruppi as $y=>$tmp){ 298 299 299 if($flag) $num_quoz= $num_cons<$num_candlst[$y] ? $num_cons:$num_candlst[$y]; 300 300 if(!isset($ele[$y][0])) $ele[$y][0]=0; 301 301 for ($x=0;$x<=$num_quoz;$x++){ 302 302 $ele[$y][$x]= $tmp/($x+1); 303 $quozienti[$y][$x]= $tmp/($x+1); 303 $quozienti[$y][$x]= $tmp/($x+1); ###echo "<br>[$y][$x]=".$tmp/($x+1); 304 304 } 305 305 } … … 409 409 */ 410 410 411 #verificare come gestire la situazione in cui il candidato sindaco supera lo sbarramento e il totale delle liste no.412 411 if (!isset($_SESSION['ballo1'])) $_SESSION['ballo1']=''; 413 412 if (!isset($_SESSION['ballo2'])) $_SESSION['ballo2']=''; 414 413 $gruppoperd= ($gruppo==$_SESSION['ballo1']) ? $_SESSION['ballo2'] : $_SESSION['ballo1']; 415 414 415 #per voti validi non si intendono i voti validi alle liste ma i voti validi espressi 416 416 #$res_val = mysql_query("SELECT sum(validi_lista) from ".$prefix."_ele_sezioni where id_cons='$id_cons'",$dbi); 417 417 $res_val = mysql_query("SELECT sum(voti) from ".$prefix."_ele_voti_gruppo where id_cons='$id_cons'",$dbi); … … 433 433 $lists[$num_lista]=$voti; 434 434 $groups[($num_gruppo)]+=$voti; 435 }//else $validi-=$voti; //maggio 2011: verificare questa sottrazione, non mi convince 436 } 435 } 436 } 437 ################### 438 $elencog=array(); 439 $sindseggiopre=array(); 440 foreach($groups as $testk=>$valk) if($testk!=$gruppo) {$elencog[$testk]=$valk;} 441 $testseggio=calcoloseggi($elencog,floor($numcons*(100-$suppremio)/100),0); 442 foreach($testseggio as $testk=>$valk) if($valk) {$sindseggiopre[]=$testk;} 443 #foreach ($gruppomin as $key=>$val) {if (($numcons*60/100)<$val) $nopremio=0;if($key!=$gruppo){echo "<br>gruppomin: $key -- $val";}} 444 ################## 437 445 $descrsind=$desgruppi[$gruppo]; 438 446 foreach ($groups as $key=>$val){ … … 463 471 $groups[$gruppo]+=$lists[$lst]; 464 472 } 465 ////maggio 2011: da qui 473 ////maggio 2011: da qui 474 475 #controlla se la percentuale del gruppo vincente e' tra il 40 e il 60% o il sindaco e' eletto al secondo turno 476 #e se nessun altro gruppo ha superato il 50% assegna il premio di maggioranza 477 #e se nessun altro gruppo ha superato il 50% e nessuno ha ottenuto piu' del 60% dei seggi, assegna il premio di maggioranza 466 478 $consmin=$numcons; 467 479 $gruppomin=calcoloseggi($groups,$consmin,0); 468 480 $nopremio=1; 469 foreach ($gruppomin as $key=>$val) {if (($numcons*60/100)<$val) $nopremio=0;}470 481 #die("qui:".($numcons*60/100)."<$val"); 471 482 if (($groups[$gruppo]>=(($validi*$supminpremio)/100) or ! $primoturno) and $groups[$gruppo]<(($validi*$suppremio)/100) and !$premio and $nopremio) $premio=1; … … 473 484 $consel=array(); 474 485 $consel[]=array(_LISTA,_VOTI,_SEGGI,_CANDIDATO,_CIFRAELE,_QUOZIENTI); 475 486 $groupsappo=$groups; 476 487 $candidati=array(); 477 488 //maggio 2011: a qui viene spostato in modo da aggiungere i voti di lista delle collegate per il perdente solo dopo aver controllato se supera il 50%, in questo modo si evita che il collegamento tra perdenti faccia decadere il premio di maggioranza se solo insieme superano il 50% … … 479 490 if(!isset($groups[$gruppoperd])) $groups[$gruppoperd]=0; 480 491 foreach ($collperd as $lst) 481 if (isset($lists[$lst])){ 492 if (isset($lists[$lst])){ 482 493 $oldlstgrp[$lst]=$listagruppo[$lst]; 483 494 $listagruppo[$lst]=$gruppoperd; … … 489 500 ////maggio 2011: a qui (mettendolo dopo Ú come se l'avessi tolto ma possono esserci altre implicazioni visto che si modificano le percentuali del gruppo, così per ora non lo tolgo) va tolto se non vanno sommati i voti delle liste collegate al secondo turno con quelli del gruppo che perde il ballottaggio, se non si collegano viene favorita l'elezione del candidato sindaco con cui era collegata al primo turno mentre se si collegano viene favorito il principio di aggregazione. Per ora i perdenti sono considerati con la situazione al primo turno. Implementiamo cosï¿œ: il 50% deve essere superato dalla minoranza nel primo turno, quindo senza somma dei voti delle liste aggiunte nel secondo turno - la suddivisione dei seggi viene fatta considerando i collegamenti al secondo turno, le liste collegate partecipano alla suddivisione dei seggi con questo gruppo quindi si confronta con le liste del gruppo in cui era al primo turno e valutando i coefficienti si stabilisce quale lista cede il seggio al candidato sindaco non acceduto al ballottaggio. 490 501 491 #controlla se la percentuale del gruppo vincente e' tra il 40 e il 60% o il sindaco e' eletto al secondo turno 492 #e se nessun altro gruppo ha superato il 50% assegna il premio di maggioranza 493 #e se nessun altro gruppo ha superato il 50% e nessuno ha ottenuto piu' del 60% dei seggi, assegna il premio di maggioranza 494 495 496 if ($premio) { 502 if ($premio) { 503 ######### 504 ################### nell'array sindseggio vengono inseriti i candidati sindaco che restano senza seggio per gli apparentamenti 505 $elencog=array(); 506 $testseggio=array(); 507 $sindseggio=array(); 508 foreach($groups as $testk=>$valk) if($testk!=$gruppo) {$elencog[$testk]=$valk;} 509 $testseggio=calcoloseggi($elencog,floor($numcons*(100-$suppremio)/100),0); 510 foreach($sindseggiopre as $testk=>$valk) {if(!$testseggio[$valk]) $sindseggio[$valk]=$valk;} 511 ########### 497 512 $sindaco[$gruppo]=$groups[$gruppo]; $groups[$gruppo]=0; 498 513 $gruppomag=calcoloseggi($sindaco,ceil($numcons*$suppremio/100),0); … … 518 533 $z++; 519 534 } 520 #foreach ($groups as $key=>$val)echo " key: $key : val : $val<br/>";521 535 $seggimag=array(); 536 $x=0; 537 #####25 maggio 2014 - il candidato sindaco non eletto ha diritto al seggio anche se di maggioranza 538 ### individua ultimi seggi assegnati a liste collegate 539 $listdec =array(); 540 $seggitmp=calcoloseggi($listemag,$val,1); 541 foreach ($seggitmp as $keyl=>$vall){ #echo "<br>sindseggio: $key - $val"; 542 # foreach ($sindseggio as $key=>$val){ 543 if (in_array($keyl,$collegate) and ! isset($tempo[$keyl])) $tempo[$keyl]=number_format($quozienti[$keyl][$vall-1],2); 544 # echo "<br>lista:$key"; 545 $res = mysql_query("SELECT id_gruppo from ".$prefix."_ele_lista where num_lista='$keyl' and id_cons='$id_cons'",$dbi); 546 list($tempig)=mysql_fetch_row($res); 547 $res = mysql_query("SELECT num_gruppo from ".$prefix."_ele_gruppo where id_gruppo='$tempig' and id_cons='$id_cons'",$dbi); 548 list($tempng)=mysql_fetch_row($res); 549 if (in_array($tempng,$sindseggio)) $listdec[]=$keyl; 550 } 551 552 /* while(){ 553 if(isset($tempo[$tempnl])) echo "<br> tempnl: $tempnl -- key:$key".$tempo[$key]; 554 } 555 */ 556 ########## 522 557 $seggimag=calcoloseggi($listemag,$val,1); 523 $x=0; 558 524 559 foreach ($seggimag as $key=>$val){ 525 for ($z=0;$z<$val;$z++){ 560 ## condizione per esclusione di un seggio da destinare al sindaco non eletto 561 if(in_array($key,$listdec)) $val--; 562 ## fine condizione - impostare variabile in db per differenziare il comportamento per consultazioni diverse 563 for ($z=0;$z<$val;$z++){ 526 564 if ($z) $consel[]=array("","","",$arvin[$key][($z+1)],$cifra[$key][($z+1)],number_format($quozienti[$key][$z],2)); 527 565 else … … 539 577 if ($premio) $consmin=floor($numcons*(100-$suppremio)/100); 540 578 else $consmin=$numcons; 541 #foreach($groups as $keyb=>$valb) echo "keyb:$keyb -- valb:$valb<br/>";542 579 543 580 #####calcolo per la minoranza o in caso non ci sia premio di maggioranza … … 579 616 echo "$mex"; 580 617 $ultimo=''; 618 581 619 $seggimin=calcoloseggi($listemin,$val,1); 582 620 echo "$mex";#foreach ($seggimin as $lista=>$valc) echo $seggimin[$lista]." key:$lista -val:$valc<br/>"; 583 621 if(!$premio and $key==$gruppo) 584 foreach ($seggimin as $lista=>$valc) $arper[$lista]=$arvin[$lista]; 622 foreach ($seggimin as $lista=>$valc){ 623 $arper[$lista]=$arvin[$lista]; 624 } 585 625 /* for ($z=0;$z<$valc;$z++){ 586 626 if ($z) $consel[]=array("","","",$arvin[$lista][($z+1)],$cifra[$lista][($z+1)],$quozienti[$lista][$z]); … … 594 634 if ($val and $key!=$gruppo and $consin) {$conselsin[]=array("$CSEC",$desgruppi[$key]); $arcansin[]=$desgruppi[$key];} 595 635 foreach ($seggimin as $lista=>$val) 596 if(isset($oldlstgrp[$lista]) and !isset($oldseggi[$lista])) {$oldseggi[$lista]=$val;} 636 if(isset($oldlstgrp[$lista]) and !isset($oldseggi[$lista])) {$oldseggi[$lista]=$val; 637 } 597 638 if($val==0){ 598 639 if($ultimo==''){ 599 640 foreach($oldlists as $lst=>$vot) 600 { 641 { 642 if (!isset($quozienti[$lst][($val)])) $quozienti[$lst][($val)]=$vot; 601 643 if ($oldlstgrp[$lst]!= $key or !isset($oldseggi[$lst]) or $oldseggi[$lst]==0) continue; 602 if($ultimo=='') $ultimo=$lst; 603 if($quozienti[$ultimo][($val -1)]==$last[$lst])644 if($ultimo=='') $ultimo=$lst; 645 if($quozienti[$ultimo][($val)]==$last[$lst]) 604 646 { 605 647 if($lists[$ultimo]==$lists[$lst]) $mex="Per attribuire l'ultimo seggio ï¿œ necessario un sorteggio tra la lista n. $ultimo e la lista n. $lst"; 606 648 elseif($lists[$ultimo]>$lists[$lst]) {$ultimo=$lst;$mex="";} 607 649 } 608 if ($quozienti[$ lista][($val-1)]> $last[$lst]) {$ultimo=$lst;$mex="";}650 if ($quozienti[$ultimo][($val)]> $last[$lst]) {$ultimo=$lst;$mex="";} 609 651 }$lst=$ultimo; 610 652 if($ultimo and $consin){ … … 619 661 } 620 662 #if($key!=$gruppo){ 663 ############### 664 #foreach($collegate 665 foreach ($seggimin as $lista=>$val){ 666 if($ultimo==$lista and $key!=$gruppo and $consin) $val--; 667 } 668 ################ 621 669 foreach ($seggimin as $lista=>$val){ 622 670 if($ultimo==$lista and $key!=$gruppo and $consin) $val--; … … 630 678 $conselb[]=array($arper[$lista][0],$percliste[$lista],$val,$arper[$lista][($z+1)],$cifra[$lista][($z+1)],number_format($quozienti[$lista][$z],2)); 631 679 $ttl[$lista]=(count($conselb)-1); 680 ######## 681 # echo "<br>".$tt[$lista]." arper --- $gruppo --$ultimo--$key--".$arper[$lista][0]; 632 682 } 633 683 } 634 684 if (isset($oldlists[$lista])) 635 { 685 { 636 686 $tt[$lista]=(count($conselb)-1); 637 687 if($z) $last[$lista]=$quozienti[$lista][($z-1)]; else $last[$lista]=0; … … 674 724 } 675 725 } 726 #### condizione di aggiunta candidato sindaco non eletto in elenco consiglieri 727 foreach($sindseggio as $key=>$val) if ($consin) {$conselsin[]=array("$CSEC",$desgruppi[$key]); $arcansin[]=$desgruppi[$key];} 728 #### 729 676 730 677 731 if (isset($conselsin)) foreach($conselsin as $key=>$val) … … 689 743 $consel[]=array($val[0],$val[1],$val[2],$val[3],$val[4],$val[5]); 690 744 } 745 691 746 // plotgraf($descrsind,$arlisdesv,$arlissegv,$arlisdesp,$arlissegp,$arcansin); // per grafico 692 747 stampalista($consel);
Note:
See TracChangeset
for help on using the changeset viewer.