• User Attivo

    query filtrata da campo di ricerca

    Ciao, ragazzi.

    Ho una pagina che richiama una lista di articoli da una tabella.
    Vorrei poter "filtrare" i dati ottenuti mediante l'inserimento di testo in un input box.

    In sintesi, quando un utente scrive "scheda" sulla casella di "ricerca" e clicca sul pulsante-filtro, i dati restituiti dalla query devono essere solo quelli che contengono "scheda".

    Ho provato, inserendo nella query SELECT anche LIKE, ma non sembra funzionare.
    Credo di dover fare in modo che la pagina venga ricaricata ma mantenendo il valore inserito nella input box. Mi sapete indicare come fare?

    Se volete, posso darvi il link, affinchè vediate praticamente cosa debbo fare.

    grazie 🙂


  • Super User

    Ciao kru,
    se ho ben capito,per quello che vuoi fare tu servirebbe l'uso ajax.
    Potresti comunque provare una soluzione alternativa,che sarebbe quella di creare un campo hidden contenente il valore del campo della casella di ricerca,oppure potresti far uso delle sessioni. 🙂
    Comunque per un migliore supporto sarebbe bene postare lo script 😉
    ciao!


  • User Attivo

    Ciao, probid, e grazie per aver risposto.

    Il codice.... posso postarti il codice della query, ma altro non ce nè, che sia legato all'argomento:

    
    $query = "SELECT id,titolo,mercurl,data,descrizione,annullato,in_evidenza FROM mercatino WHERE titolo LIKE '%$chiave%' AND flag = '1' AND in_evidenza ='0' order by data DESC  LIMIT $limit,$results_4_page";
           $result=mysql_query($query, $db); 
           while ($row = mysql_fetch_array($result)) {
           ?>
     
    
    

    Come vedi, ho inserito un array $chiave, che è il contenuto della textbox, "riempita" dall'utente, che è:

    
    <tr>
              <td><div align="center">
                      <INPUT NAME="chiave" TYPE="text" ID="chiave" value="<? echo $chiave; ?>" size="15">
                    </div></td>
              <td><div align="center"><B><input type="button" value="Cerca" onClick="window.location=()"></B> </div></td>
            </tr>
     
    
    

    Spero basti.... tieni conto anche che non sono certo un programmatore esperto 😉


  • User

    Prova a modificare questo, se ho ben capito il tuo problema dovrebbe andare (permette anche più parole in input):

    Pagina in cui digitare:

    <form name="cerca" action="cerca.php" method="post">

    <table width="100%">
    <tr>
    <td valign="top">&nbsp &nbsp Cerca: &nbsp &nbsp </td> <td valign="top"><input type="text" name="cerca" size="40">
    <small><br>
    </td>
    <td colspan="2" valign="top"><input type="submit" value="Cerca"><br></td>
    </tr>
    </table>
    </form>

    Mentre la pagina della query:

    $parolecercate = explode (" ", $cerca);
    $query = "";
    reset ($parolecercate);
    while (list(,$parola) = each ($parolecercate))
    {
    $parola = trim($parola);
    if ($parola != "")
    $query .= "nome_campo LIKE '%$parola%' OR ";
    }
    $query .= "0";

    $query = "select * from tabella where " .$query;
    $risultato = mysql_query($query)
    or die (mysql_error());

    Prova e fammi sapere


  • User Attivo

    Ma questo vale anche se la pagia è unica? perchè io ho sia la casella in cui digitare il testo da cercare, sia la query sulla stessa pagina.


  • User

    @kru said:

    Ma questo vale anche se la pagia è unica? perchè io ho sia la casella in cui digitare il testo da cercare, sia la query sulla stessa pagina.

    Certo, devi però dare 2 output differenti:

    if(isset($_POST['cerca']))
    {
    esegui query e tutto quello che vuoi dopo che si è cercato
    }
    else
    {
    mostra form di ricerca e tutto quello che vuoi se non si è ancora cercato
    }


  • User Attivo

    Perfettamente funzionante 😉

    Grazie a tutti 🙂

    :ciauz: