Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Modulo per la ricerca di risultati da un database

    Sto letteralmente impazzendo per capire come fare per realizzare un ciclo che mi permetta di mostrare i risultati di un database a seconda dei criteri specificati dall'utente...

    Mi spiego:

    Ho un database di articoli con diversi campi, ad esempio:
    | NOME_ARTICOLO | CATEGORIA | ALTROCAMPO | ENNESIMO CAMPO |

    Ora, ho creato un form che permette all'utente di selezionare i parametri della ricerca attraverso dei campi <SELECT> e ho realizzato la query che interroga il database senza un WHERE. Al suo posto ho messo una variabile $where_clause che vorrei appunto riempire con le scelte effettuate dall'utente.

    I parametri di ricerca vengono indicati dall'utente tramite dei <SELECT>, ad esempio se l'utente seleziona "categoria = 5" vorrei ricercare tutti gli elementi che appartengono a questa categoria, $where_clause diverrebbe quindi "WHERE categoria = '5'". Fin qui tutto semplice, il problema si pone quando l'utente seleziona più parametri di ricerca, ad esempio "categoria = 5" e "altrocampo = 3", dovrei avere un $where_clause simile a questo: WHERE categoria = '5' AND altrocampo = '3'

    E così via per ogni parametro impostato dall'utente.

    Mi sfugge quale ciclo utilizzare per fare questo, non riesco ad arrivarci proprio a livello di logica

    Considerando anche che tra le variabili $_GET può figurare anche $_GET['pag'] che serve per la paginazione qualcuno potrebbe chiarirmi le idee?

  2. #2
    Utente di HTML.it L'avatar di deleted_id_48586
    Registrato dal
    Nov 2002
    Messaggi
    1,732
    Fai così per la query di default:

    Codice PHP:
    SELECT FROM table WHERE 1 
    e poi per ogni criterio di scelta impostato dall'utente vi "appendi" una nuova clausola es:

    "AND clausola"

    Codice PHP:
    SELECT FROM table WHERE 1 AND categoria 

    Codice PHP:
    SELECT FROM table WHERE 1 AND categoria AND articolo 
    ecc.

    Il trucco se vedi sta proprio nel creare una clausola fittizzia WHERE 1 = 1 all'inizio in modo da poter aggiungere altre clausole senza impazzire con gli AND.

    Spero ti sia stato utile.


  3. #3
    Grazie mille sgurbat! Ero arrivato alla stessa conclusione da solo ponendo comunque una clausula WHERE farlocca ed accompagnarla con i vari "AND condizione"

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.