- Home
- Categorie
- Coding e Sistemistica
- PHP
- [Risolto] problema ricerca per data
-
ho fatto così:
<?
if ($search==1){
$dal_giorno=$aa1."-".$mm1."-".$gg1;
$al_giorno=$aa2."-".$mm2."-".$gg2;
if ($id_operatori){
$search_operatori="AND c_agenda.id_operatori like "".$id_operatori.""";
}
if ($id_admin){
$search_admin="AND c_agenda.id_admin like "".$id_admin.""";
}
if ($id_tecniche){
$search_tecniche="AND c_agenda.id_tecniche like "".$id_tecniche.""";
}
if ($id_admin_ins_dati_evento){
$search_admin_ins="AND c_agenda.id_admin_ins_dati_evento like "".$id_admin_ins_dati_evento.""";
}
if ($data_evento){
$search_data_evento="AND c_agenda.data_evento >= "".$dal_giorno."" AND c_agenda.data_evento <= "".$al_giorno.""";
}$query="SELECT c_agenda.*, a_admin.*, a_tecniche.*, b_operatori.*, DATE_FORMAT(c_agenda.data_evento, '%d-%m-%Y')AS data_evento, DATE_FORMAT(c_agenda.data_ins_dati_evento, '%d-%m-%Y')AS data_ins_dati_evento FROM c_agenda, a_admin, a_tecniche, b_operatori WHERE c_agenda.id_operatori = b_operatori.id_operatori AND c_agenda.id_admin = a_admin.id_admin AND c_agenda.id_tecniche = a_tecniche.id_tecniche AND (c_agenda.id_eventi>0 ".$search_operatori.$search_admin.$search_tecniche.$search_admin_ins.$search_titolo_evento.$search_testo_evento.$search_data_evento.") AND c_agenda.titolo_evento like '%$chiave%' AND c_agenda.testo_evento like '%$chiave_due%' ORDER BY c_agenda.data_evento DESC, c_agenda.data_ins_dati_evento DESC"; $ris_query=mysql_query($query, $conn);
echo $dal_giorno;
echo $al_giorno;
}
?>e mi stampa la data che ho scelto:
2007-07-04 2007-07-16
-
Ciao,
non e' che semplicemente $data_evento non e' settato e $search_data_evento rimane vuoto? Prova a stampare la query.
Ciao
Bruno
-
se seleziono una ricerca dei nomi dei admin questo è quello che mi stampa, e funziona correttamente, infatti ho cercato tuttti gli annunci del sig. Rossi e infatti l'id 4 corrisponde a lui:
SELECT c_agenda., a_admin., a_tecniche., b_operatori., DATE_FORMAT(c_agenda.data_evento, '%d-%m-%Y')AS data_evento, DATE_FORMAT(c_agenda.data_ins_dati_evento, '%d-%m-%Y')AS data_ins_dati_evento FROM c_agenda, a_admin, a_tecniche, b_operatori WHERE c_agenda.id_operatori = b_operatori.id_operatori AND c_agenda.id_admin = a_admin.id_admin AND c_agenda.id_tecniche = a_tecniche.id_tecniche AND (c_agenda.id_eventi>0 AND c_agenda.id_admin like "4") AND c_agenda.titolo_evento like '%%' AND c_agenda.testo_evento like '%%' ORDER BY c_agenda.data_evento DESC, c_agenda.data_ins_dati_evento DESC
ma se cerco per data, mi dovrebbe stampare al posto di AND c_agenda.id_admin like "4" mi dovrebbe stampare AND c_agenda.data_evento>='2007-05-28' AND c_agenda.data_evento<='2007-07-16' e invece questo non me lo stampa
-
Stampa la query quando cerchi per data
BR
-
ecco cosa mi stampa quando cerco per data:
[PHP]
SELECT c_agenda., a_admin., a_tecniche., b_operatori.,
DATE_FORMAT(c_agenda.data_evento, '%d-%m-%Y') AS data_evento,
DATE_FORMAT(c_agenda.data_ins_dati_evento, '%d-%m-%Y') AS data_ins_dati_evento
FROM c_agenda, a_admin, a_tecniche, b_operatori
WHERE c_agenda.id_operatori = b_operatori.id_operatori
AND c_agenda.id_admin = a_admin.id_admin
AND c_agenda.id_tecniche = a_tecniche.id_tecniche
AND (c_agenda.id_eventi>0 )
AND c_agenda.titolo_evento like '%%'
AND c_agenda.testo_evento like '%%'
ORDER BY c_agenda.data_evento DESC,
c_agenda.data_ins_dati_evento DESC
[/PHP]e invece mi avrebbe dovuto stampare questo:
[PHP]
SELECT c_agenda., a_admin., a_tecniche., b_operatori.,
DATE_FORMAT(c_agenda.data_evento, '%d-%m-%Y') AS data_evento,
DATE_FORMAT(c_agenda.data_ins_dati_evento, '%d-%m-%Y') AS data_ins_dati_evento
FROM c_agenda, a_admin, a_tecniche, b_operatori
WHERE c_agenda.id_operatori = b_operatori.id_operatori
AND c_agenda.id_admin = a_admin.id_admin
AND c_agenda.id_tecniche = a_tecniche.id_tecniche
AND (c_agenda.id_eventi>0 AND c_agenda.data_evento>='2007-05-28'
AND c_agenda.data_evento<='2007-07-16')
AND c_agenda.titolo_evento like '%%'
AND c_agenda.testo_evento like '%%'
ORDER BY c_agenda.data_evento DESC,
c_agenda.data_ins_dati_evento DESC
[/PHP]
-
Ciao,
direi che non ci sono molte alternative
if ($data_evento) fallisce e non setta $search_data_evento.
Controlla il contenuto di $data_eventoCiao
Bruno
-
Concordo con bruno61. L'unica spiegazione è che $data_evento non è settata.
Ed in effetti non credo sia settata poichè hai $dal_giorno e $al_giorno
Prova cosi:
if ($dal_giorno && $al_giorno){
$search_data_evento_dal="AND c_agenda.data_evento >= "".$dal_giorno."" AND c_agenda.data_evento <= "".$al_giorno.""";
}
-
Grazie ayrton! Funziona!
Però purtroppo solo se faccio una ricerca per data, se invece voglio fare una ricerca tramite un'altro filtro escludendo quello per data non mi tira fuori nessun dato. Ho provato più volte ma non mi tira fuori più niente.[php]
<?
if ($search==1){
$dal_giorno=$aa1."-".$mm1."-".$gg1;
$al_giorno=$aa2."-".$mm2."-".$gg2;
if ($id_operatori){
$search_operatori="AND c_agenda.id_operatori like "".$id_operatori.""";
}
if ($id_admin){
$search_admin="AND c_agenda.id_admin like "".$id_admin.""";
}
if ($id_tecniche){
$search_tecniche="AND c_agenda.id_tecniche like "".$id_tecniche.""";
}
if ($id_admin_ins_dati_evento){
$search_admin_ins="AND c_agenda.id_admin_ins_dati_evento like "".$id_admin_ins_dati_evento.""";
}
if ($dal_giorno && $al_giorno){
$search_data_evento="AND c_agenda.data_evento >= "".$dal_giorno."" AND c_agenda.data_evento <= "".$al_giorno.""";
}$query="SELECT c_agenda.*, a_admin.*, a_tecniche.*, b_operatori.*, DATE_FORMAT(c_agenda.data_evento, '%d-%m-%Y')AS data_evento, DATE_FORMAT(c_agenda.data_ins_dati_evento, '%d-%m-%Y')AS data_ins_dati_evento FROM c_agenda, a_admin, a_tecniche, b_operatori WHERE c_agenda.id_operatori = b_operatori.id_operatori AND c_agenda.id_admin = a_admin.id_admin AND c_agenda.id_tecniche = a_tecniche.id_tecniche AND (c_agenda.id_eventi>0 ".$search_operatori.$search_admin.$search_tecniche.$search_admin_ins.$search_titolo_evento.$search_testo_evento.$search_data_evento.") AND c_agenda.titolo_evento like '%$chiave%' AND c_agenda.testo_evento like '%$chiave_due%' ORDER BY c_agenda.data_evento DESC, c_agenda.data_ins_dati_evento DESC"; $ris_query=mysql_query($query, $conn);
echo $query;
}
?>
[/php]
-
se cerco solo con un'altro filtro senza selezionare la data non mi tira fuori nessun dato e mi stampa questa query:
SELECT c_agenda., a_admin., a_tecniche., b_operatori., DATE_FORMAT(c_agenda.data_evento, '%d-%m-%Y')AS data_evento, DATE_FORMAT(c_agenda.data_ins_dati_evento, '%d-%m-%Y')AS data_ins_dati_evento FROM c_agenda, a_admin, a_tecniche, b_operatori WHERE c_agenda.id_operatori = b_operatori.id_operatori AND c_agenda.id_admin = a_admin.id_admin AND c_agenda.id_tecniche = a_tecniche.id_tecniche AND (c_agenda.id_eventi>0 AND c_agenda.id_admin like "2"AND c_agenda.data_evento >= "--" AND c_agenda.data_evento <= "--") AND c_agenda.titolo_evento like '%%' AND c_agenda.testo_evento like '%%' ORDER BY c_agenda.data_evento DESC, c_agenda.data_ins_dati_evento DESC
questo non ci dovrebbe essere se non seleziono la data:
AND c_agenda.data_evento >= "--" AND c_agenda.data_evento <= "--"non'è forse perchè nell'if della data manca la parora like?
-
ho risolto
-
Segnalo come risolto