errore query ele_spoglio PHP - ver 423

Avvisi e discussioni su bug, soluzioni e migliorie del software

Moderatori: roby, Moderators

Rispondi
Danilonet
Newbie
Newbie
Messaggi: 6
Iscritto il: ven mag 03, 2024 1:44 pm

errore query ele_spoglio PHP - ver 423

Messaggio 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";
roby
Site Admin
Site Admin
Messaggi: 1352
Iscritto il: ven apr 25, 2008 12:00 am
Contatta:

Re: errore query ele_spoglio PHP - ver 423

Messaggio 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";
Danilonet
Newbie
Newbie
Messaggi: 6
Iscritto il: ven mag 03, 2024 1:44 pm

Re: errore query ele_spoglio PHP - ver 423

Messaggio 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??
roby
Site Admin
Site Admin
Messaggi: 1352
Iscritto il: ven apr 25, 2008 12:00 am
Contatta:

Re: errore query ele_spoglio PHP - ver 423

Messaggio 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";
Rispondi