Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    41

    [PHP]query di ricerca per sito

    Salve a tutti, per il mio sito che riguarda una biblioteca ho deciso di fare due tipi di ricerca: semplice ed avanzata; per quella semplice, c'è una casella di testo in cui bisogna inserire una parola; per quella avanzata, invece, si ha la possibilità di inserire il titolo, la casa editrice, e l'autore; per questo io le query le ho svolte nel seguente modo:

    Query ricerca semplice:

    $query="SELECT Libro.Titolo, Libro.Genere, Libro.Lingua, Autore.Nome, Autore.Cognome, CasaEditrice.Nome ";
    $query .="FROM Libro,Autore,Autorelibro,CasaEditrice ";
    $query .="WHERE Libro.IDl=Autorelibro.Libro AND Autore.IDa=Autorelibro.Autore ";
    $query .="AND Casaeditrice.IDc=Libro.Casa AND Libro.Titolo='".$_POST['cerca']."' ";
    $query .="OR Libro.Genere='".$_POST['cerca']."' OR Libro.Lingua='".$_POST['cerca']."' ";
    $query .="OR Autore.Nome='".$_POST['cerca']."' OR Autore.Cognome='".$_POST['cerca']."' ";
    $query .="OR CasaEditrice.Nome='".$_POST['cerca']."'";

    Query ricerca avanzata:

    $query="SELECT Libro.Titolo, Libro.Genere, Libro.Lingua, Autore.Nome, Autore.Cognome, CasaEditrice.Nome ";
    $query .="FROM Libro,Autore,Autorelibro,CasaEditrice ";
    $query .="WHERE Libro.IDl=Autorelibro.Libro AND Autore.IDa=Autorelibro.Autore ";
    $query .="AND Casaeditrice.IDc=Libro.Casa AND Libro.Titolo='".$_POST['tt']."' ";
    $query .="OR Autore.Nome='".$_POST['at']."' OR Autore.Cognome='".$_POST['at']."' ";
    $query .="OR CasaEditrice.Nome='".$_POST['edit']."'";

    dove 'cerca' è la casella di testo della query semplice, 'tt' quella del titolo e riguarda la query avanzata, 'at' sempre l'avanzata e riguarda l'autore, 'edit' sempre l'avanzata la casa editrice.

    Purtroppo, però, la query non funziona
    Non so dove ho sbagliato, se nella giunzione, oppure negli altri campi in php, per questo vi chiedo il vostro aiuto, anche perchè query di ricerca non ne ho mai fatte

  2. #2
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    non funziona è troppo generico!!!! ti da qualche errore? spiegati meglio

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    128
    ma perchè non utilizzi le join? e poi a livello logico, gli "or" a cosa sono alternativi? ti converrebbe usare delle parentesi.

    è un pò difficile aggiustare la query non conoscendo le tabelle che usi, però una prima "traccia" può essere:

    SELECT * FROM Libro
    join Autorelibro on Libro.IDl = Autorelibro.Libro
    join Autore on Autorelibro.Autore = Autore.IDa
    join Casaeditrice on Libro.Casa = Casaeditrice.IDc
    where
    Libro.Titolo='".$_POST['cerca']."'
    OR Libro.Genere='".$_POST['cerca']."'
    OR Libro.Lingua='".$_POST['cerca']."'
    OR Autore.Nome='".$_POST['cerca']."'
    OR Autore.Cognome='".$_POST['cerca']."'
    OR CasaEditrice.Nome='".$_POST['cerca']."'

    PS: non avendo più gli "and" nella where, non è necessario racchiudere tra parentesi i tanti or.

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.