• Moderatore

    così a occhio $dal_giorno e $al_giorno non risultano come date ma come numeri..prova a stamparle con un echo appena le inizializzi e guarda il risultato


  • User Attivo

    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


  • User

    Ciao,
    non e' che semplicemente $data_evento non e' settato e $search_data_evento rimane vuoto? Prova a stampare la query.
    Ciao
    Bruno


  • User Attivo

    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


  • User

    Stampa la query quando cerchi per data
    BR


  • User Attivo

    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]


  • User

    Ciao,
    direi che non ci sono molte alternative
    if ($data_evento) fallisce e non setta $search_data_evento.
    Controlla il contenuto di $data_evento

    Ciao
    Bruno


  • Super User

    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.""";
    }


  • User Attivo

    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]


  • User Attivo

    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?


  • User Attivo

    ho risolto 😉

    :ciauz:


  • Super User

    Segnalo come risolto 🙂