Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Ricerca filtrata in php...

    Salve,
    Allora devo fare un motore di ricerca interno al sito in php e mysql.

    Allora il punto è questo:

    Devo ricercare un stringa all'interno di un testo e non necessariamente le parole della stringa cercata devono essere in sequenza. Mi spiego:

    Allora io ho nel db il seguente testo in una riga del database:

    "Oggi è un bella giornata di sole poichè siamo in estate."

    Per trovare questo testo io nel motore di ricerca devo aver inserito:

    "oggi" - "bella" - "giornata sole estate" - "siamo in estate" ect.


    -----

    Se per esempio, in un'altra riga del db ho il testo:

    "Oggi piove perche' siamo in inverno."

    E cerco solo "Oggi"....... mi dovrà restituire tutte e due i testi; se invece cerco "Oggi inverno" mi darà solo la seconda riga..... invece se cerco "oggi estate".... solo la prima e così via.

    Praticamente la ricerca dovrebbe filtrare i risultati in base all'input.

    ****************
    Concettualmente sarei propenso ad operare così:

    Creo un array di elementi partendo dalla stringa inserita dall'untente per la ricerca:

    $array = explode(" ", $stringa_utente);

    ciclo for per cercare gli elementi attraverso una query sql (e qui penso di sbagliare qualcosa)

    for($i=0; $i<count($array); $i++){
    $key = $array[$i];
    SELECT * FROM database WHERE $parola LIKE "%$key%";
    }

    Fatto sta che in questo modo la ricerca non viene filtrata ma vengono restituiti tutti i testi in cui ci sono presenti le parole da cercare inserite...

    esempio: cerco "oggi inverno" mi restituisce entrambe le righe invece di stampare solo la seconda riga!!!

  2. #2

  3. #3
    Utente di HTML.it L'avatar di marco80
    Registrato dal
    May 2005
    Messaggi
    1,357
    spezzando la stringa dovresti creare un altra stringa per comporre l'array per ottenere una cosa tipo: where campo_testo like '%parola1%' and campo_testo like '%parola2%'....

    alla fine hai $like = 'where campo_testo like '%parola1%' and campo_testo like '%parola2%'....';

    e la concateni alla query.

    Non so quanto sia performante o se c'e' una soluzione migliore a livello di query stessa ma dovrebbe funzionare.
    La vita e' uno switch();

  4. #4
    $key è un'array, non dovrebbe funzionare "^_^ al limite puoi impostare un contatore di parole inserite, sinchè non è alla fine modifichi di conseguenza la query sql.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.