Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    problema con ricerca per data

    ciao, ho un problema con la ricerca per data:

    1) se faccio solo una ricerca con filtro per data FUNZIONA
    2) se faccio una ricerca con filtro per data insieme ad un'altro filtro FUNZIONA
    3) se faccio una ricerca solo con altri filtri SENZA anche la ricerca per data NON FUNZIONA

    perchè? :master:

    Codice 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."\"";
        }
        
    $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%' AND c_agenda.data_evento>='$dal_giorno' AND c_agenda.data_evento<='$al_giorno' ORDER BY c_agenda.data_evento DESC, c_agenda.data_ins_dati_evento DESC";
        
    $ris_query=mysql_query($query$conn);
    }
    ?>

  2. #2

  3. #3
    Originariamente inviato da ufficio
    UP
    stampa la tua query e metti la segnalazione di errore.

    echo $query;

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  4. #4
    se non faccio nessuna scelta e clicco cerca mi dovrebbero uscire tutti i risultati, invece mi dice che non ha trovato nessun risultato. Questa è la quey che mi ha stampato:

    Codice PHP:
    SELECT c_agenda.*, a_admin.*, a_tecniche.*, b_operatori.*, DATE_FORMAT(c_agenda.data_evento'%d-%m-%Y')AS data_eventoDATE_FORMAT(c_agenda.data_ins_dati_evento'%d-%m-%Y')AS data_ins_dati_evento FROM c_agendaa_admina_tecnicheb_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>) AND c_agenda.titolo_evento like '%%' AND c_agenda.testo_evento like '%%' AND c_agenda.data_evento>='0000-00-00' AND c_agenda.data_evento<='0000-00-00' ORDER BY c_agenda.data_evento DESCc_agenda.data_ins_dati_evento DESC 

  5. #5
    Originariamente inviato da ufficio
    se non faccio nessuna scelta e clicco cerca mi dovrebbero uscire tutti i risultati, invece mi dice che non ha trovato nessun risultato. Questa è la quey che mi ha stampato:
    guarda le righe in grassetto....

    codice:
    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 '%%' 
    			 AND c_agenda.data_evento>='0000-00-00' 
    			 AND c_agenda.data_evento<='0000-00-00' 
    			 ORDER BY c_agenda.data_evento DESC, c_agenda.data_ins_dati_evento DESC
    ammesso che la query fosse corretta ti uscirebbero solo i record dove c_agenda.data_evento = 0000-00-00 .... sempre che abbia un senso cercare la data a quel modo

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    mettiamo il caso che voglio fare una ricerca per nome dell'admin di qualsiasi data, mi dovrebbe trovare tutti i risultati solo di quell'admin per tutte del date, invece rimane il problema di prima e non mi fa uscire niente:


    Codice PHP:
    SELECT c_agenda.*, a_admin.*, a_tecniche.*, b_operatori.*, DATE_FORMAT(c_agenda.data_evento'%d-%m-%Y')AS data_eventoDATE_FORMAT(c_agenda.data_ins_dati_evento'%d-%m-%Y')AS data_ins_dati_evento FROM c_agendaa_admina_tecnicheb_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>AND c_agenda.id_admin like "4") AND c_agenda.titolo_evento like '%%' AND c_agenda.testo_evento like '%%' AND c_agenda.data_evento>='0000-00-00' AND c_agenda.data_evento<='0000-00-00' ORDER BY c_agenda.data_evento DESCc_agenda.data_ins_dati_evento DESC 
    come faccio ad escludere la ricerca per data quando non mi serve?

  7. #7
    Originariamente inviato da ufficio
    mettiamo il caso che voglio fare una ricerca per nome dell'admin di qualsiasi data, mi dovrebbe trovare tutti i risultati solo di quell'admin per tutte del date, invece rimane il problema di prima e non mi fa uscire niente:

    come faccio ad escludere la ricerca per data quando non mi serve?
    non metti la ricerca per data.

    il where pone delle condizioni di ricerca. In AND significa che devono essere tutte soddisfatte pena un false sul record. Devi organizzare la ricerca in base ai dati che devono essere filtrati.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    ora ho provato a mettere OR al posto di AND nella ricerca per data, solo che mi tira fuori migliaia di risultati duplicati per tante volte, insomma un casino

    forse ho messo OR nel punto sbagliato?

    Codice 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."\"";
        }
        
    $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.") AND c_agenda.titolo_evento like '%$chiave%' AND c_agenda.testo_evento like '%$chiave_due%' OR c_agenda.data_evento>='$dal_giorno' AND c_agenda.data_evento<='$al_giorno' ORDER BY c_agenda.data_evento DESC, c_agenda.data_ins_dati_evento DESC";
        
    $ris_query=mysql_query($query$conn);
    }
    ?>

  9. #9


    devi "formare" il where a seconda di quello che vuoi trovare. Se le date non servono, non si mettono. Quindi devi formare delle condizioni WHERE tante quante sono le particolari condizioni di ricerca che vuoi fare.

    Non e' che mettendo AND od OR a caso la query miracolosamente funziona. Magari ti va quella specifica query per pura combinazione, ma non vanno le altre. Avresti dei risultati casuali.

    Quindi visto i dati disponibli, stabilito in base a cosa fare la ricerca, definisci con un if/elseif o switch che sia come comporre la variabile where da utilizzare.


    @ manda a capo la riga come nell'esempio sopra, altrimenti la query e' difficilmente leggibile.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  10. #10
    non sapevo che si potevano mettere più WHERE in un'unica query, ora ci provo.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.