Filtri multipli per database mysql

di il
5 risposte

Filtri multipli per database mysql

Salve,
stò tentando di fare un database con PHP e Mysql per la gestione di un magazzino, ma è da poco che sono entrato nel mondo PHP e volevo sapere in che modo posso permettere all'utilizzatore di filtrare in output sul video la ricerca dei dati del databse.
Mi spiego meglio, vorrei avere la possibilità di avere tanti form dove l'utilizzatore può andare a scrivere le parole da cercare quanti sono i campi della mia tabella, dopodichè filtrare la ricerca sul database in base ai form scritti, ovviamente vorrei non devere per forza compilare tutti i campi.

Non sò come sia meglio concatenare la ricerca sul comando select.....

$query=mysql_query ("SELECT * FROM tabella1 WHERE .......................'",$db);

Grazie in anticipo a quanti voglio aiutarmi.

5 Risposte

  • Re: Filtri multipli per database mysql

    Ciao simonemar, cerco di interpretare quanto hai scritto
    quando parli di diversi form da compilare ti riferisci in realta a dei campo input di tipo testo giusto?

    Nella query puoi fare l'append solo per i campi riempiti e ti consiglio di scrivere il testo della query dentro una variabile, non nel parametro della funzione.
    Esempio:
    
    //Recupero valori
    $campo1 = $_POST['campo1'];
    $campo2 = $_POST['campo2'];
    $campoN = $_POST['campon'];
    
    //Composizione query
    $sql = 'SELECT * FROM tabella1 WHERE 1=1'
    $sql .= RecuperaFiltro($campo1,'nomecampotabella1'); 
    $sql .= RecuperaFiltro($campo2,'nomecampotabella2'); 
    $sql .= RecuperaFiltro($campoN,'nomecampotabellaN'); 
    $query=mysql_query ($sql,$db);
    
    //Funzione di accodamento
    La funzione RecuperaFiltro($valore_input, $nome_colonna) da scrivere deve verificare l'input inserito e qualora il valore del parametro inserito sia diverso da null deve restituire la stringa: 
    " and " . $nome_colonna . " = "'" . $valore_input . "'";
    Ovviamente devi anche prevedere una validazione dei dati inseriti in input...
  • Re: Filtri multipli per database mysql

    Grazie Toki,
    sei stato di grande aiuto e funziona tutto alla grande, ora però vorrei migliorare un pò la ricerca, faccio un esempio:
    nel mio database Mysql ho memorizzati diversi campi, tra cui “ditta” e colore”.
    In una pagina di ricerca, ho un form di inserimento dati (tipo input type= text) dove l’utente và a scrivere la “ditta”, una volta che premo il pulsante “submit” vorrei che in un menù a tendina mi compaia solo i “colori” relativi a quella ditta. Da quello che ho letto dovrei utilizzare gli “option value” dei menù a tendina ma non ho capito bene con quale sintassi utilizzarli visto che la quantità di colori può variare continuamente all’aumentare dei record della mia tabella.
    Spero di essermi spiegato abbastanza.
    Grazie come sempre a chiunque voglia darmi una mano.
  • Re: Filtri multipli per database mysql

    simonemar ha scritto:


    Grazie Toki,
    sei stato di grande aiuto e funziona tutto alla grande, ora però vorrei migliorare un pò la ricerca, faccio un esempio:
    nel mio database Mysql ho memorizzati diversi campi, tra cui “ditta” e colore”.
    In una pagina di ricerca, ho un form di inserimento dati (tipo input type= text) dove l’utente và a scrivere la “ditta”, una volta che premo il pulsante “submit” vorrei che in un menù a tendina mi compaia solo i “colori” relativi a quella ditta. Da quello che ho letto dovrei utilizzare gli “option value” dei menù a tendina ma non ho capito bene con quale sintassi utilizzarli visto che la quantità di colori può variare continuamente all’aumentare dei record della mia tabella.
    Spero di essermi spiegato abbastanza.
    Grazie come sempre a chiunque voglia darmi una mano.
    Ciao simonemar, potresti cortesemente scrivere il codice che ti ha permesso di eseguire la query? Io devo fare la stessa cosa ma per 10 campi di input.
    Grazie !

    Ti riporto il codice che ho scritto:
    
    <?php
    dbconnect();
        //Recupero valori
        $campo1 = "2012-01-01";
        $campo2 = "2012-03-01";
        $campoN = $_POST['campon'];
    
        //Composizione query
        $sql = 'SELECT * FROM questionario_pdv WHERE';
        $sql .= ' and data_formazione_dal BETWEEN "'" . $campo1 . "'" and "'" . $campo2";
        $query=mysql_query ($sql) or die(mysql_error()); 
     
    if (!$query)
    {
    print "ok";	
    }
    else
    {
    print "ko";
    }
     
    function dbconnect() {
    	mysql_connect("localhost", "root", "");
    	@mysql_select_db("formazione") or die ("Unable to select database");
    }
    ?>
    
    Scritto così il codice mi da il seguente errore:

    Parse error: syntax error, unexpected '"' in C:\Program Files\EasyPHP-5.3.3\www\formazione\1.test.php on line 13
  • Re: Filtri multipli per database mysql

    Ciao ho letto il tuo messaggio privato, da quanto scrivi nel post hai degli errori con l'uso degli apici.

    prova cos'ì:
    $sql = "SELECT * FROM questionario_pdv WHERE 1=1";
        $sql .= " and data_formazione_dal BETWEEN '" . $campo1 . "' and '" . $campo2 . "'";
  • Re: Filtri multipli per database mysql

    Toki ha scritto:


    Ciao ho letto il tuo messaggio privato, da quanto scrivi nel post hai degli errori con l'uso degli apici.

    prova cos'ì:
    $sql = "SELECT * FROM questionario_pdv WHERE 1=1";
        $sql .= " and data_formazione_dal BETWEEN '" . $campo1 . "' and '" . $campo2 . "'";
    Sei un grande !!
    Ora funziona.

    Con gli apici ho sempre avuto problemi
Devi accedere o registrarti per scrivere nel forum
5 risposte