Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    302

    Campo di ricerca con valore obbligatorio

    Buongiorno a tutti,
    ho una form che serve a ricercare dei dati in un database, allo stato attuale l'utente può effettuare la ricerca inserendo o il cliente, o la targa o la data, il problema è che se non valorizza nessuno dei campi, cliccando sul pulsante CERCA, gli vengono mostrati TUTTI i record presenti nel database.

    Il codice di ricerca è questo :

    codice:
    $cliente = $_POST['cliente'];
    $targa = $_POST['targa'];
    $data = $_POST['data'];
    
    
    $query = "SELECT * FROM CommesseOfficina WHERE 1";
    
    
    if (!empty($cliente)) {
        $query .= " AND `cliente` = '$cliente'";
    }
    if (!empty($targa)) {
        $query .= " AND `targa` = '$targa'";
    }
    
    
    if (!empty($data)) {
        $query .= " AND `data` = '$data'";
    }
    bene, vorrei implementare un else che obblighi l'utente a valorizzare almeno uno dei campi, non so però come scrivere il pezzo di codice.

    Mi aiutate ?
    Se volete che la funzione di un programma non venga scoperta dall'utente, descrivetela nella documentazione...

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    All'inizio dello script
    Codice PHP:
    if (trim($_POST['cliente']) == '' && trim($_POST['targa']) == '' && trim($_POST['data']) == '')
    {
        
    //redirect al form con messaggio di errore indicante "compila almeno un campo"


  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    302
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    All'inizio dello script
    Codice PHP:
    if (trim($_POST['cliente']) == '' && trim($_POST['targa']) == '' && trim($_POST['data']) == '')
    {
        
    //redirect al form con messaggio di errore indicante "compila almeno un campo"

    Buongiorno Alhazred,
    innanzitutto grazie per la risposta, ho provato ad implementare il codice che mi hai passato, ma continuo a visualizzare tutti i risultati, (premetto che il messaggio compila almeno un campo non l'ho ancora scritto, perchè non so dove implementarlo), sono un'apprendista php e penso che te ne sarai reso conto ....

    Codice PHP:
    $query "SELECT * FROM CommesseOfficina WHERE 1";
    if (
    trim($_POST['cliente']) == '' && trim($_POST['targa']) == '' && trim($_POST['data']) == ''){    //redirect al form con messaggio di errore indicante "compila almeno un campo"}
    if (!empty($cliente)) {    $query .= " AND `cliente` = '$cliente'";}if (!empty($targa)) {    $query .= " AND `targa` = '$targa'";}
    if (!empty(
    $data)) {    $query .= " AND `data` = '$data'";} 
    scritto così, dovrei quantomeno ricevere una pagina bianca o sbaglio ? Teoricamente, php verifica che la prima condizione non è verifica e non dovrebbe proseguire l'esecuzione del codice ... invece a me scritto così, mostra sempre tutti i risultati
    Se volete che la funzione di un programma non venga scoperta dall'utente, descrivetela nella documentazione...

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Beh, se non ci metti il redirect è ovvio che non funzioni, entri in quell'if, ma non succede niente e lo script continua.

  5. #5
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Se vuoi vedere qualcosa di funzionante senza il redirect puoi fare così
    Codice PHP:
    if (trim($_POST['cliente']) == '' && trim($_POST['targa']) == '' && trim($_POST['data']) == '')
    {
        
    //redirect al form con messaggio di errore indicante "compila almeno un campo"
    }
    else
    {
        
    // questo non serve a niente messo così
        // potresti usare direttamente le variabili $_POST
        // sarebbe però il caso che le passassi alla funzione mysql_real_escape_string()
        
    $cliente $_POST['cliente'];
        
    $targa $_POST['targa'];
        
    $data $_POST['data'];
        
    /***********************************/

        
    $query "SELECT * FROM CommesseOfficina WHERE 1";

        if (!empty(
    $cliente)) {
            
    $query .= " AND `cliente` = '$cliente'";
        }

        if (!empty(
    $targa)) {
            
    $query .= " AND `targa` = '$targa'";
        }

        if (!empty(
    $data)) {
            
    $query .= " AND `data` = '$data'";
        }

        
    //e il resto del tuo script

    P.S.: suppongo tu stia usando le funzioni mysql_, se così fosse, passa alle funzioni mysqli_ perché le prime sono deprecate e sulle nuove versioni di PHP non funzionano più.

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    302
    Perfetto, grazie di cuore per le dritte, ho risolto.

    Naturalmente in maniera grossolana, lasciando tutto come stava. Non conosco mysqli

    E non ho capito perchè mi dici:

    // questo non serve a niente messo così

    // potresti usare direttamente le variabili $_POST
    // sarebbe però il caso che le passassi alla funzione mysql_real_escape_string()

    non lo capisco, perchè IO sono a digiuno, cercherò di approfondire
    Se volete che la funzione di un programma non venga scoperta dall'utente, descrivetela nella documentazione...

  7. #7
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Segui le due guide che ho in firma, dovrebbero spiegarti un po' di cose, specialmente quella relativa a php e mysql.

    La funzione di cui ti ho parlato serve a fare in modo che un utente smaliziato non possa far fare alla query cose non previste, per esempio potrebbe cancellarti tutto il db.

    Per quanto riguarda mysqli_ c'è poco di diverso da mysql_ solo che in alcune funzioni dovrai passare esplicitamente la variabile contenente il link al database.

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.