• Super User

    query di ricerca e modulo

    ciao a tutti ,

    devo creare un piccolo motore di ricerca interno a un sito.

    Il mio problema e che non so su quale tabella verra effettuata la query perche ci sono 4 tabelle e nel modulo ce un menu a discesa per selezionare su quale tabella eseguire la query, ho creato le variabili modulo e isnerite nella query e tutto funziona se scrivo diretamente il nome della tabella mentre se metto la variabile modulo mi da errore e non esegue la query che e queta :

    SELECT *
    FROM tabella
    WHERE categoria = contratto AND citta = cit OR nvani BETWEEN nvani1 AND nvani2
    ORDER BY ID DESC

    tabella, contratto,cit,nvani1 ,nvani2 sono le variabili del modulo

    se al posto delal variabile tabelal metto come valore fisso il nome di una delel tabelel funziona , se metto la variabile no mi da questo errore :

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''indipendenti' WHERE categoria = 'vendita' AND citta = 'paola' OR nvani BETWEEN' at line 1

    pero la variabile tabella la vede ( dove ce scritto indipendenti)

    dove sto sbagliando??


  • User Attivo

    ciao Kaisersose,
    da quanto hai scritto potrebbre sembrare un problema di apici.
    se magari posti il codice possiamo provare a darti un mano

    😉


  • User Attivo

    sempre sempre sempre seeeeempre la chiarezza e l'ordine 😛

    
    $q = mysql_query("SELECT *
    FROM ". $tabella ."
    WHERE categoria = ". $contratto ." AND citta = ". $cit ." OR ". $nvani ." BETWEEN ". $nvani1 ." AND ". $nvani2 ."
    ORDER BY ID DESC"
    

    Poi quando usi le relazioni ( AND OR ecc ecc ) abituati a mettere le parentesi giuste perche fra (var1 AND var2) OR var3 cambia fra var1 AND (var2 OR var3)

    😃


  • Super User

    ok grazie ,

    provo e vi faccio sapere.

    :=)


  • Super User

    SELECT *
    FROM tabella
    WHERE categoria = contratto AND citta = cit AND nvani BETWEEN nvani1 AND nvani2
    ORDER BY ID DESC

    io ho scritto cosi dove

    tabella contratto cit nvani1 nvani2 sono le variabili provenienti dal modulo.

    se al posto della var tabella scrivo il nome della tabella funziona se scrivo la variable mi da errore.

    L'errore sta solo nella query come vedete non ho usato apici anche perche i nomi delle variabili non sono gli stessi delle tabelle

    l'unico errore e nelal variabile tabella che non ho capito perche mi da sempre questo errore :

    You have an error in your SQL syntax near ''appartamenti' WHERE categoria = 'fitto' AND citta = 'PAOLA' AND nvani BETWEEN 1 AND 10 OR' at line 1

    come vedete legge la variabile che sarebbe apaprtamenti pero mi restituisce questo errore.

    di sicuro l'erore e nella query.

    grazie


  • User Attivo

    Fai un echo di tutta la query e vedi cosa c'è scritto, vedrai che ti balza subito all'occhio l'errore.


  • User Attivo

    ma fare come ti ho detto io? e ti ho già ridetto USA LE PARENTESI 🙂


  • Super User

    HO fatto esattamente coem suugerito cioe :

    "SELECT *
    FROM ". $tabella ."
    WHERE categoria = ". $contratto ." AND citta = ". $cit ." AND ". $nvani ." BETWEEN ". $nvani1 ." AND ". $nvani2 ."
    ORDER BY ID DESC"

    ricevo qeusto errore :

    You have an error in your SQL syntax near 'BETWEEN 1 AND 14 ORDER BY ID DESC' at line 3

    alla linea 3 del codice ce questo :

    if (!function_exists("GetSQLValueString")) {
    function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
    {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

    $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

    e un codice creato da dreamweaver perche ho usato i comportamenti server di dreamweaver.

    sapreste spiegarmi dove sbaglio?( a parte il fatto che so di dover abbandonare dmw e scrivere codice da me non farlo scrivere al programma) :=)
    grazie