Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    171

    ricerca con diversi campi

    salve.
    il mio problema di oggi è questo :

    devo fare una ricerca di dati nel DB con campi multipli.
    mi spiego meglio.

    ho un interfaccia con 7 campi form a tendina.
    e devo effettuare la ricerca a seconda delle caratteristiche selezionate nei campi form.
    dovo poter cercare i dati sia se sono tutti i campi selezionati, sia se è selezionato solo uno, sia se sono selezionati 2 a caso o 3 ecc...

    io avevo pensato di fare cosi.

    Codice PHP:

    if(campo1){
      if(
    campo2)
        if(
    campo3)
          if(
    campo4){
             if(
    campo5)
                if(
    campo6)  
                  if(
    campo7)

    e poi mettere i relativi else .
    e intrecciare con gli if tutte le soluzioni possibili poi a secondo di quali campi sono settati eseguo la query adatta.

    solo che facendo cosi impazzisco dopo 10 if ed else non capisco piu niente.
    conoscete una soluzione migliore ?

    grazie a tutti

  2. #2
    Devi creare la query dimamicamente.
    Una cosa del genere:

    Codice PHP:
    $query "SELECT campo FROM tabella WHERE 1";
    if (
    $campo1) {
        
    $query .= " AND condizione1";
    }
    if (
    $campo2) {
        
    $query .= " AND condizione2";
    }
    ...
    if (
    $campoN) {
        
    $query .= " AND condizioneN";

    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    171
    scusa ma where 1 cosa significa ?

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    171
    Codice PHP:

    function tutto_caratteristiche($tipo_ghiacciaio$forma_ghiacciaio,$frontal_char$longi_profile,$alimentazione$attivita$orientazione$ordine$modo){


            
            
    $qry "SELECT q.glacier_name AS nome_ghiacciaio, q.glacier_sub_name AS sub_name , q.glacier_code AS codice_ghiacciaio, q.glacier_sub_code AS sub_code, h.name_it AS tipo, i.name_it AS forma, l.name_it AS frontal, m.name_it AS longi, n.name_it AS alimentazione, o.name_it AS attivita, p.name AS orientazione, a.char_year AS anno 
            FROM type_glacier a, form_glacier b, frontal_glacier c, profile_glacier d, source_nourish_glacier e, activity_glacier f, glacier_orientation g, glacier_type h, glacier_form i, frontal_char l, longi_profile m, source_nourish n, tongue_activity o, orientation p, glaciers q 
            WHERE a.id_glacier_type=
    $tipo_ghiacciaio AND b.id_glacier_form=$forma_ghiacciaio AND c.id_frontal_char= $frontal_char AND d.id_longi_profile=$longi_profile AND e.id_source_nourish = $alimentazione AND f.id_tongue_activity = $attivita AND g.id_orientation= $orientazione AND a.id_glacier = b.id_glacier AND b.id_glacier=c.id_glacier AND c.id_glacier=d.id_glacier AND d.id_glacier=e.id_glacier AND e.id_glacier=f.id_glacier AND f.id_glacier=g.id_glacier AND a.char_year = b.char_year AND a.char_year = c.char_year AND a.char_year = d.char_year AND a.char_year = e.char_year AND a.char_year = f.char_year AND a.char_year = g.char_year AND h.id_glacier_type= a.id_glacier_type AND i.id_glacier_form = b.id_glacier_form AND l.id_frontal_char = c.id_frontal_char AND m.id_longi_profile = d.id_longi_profile AND n.id_source_nourish = e.id_source_nourish AND o.id_tongue_activity= f.id_tongue_activity AND p.id_orientation= g.id_orientation AND q.id_glacier = a.id_glacier ORDER BY $ordine $modo";
            
    $result pg_query($qry) or die ("Errore nella query"$qry "\n" pg_result_error());
            
            while (
    $valori pg_fetch_assoc ($result)){
                
    $totale[] = $valori;
                }
                return 
    $totale;
        } 


    questa è la mia queri quando tutti i campi sono settati..
    come faccio a farla dinamica ??

  5. #5
    Quote Originariamente inviata da processore Visualizza il messaggio
    scusa ma where 1 cosa significa ?
    Ti serve per evitare di dover controllare ed eventualmente togliere la clausola WHERE nel caso nessuna condizione sia selezionata ed essendo una condizione sempre vera non influisce sul corretto funzionamento della query.


    Quote Originariamente inviata da processore Visualizza il messaggio
    [PHP]
    questa è la mia queri quando tutti i campi sono settati..
    come faccio a farla dinamica ??
    Esattamente col codice che ti ho postato.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    171
    scusami ti sarei davvero grato se mi puoi modificare questa query in modo dinamico.

    metto questa che usa solo 2 campi per capire come fare
    perche non ci riesco proprio.
    poi quella grande la modifico io


    Codice PHP:
    function caratteristiche5($tipo_ghiacciaio$forma_ghiacciaio$ordine$modo){
        
            
    $qry "SELECT q.glacier_name AS nome_ghiacciaio, q.glacier_sub_name AS sub_name , q.glacier_code AS codice_ghiacciaio, q.glacier_sub_code AS sub_code, h.name_it AS tipo  i.name_it AS forma, a.char_year AS anno 
            
            FROM type_glacier a, form_glacier b, glacier_type h, glacier_form i, glaciers q 
            
            WHERE a.id_glacier_type=
    $tipo_ghiacciaio AND b.id_glacier_form=$forma_ghiacciaio AND a.id_glacier = b.id_glacier AND a.char_year = b.char_year AND h.id_glacier_type= a.id_glacier_type AND i.id_glacier_form = b.id_glacier_form AND  q.id_glacier = a.id_glacier ORDER BY $ordine $modo";
            
    $result pg_query($qry) or die ("Errore nella query"$qry "\n" pg_result_error());
            
            while (
    $valori pg_fetch_assoc ($result)){
                
    $totale[] = $valori;
                }
                return 
    $totale;

        } 

    grazie mille per l'aiuto

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    171
    quello che non riesco a capire non è la parte della where. perche sei stato chiarissimo, è la parte della select e della form. dato che ci sono tante tabelle e ogni campo e associato a una tabella. quindi se un campo non è settato non devo usare quella tabella e lo stesso non devo selezionare il nome nella select

  8. #8
    Se le condizioni selezionate influiscono anche sulle tabelle da coinvolgere nella query allora la costruzione dinamica della stessa diventa un po' più complicata.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  9. #9
    ma quale sarebbe il problema con quella query, che ha solo 2 campi di ricerca (tipo_ghiacciaio e forma_ghiacciaio)... il resto sono per la join tra tabelle...
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    171
    Codice PHP:
    function caratteristiche5($tipo_ghiacciaio$forma_ghiacciaio$ordine$modo){
        
            
    $qry "SELECT q.glacier_name AS nome_ghiacciaio, q.glacier_sub_name AS sub_name , q.glacier_code AS codice_ghiacciaio, q.glacier_sub_code AS sub_code, h.name_it AS tipo  i.name_it AS forma, a.char_year AS anno 
            
            FROM type_glacier a, form_glacier b, glacier_type h, glacier_form i, glaciers q 
            
            WHERE a.id_glacier_type=
    $tipo_ghiacciaio AND b.id_glacier_form=$forma_ghiacciaio AND a.id_glacier = b.id_glacier AND a.char_year = b.char_year AND h.id_glacier_type= a.id_glacier_type AND i.id_glacier_form = b.id_glacier_form AND  q.id_glacier = a.id_glacier ORDER BY $ordine $modo";
            
    $result pg_query($qry) or die ("Errore nella query"$qry "\n" pg_result_error());
            
            while (
    $valori pg_fetch_assoc ($result)){
                
    $totale[] = $valori;
                }
                return 
    $totale;

        } 

    il problema è che non capisco come rendere dinamico SELECT e FROM

    per esempio se voglio cercare solo per tipo ghiacciaio la tabella form_glacier non la devo prendere e nemmeno i campi nella SELECT corrispondenti a form_glacier.

    mentre per la where posso fare come mi ha detto satifal

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.