Pagina 1 di 1

errore query ele_spoglio PHP - ver 423

Inviato: lun giu 10, 2024 6:40 pm
da Danilonet
nella pagina ele_spoglio.php
alla riga 500

abbiamo notato che il seguente codice:

Codice: Seleziona tutto

if($id_lista)		$sql="select t1.* from ".$prefix."_ele_candidati as t1 left join ".$prefix."_ele_lista as t2 on (t1.id_lista=t2.id_lista) WHERE t1.id_cons=$id_cons and t1.id_cons=t2.id_cons $ele_lista $circo ORDER BY t2.num_lista,t1.num_cand";
else $sql="select 0,'$id_cons',t1.id_lista,'','','','','',0 from ".$prefix."_ele_candidati as t1 left join ".$prefix."_ele_lista as t2 on (t1.id_lista=t2.id_lista) WHERE t1.id_cons=$id_cons and t1.id_cons=t2.id_cons $ele_lista $circo ORDER BY t2.num_lista";
genera la query
select 0,'26',t1.id_lista,'','','','','',0 from soraldo_ele_candidati as t1 left join soraldo_ele_lista as t2 on (t1.id_lista=t2.id_lista) WHERE t1.id_cons=26 and t1.id_cons=t2.id_cons group by t1.id_lista and id_circ=28 ORDER BY t2.num_lista
noterete che
group by t1.id_lista and id_circ=28
non è corretto

nella nostra applicazione abbiamo corretto come segue:

Codice: Seleziona tutto

if($id_lista)		$sql="select t1.* from ".$prefix."_ele_candidati as t1 left join ".$prefix."_ele_lista as t2 on (t1.id_lista=t2.id_lista) WHERE t1.id_cons=$id_cons and t1.id_cons=t2.id_cons $circo $ele_lista ORDER BY t2.num_lista,t1.num_cand";
else $sql="select 0,'$id_cons',t1.id_lista,'','','','','',0 from ".$prefix."_ele_candidati as t1 left join ".$prefix."_ele_lista as t2 on (t1.id_lista=t2.id_lista) WHERE t1.id_cons=$id_cons and t1.id_cons=t2.id_cons $circo $ele_lista ORDER BY t2.num_lista";

Re: errore query ele_spoglio PHP - ver 423

Inviato: lun giu 10, 2024 9:45 pm
da roby
Avete impostato la consultazione come consultazione circoscrizionale o con più collegi, vero?
Devo ancora fare dei test ma si dovrebbe risolvere cambiando la query di riga 500 in questo modo, da:

if($id_lista) $sql="select t1.* from ".$prefix."_ele_candidati as t1 left join ".$prefix."_ele_lista as t2 on (t1.id_lista=t2.id_lista) WHERE t1.id_cons=$id_cons and t1.id_cons=t2.id_cons $ele_lista $circo ORDER BY t2.num_lista,t1.num_cand";

a

if($id_lista) $sql="select t1.* from ".$prefix."_ele_candidati as t1 left join ".$prefix."_ele_lista as t2 on (t1.id_lista=t2.id_lista) WHERE t1.id_cons=$id_cons and t1.id_cons=t2.id_cons $ele_lista ORDER BY t2.num_lista,t1.num_cand";

Re: errore query ele_spoglio PHP - ver 423

Inviato: lun giu 10, 2024 10:09 pm
da Danilonet
si, è una consultazione circoscrizionale,

$ele_lista -> fa una group by
$circo -> aggiunge una clausola alla where

nella pagina ele_spoglio.php alla riga 500 è scritto $ele_lista $circo
che genera "where ..... group by t1.id_lista and id_circ=28"

semplicemente invertendole, mettendo quindi $circo $ele_lista
la query generata diventa corretta
"where ..... and id_circ=28 group by t1.id_lista "

è giusto?

tu invece mi stai proprio dicendo che dovrei togliere dalla stringa $circo??

Re: errore query ele_spoglio PHP - ver 423

Inviato: lun giu 10, 2024 10:58 pm
da roby
in riga 500 la condizione sulla circoscrizione è superflua perché c'è già il valore id_lista che fa lo stesso filtro
la riga 501 invece va modificata invertendo le variabili come dici tu:
else $sql="select 0,'$id_cons',t1.id_lista,'','','','','',0 from ".$prefix."_ele_candidati as t1 left join ".$prefix."_ele_lista as t2 on (t1.id_lista=t2.id_lista) WHERE t1.id_cons=$id_cons and t1.id_cons=t2.id_cons $circo $ele_lista ORDER BY t2.num_lista";