Visualizzazione risultati 1 fino 9 di 9

Discussione: Motore di ricerca con campo unico per più parole

  1. #1
    Guest

    Question Motore di ricerca con campo unico per più parole

    Buongiorno a tutti,
    ho una pagina di ricerca composta da un'unico campo-testo per l'inserimento di più parole chiave... Vi riportò il codice ridotto e senza la grafica, ovviamente:

    cerca.php

    Codice HTML:
    <form action="cerca_seg_mobile.php?q=" method="get">
    <input name="q" type="text" value="">
    <input id="submit" type="submit" value="CERCA">
    </form>
    le chiavi di ricerca le passo in modalità GET alla pagina "risultati.php", che preleva le chiavi dalla URL ed inoltre mostra come titolo della pagina le chiavi inserite:

    Codice PHP:
    // prelevo le chiavi dalla URL e le esplodo per dividere le varie parole
    <?php
    $qry
    = $_GET['q'];
    $chiavi = explode(" ", $qry);
    ?>

    // visualizzo correttamente le parole ricercate
    <h2>RISULTATI RICERCA PER [ <?php echo $qry; ?> ]</h2>

    <table>
    <tr><th>Campo A</th></tr>
    <tr><th>Campo B</th></tr>
    <tr><th>Campo C</th></tr>

    //connessione al db inclusa
    <?php
    require('inc/config.php');

    //conto i record e preparo l'impaginazione (perfettamente funzionante in un'altra pagina dove estraggo direttamente tutta la tabella)
    $count = mysql_query("SELECT COUNT(id) FROM tabella WHERE campoA LIKE '%$chiavi%' OR campoB LIKE '%$chiavi%' OR campoC LIKE '%$chiavi%'");
    $res_count = mysql_fetch_row($count);
    $tot_records = $res_count[0];
    $per_page = 15;
    $tot_pages = ceil($tot_records / $per_page);
    $current_page = (!$_GET['pag']) ? 1 : (int)$_GET['pag'];
    $primo = ($current_page - 1) * $per_page;

    //visualizzo risultati ricerca
    $query_limit = mysql_query("SELECT id, campoA, campoB, campoC FROM tabella WHERE campoA LIKE '%$chiavi%' OR campoB LIKE '%$chiavi%' OR campoC LIKE '%$chiavi%' ORDER BY id DESC LIMIT $primo, $per_page");
    while(
    $results = mysql_fetch_array($query_limit)) {
    echo
    "</tr>\n";
    echo
    "<td>" . $results['campoA'] . "</td>\n";
    echo
    "<td>" . $results['campoB'] . "</td>\n";
    echo
    "<td>" . $results['campoC'] . "</td>\n";
    echo
    "</tr>\n";
    }

    //creo la paginazione con i vari link alle pagine
    $paginazione = "[";
    for(
    $i = 1; $i <= $tot_pages; $i++) {
    if(
    $i == $current_page) {
    $paginazione .= $i . " ";
    } else {
    $paginazione .= "<a href=\"?q=$qry&pag=$i\" title=\"Vai alla pagina $i\">$i</a> ";
    }
    }
    $paginazione .= "]";

    mysql_close();
    ?>
    </table>

    //visualizzo i vari link alle pagine
    <div><?php echo $paginazione; ?></div>
    Purtroppo PHP non mi fornisce nessun errore, ma la tabella è vuota (si vedono solo le intestazioni) "Campo A" "Campo B" "Campo C", e ovviamente la paginazione mostra solamente "[ ]" come se avesse trovato zero record corrispondenti.

    Chi di voi può aiutarmi?

    Grazie,
    Simone
    Ultima modifica di radioinmontagna : 19-11-2011 alle ore 13.57.43

  2. #2
    Guest

    Predefinito

    Modifica il TAG del form.
    Codice HTML:
    <form action="cerca_seg_mobile.php" method="get">
    Ciao!

  3. #3
    Guest

    Predefinito

    Citazione Originalmente inviato da radiodelmomento Visualizza messaggio
    Modifica il TAG del form.
    Codice HTML:
    <form action="cerca_seg_mobile.php" method="get">
    Ciao!
    no no, errore mio che ho lasciato il nome reale del file che ho sul server...

    sostituisci li con "risultati.php" quel "?q=" ci deve essere se passo i risultati in GET... ad esempio "?q=parola1+parola2"...

  4. #4
    Guest

    Predefinito

    Io quando passo dei dati in GET non lo metto: pensa a tutto il form.
    Ciao!

  5. #5
    Guest

    Predefinito

    Niente da fare... Non va!

    Ho fatto una prova... Ho provato ad eliminare la funzione explode() di PHP... e il problema è quello! Dopo averla tolta ho provato a cercare una sola parola, e il tutto funziona... Ovviamente non va bene a me, in quanto devo inserire più di una parola.

    Sicuramente non mi funziona explode()... Non mi separa in qualche modo le varie parole inserite, e pertanto restituisce 0 risultati (tabella vuota).

    Help Meeeeeeeeeeeeeeeeeeeeee, please!

  6. #6
    Guest

    Predefinito

    Gli UP non sono permessi.
    Mi linki la pagina per favore?

  7. #7
    Guest

    Predefinito

    Citazione Originalmente inviato da radiodelmomento Visualizza messaggio
    Gli UP non sono permessi.
    Mi linki la pagina per favore?
    Chiedo innanzitutto scusa per l'UP (non si ripeterà più, ovviamente)...

    Per quanto riguarda la pagina, non posso indicartela in quanto è protetta da Login in quanto i dati visualizzati sono dati sensibili utilizzati per le attività operative/identificazione via radio di questo progetto --> http://www.radioinmontagna.it/

    Il codice comunque è lo stesso identico di quello che ho riportato sopra (ma ovviamente cambiano tabelle e campi)...

  8. #8
    Guest

    Predefinito

    Prova a stampare quello che ottieni dal GET e poi dall'explode.
    Codice PHP:
    <?php
    $qry
    = $_GET['q'];
    echo
    $qry."<br />";
    $chiavi = explode(" ", $qry);
    echo
    $chiavi[0].",".$chiavi[1];
    ?>
    Vedi che stampa.

  9. #9
    Guest

    Predefinito

    Citazione Originalmente inviato da radiodelmomento Visualizza messaggio
    Prova a stampare quello che ottieni dal GET e poi dall'explode.
    Codice PHP:
    <?php
    $qry
    = $_GET['q'];
    echo
    $qry."<br />";
    $chiavi = explode(" ", $qry);
    echo
    $chiavi[0].",".$chiavi[1];
    ?>
    Vedi che stampa.
    In questo modo funziona correttamente e stampa:

    Codice:
    parolaA parolaB
    parolaA,parolaB
    ... forse è errata la quey SQL con il metodo LIKE ???

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •