• User Newbie

    Problema Query

    Salve a tutti :ciauz:

    ho dei problemi relativi ad una query..ho un database con due tabelle docdigi e sottolivelli; sottolivelli è legata a docdigi dal numero del documento in comune (infatti elenca i sottolivelli di alcuni documenti, sempre che ce ne siano) e io voglio che un utente tramite un form in cui inserisce una parola chiave possa fare una query in entrambe le tabelle. Ho provato di tutto, ma o non mi visualizza alcun risultato (pur non segnalandomi alcun errore) o sennò mi visualizza i record corrispondenti alla ricerca di una delle due tabelle. Vi scrivo il mio ultimo tentativo, spero che qualcuno possa aiutarmi :arrabbiato: :bho: :mmm:

    "SELECT docdigi., sottolivelli. " .
    "FROM docdigi " .
    "JOIN sottolivelli " .

    	   "ON docdigi_docnum = sottolivelli_docnum " .
    	   
    	   "WHERE sottolivelli_nome LIKE '$keywordstre%'" .
    	   "AND docdigi_desc LIKE '%$keywordstre%'";
    

    ** $keywords tre è il nome del campo del form dove l'utente digita la parola chiave.


  • Super User

    prova questa:

    "SELECT docdigi., sottolivelli.
    FROM docdigi
    JOIN sottolivelli
    ON docdigi_docnum = sottolivelli_docnum
    WHERE sottolivelli_nome LIKE '$keywordstre%'
    or docdigi_desc LIKE '%$keywordstre%'";

    p.s. non serve concatenare le stringhe, php termina l'istruzione quando trova il ;


  • User Newbie

    @Tymba said:

    prova questa:

    "SELECT docdigi., sottolivelli.
    FROM docdigi
    JOIN sottolivelli
    ON docdigi_docnum = sottolivelli_docnum
    WHERE sottolivelli_nome LIKE '$keywordstre%'
    or docdigi_desc LIKE '%$keywordstre%'";

    p.s. non serve concatenare le stringhe, php termina l'istruzione quando trova il ;

    Nulla, non dà errori ma non trova niente, io non riesco proprio a capire x' faccia così :arrabbiato:


  • Super User

    prova a dirci com'è la struttura della tabella che vediamo di trovare la soluzione 🙂


  • User Newbie

    allora questa è la struttura:

    $query = "CREATE TABLE docdigi (
    docdigi_docnum INT (6) NOT NULL AUTO_INCREMENT,
    docdigi_nome VARCHAR (20) NOT NULL,
    docdigi_consistenza CHAR (7) NOT NULL,
    docdigi_livelli TEXT NOT NULL,
    docdigi_cron VARCHAR (40) NOT NULL,
    docdigi_desc TEXT NOT NULL,
    docdigi_bibl TEXT NOT NULL,
    PRIMARY KEY (docdigi_docnum))";

    $query3 = "CREATE TABLE sottolivelli (
    sottolivelli_docnum INT (6) NOT NULL,
    sottolivelli_nome VARCHAR (20) NOT NULL,
    sottolivelli_cron VARCHAR (40) NOT NULL,
    sottolivelli_consistenza VARCHAR (40) NOT NULL,
    KEY (sottolivelli_docnum))";


  • Moderatore

    $keywords è una variabile php?

    Se sì è normale... lo hai messo tra gli apici.

    Prova così:
    "SELECT docdigi., sottolivelli.
    FROM docdigi
    JOIN sottolivelli
    ON docdigi_docnum = sottolivelli_docnum
    WHERE sottolivelli_nome LIKE '%".$keywordstre".%'
    or docdigi_desc LIKE '%".$keywordstre."%';";

    ed attento al fatto che scrivere query così è pericolosetto.
    Controlla che tipo di dati passi con quelle variabili, controlla che non possa mettere commenti e così via. 🙂


  • User Newbie

    Si è una variabile, grazie così va! :vai: :vai: :vai: :vai: 🙂

    @massy said:

    $keywords è una variabile php?

    Se sì è normale... lo hai messo tra gli apici.

    Prova così:
    "SELECT docdigi., sottolivelli.
    FROM docdigi
    JOIN sottolivelli
    ON docdigi_docnum = sottolivelli_docnum
    WHERE sottolivelli_nome LIKE '%".$keywordstre".%'
    or docdigi_desc LIKE '%".$keywordstre."%';";

    ed attento al fatto che scrivere query così è pericolosetto.
    Controlla che tipo di dati passi con quelle variabili, controlla che non possa mettere commenti e così via. 🙂