Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Ricerche Complesse

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    13

    Ricerche Complesse

    Ciao a tutti,
    Cerco di essere abbastanza sintentico e di indirizzarmi subito al dunque. Ho sviluppato un modulo di ricerca su database mysql che compila la query con i valori attribuiti dall'utente e fin qui tutto bene, il problema nasce con input del tipo minore di, maggiore di, nel senso che se vado a modificare la query sottostansre sostituendo il segno = con il > la query mi da come risultato tutti i documenti con numero maggiore di quello indicato dall'utente, ma il problema è che non conosco in anticipo quale sia la condizione di filtro che sarà definita.


    Codice PHP:
    $clausola_where .= (isset($_POST['numero_documento']) && $_POST['numero_documento'] !='')? "AND numero_documento='".mysql_escape_string($_POST['numero_documento'])."' ":""
    qualcuno potrebbe indirizzarmi su come proseguire?
    Grazie in anticipo

  2. #2
    Quale sarebbe il problema?

    A seconda del valore selezionato dall'utente crei una differente condizione WHERE.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    13
    Innanzitutto grazie per l'immediata risposta,
    il problema è che inserendo un'altra condizione where il risultato della query è questo:

    SELECT * FROM intrauserfatture WHERE anno='2001' AND num_documento ='< 5' AND num_documento <'< 5'

    come vedi non ha alcun senso.

    come faccio ad impostare il codice in modo che venga inserito nella query l'operatore di input digtato dall'utente sia esso < oppure > o anche un intervallo?
    Grazie

  4. #4
    Ovviamente l'utente sceglierà il tipo di operatore da una SELECT e questo arriverà come valore in una variabile a se.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    13
    ok, se però non voglio avvalermi di una select come posso procedere? Attualmente tutte le condizioni di AND corrispondono all'operatore di uguaglianza come puoi vedere:

    Codice PHP:
    $query_Record "SELECT * FROM intrauserfatture WHERE ";  $clausola_where "";  $clausola_where .= (isset($_POST['anno']) && $_POST['anno'] !='')? "anno='".mysql_escape_string($_POST['anno'])."' ":"";  
    $clausola_where .= (isset($_POST['protocollo_iva']) && $_POST['protocollo_iva'] !='')? "AND protocollo_iva ='".mysql_escape_string($_POST['protocollo_iva'])."' ":"";  
    $clausola_where .= (isset($_POST['data_doc']) && $_POST['data_doc'] !='')? "AND data_doc='".mysql_escape_string($_POST['data_doc'])."' ":"";  
    $clausola_where .= (isset($_POST['numero_doc']) && $_POST['numero_doc'] !='')? "AND numero_doc='".mysql_escape_string($_POST['numero_doc'])."' ":"";  
    $clausola_where .= (isset($_POST['tot_importo']) && $_POST['tot_importo'] !='')? "AND tot_importo='".mysql_escape_string($_POST['tot_importo'])."' ":"";  
    $clausola_where .= (isset($_POST['ragione_sociale']) && $_POST['ragione_sociale'] !='')? "AND ragione_sociale='".mysql_escape_string($_POST['ragione_sociale'])."' ":"";  $clausola_where .= (isset($_POST['codice']) && $_POST['codice'] !='')? "AND codice='".mysql_escape_string($_POST['codice'])."' ":"";  
    $query_Recordset1 $query_Record.$clausola_where;  
    $Recordset1 mysql_query($query_Recordset1$data_connetion_db1) or die(mysql_error()); $row_Recordset1 mysql_fetch_assoc($Recordset1); 
    E se impostassi un ciclo del tipo switch? potrebbe essere la strada corretta?

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.