• User Newbie

    Query ignora operatore Like

    Ciao a tutti,
    da non molto lavoro con php e mysql
    Mi sto cimentando per la prima volta nella creazione di un forum molto semplice per un sito web.

    Mi trovavo a voler inserire una "ricerca" per l'utente sui titoli, e successivamente sui contenuti di ogni thead, ma al momento della richiesta pare che all'esecuzion della Query, Mysql ignori l'attributo LIKE.

    Vi posto la query:

    $RicercaTitolo = @mysql_query("SELECT * FROM forum_lite_topics WHERE titolo LIKE '%$_POST[Ricerca]%' ");
    

    Ovvimanete $_POST[Ricerca] è il parametro di testo inserito dall'utente in un form di una pagina precedente.

    Ho controllato e il testo di $_POST[Ricerca] è corretto, infatti se lo stampo a video, mi appare il testo perfetto, ma nell'elencazione dei Thead su cui ho fatto ricerca, viene ignorato il parametro, infatti mi inserisce anche thead che nel testo non contengono la sequenza alfanumerica che nella ricerca dovrebbe fare da "filtro".

    Se qualcuno potesse aiutarmi.
    Grazie mille, e a Presto!


  • Moderatore

    Ciao,
    io nella tua query non ci vedo nulla di sbagliato.
    Prova a fare queste due prove ma considera che sto andando "ad occhio".

    1. Fai la query forzando il parametro. Se hai scelto di ricercare %ciao% togli la variabile e passagliela tu direttamente. Fatto questo controlla se i risultati sono corretti. Se sì allora quasi sicuramente il problema è quello del punto 2.
    2. Potrebbe non essere un problema di MySql ma di Php. Prova ad usare questa riga (sostanzialmente uguale alla tua):
     
    $RicercaTitolo = @mysql_query("SELECT * FROM forum_lite_topics WHERE titolo LIKE '" . %$_POST[Ricerca]% . "' ");
    
    

    In bocca al lupo
    Shad :ciauz:


  • User Attivo

    Togli la @ davanti a mysql_query() ed aggiungi questo codice dopo la riga che hai postato:

    [php]if ($RicercaTitolo === false) {
    die('MySQL Error: ' . mysql_error());
    }[/php]


  • User Newbie

    Grazie, ho provato ambdue le soluzioni ma il problema permane..
    a questo punto non vorrei fosse un errore mio nell parte seguente del codice.

    $RicercaTitolo = mysql_query("SELECT * FROM forum_lite_topics WHERE titolo LIKE '%" . $_POST[Ricerca] . "%' ");
    if ($RicercaTitolo === false) {
      die('MySQL Error: ' . mysql_error());
    }  
    

    A seguito eseguo questo codice per stampare le risposte dentro una tabella

    while($Risultati= @mysql_fetch_array($RicercaTitolo))
    {
      echo "<TR>
              <TD align=middle width=90>
                <P align=center>
                  <IMG height=75 src='".$Risultati[img]."' width=100 border=0>
                </P>
              </TD>
              <TD>
              <P align=left>
                <B>
                  <FONT face=Verdana size=2><A style='TEXT-DECORATION: none' 
              href='thread.php?f=".$Risultati[forum_id]."&amp;t=".$Risultati[id]."'>".$Risultati[titolo]."</A> 
                    <BR>
                  </FONT>
                </B>
                  <FONT face=Verdana size=1>".$Risultati[autore]." -
                    <I>".$Risultati[data]."
                    </I>
                  </FONT>
              </P>
              </TD>
             [...]
              ";
    }
    

    ci sbatto la testa da ieri, non riesco a capire che ci sia di sbagliato.. :arrabbiato:

    Grazie, a voi che avete già risposto..
    Matteo