Visualizzazione dei risultati da 1 a 4 su 4

Discussione: aiuto con le query

  1. #1

    aiuto con le query

    Ciao a tutti,
    sto facendo un sito per una videoteca e sono i difficoltà a fare la pagina di ricerca dei film.
    La pagina consiste in un form con 4 campi: il titolo, il regista, il genere e l'anno.
    Io dovrei interrogare la tabella con i dati dei film in modo che mi visualizzi solo quelli che hanno le caratteristiche selezionate dall'utente ma mi funziona solo se l'utente completa tutti i campi. Infatti se ne lascia almeno uno vuoto la query che ho scritto non visualizza nessun film in quanto nessuno ha ad esempio il genere pari a "vuoto". In pratica ho scritto una cosa del genere:

    $var="SELECT * FROM Film1 NATURAL JOIN Film2 WHERE genere='$genere_f' AND titolo='$titolo_f AND regista='$regista_f AND anno='$anno_f'";
    $query= mysql_query($var, $conn) or die ("Connessione alla tabella fallita");

    Ho provato anche con l'OR al posto dell'AND ma non visualizza i film giusti.
    Aspetto una vostra risposta.
    Ciao e grazie.

  2. #2
    usa i caratteri jolly e like invece di =

    where campo LIKE '$variabile%'

    and o or dipendono da come vuoi selezionare i dati a disposizione. se mettere o meno il jolly devi valutarlo in base alle scelte dell'utente. Per esempio se mettese nessuna scelta puoi eliminare il campo dal where oppure inserire un % al posto di nulla. Ma con LIKE e non con uguale.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Grazie mille!
    Ho provato e mi funziona perfettamente.
    Ciao e grazie ancora.

  4. #4
    Utente di HTML.it L'avatar di Razorblade
    Registrato dal
    Feb 2002
    Messaggi
    1,308
    Semplice, fai la query spezzettata.


    $sql = "SELECT * FROM Film1 NATURAL JOIN Film2 WHERE 1 ";

    if(IsSet($_POST["genere_f"]))
    $sql.= "AND genere='$genere_f' ";

    if(IsSet($_POST["titolo_f"]))
    $sql.= "AND titolo='$titolo_f' ";

    if(IsSet($_POST["regista_f"]))
    $sql.= "AND regista='$regista_f' ";

    if(IsSet($_POST["anno_f"]))
    $sql.= "AND anno='$anno_f' ";

    NOTA BENE CHE:
    quando devi effettuare delle richerche è bene che tu usi questo genere di sintassi
    WHERE campo LIKE CONVERT( _utf8 '%parolaricercata%' USING latin1 )

    La percentuale iniziale puoi forse anche toglierla, dipende se tra i risultati tu voglia includere tutti i record che per quel campo ricercato contengano la parola ricercata o se tu voglia includere solo i record che inizino o siano uguali alla parola ricercata.

    Se usi phpmyadmin ti consiglio di effettuare delle ricerche con questo strumento e vedere la stringa sql che genera.

    Nell'esempio ho utilizzato l'array $_POST, ho tenuto conto che tu utilizzi quel metodo.
    Ciao

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 © 2024 vBulletin Solutions, Inc. All rights reserved.