Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Wyszukiwarka kilku wyrazów
Forum PHP.pl > Forum > Przedszkole
Matado
Piszę klasę wyszukiwarki. Jak na razie są to zalążki w sumie, bo klasa wyszukuje w bazie tylko pojedyncze słowo lub dokładne zdanie np. "przykład przykład", ale kiedy napiszę samo słowo przykład to nic nie wyświetla.
Chciałbym ją rozszerzyć tak żeby wyszukiwała kilka wyrazów np. wpisuję słowo "coś" do wyszukiwarki, a w bazie danych jest zdanie "coś takiego" to żeby wyświetliło ten wiersz "coś takiego". Jakiej funkcji trzeba użyć lub co trzeba zrobić, żeby stworzyć coś takiego?

  1. <?php
  2. class search
  3. {
  4.    public $result;
  5.    private $pdo;
  6.    
  7.    public function __construct()
  8.    {
  9.        $this-> pdo= new PDO ('mysql:host=localhost;dbname=trial','root' , '' );
  10.    }
  11.    
  12.    public function seek()
  13.    {
  14.        $stmt= $this-> pdo-> prepare ('SELECT keywords FROM search WHERE keywords=:keywords');
  15.        $stmt-> bindValue (':keywords', $_POST['keywords'], PDO::PARAM_STR);
  16.        $stmt-> execute();
  17.      
  18.        while ($row= $stmt-> fetch())
  19.        {
  20.            $this-> result= $row['keywords'];
  21.        }
  22.        $stmt-> closeCursor();
  23.    }
  24.    
  25.    public function display()
  26.    {
  27.        return $this-> result;
  28.    }
  29. }
  30. ?>
Fifi209
W mysql masz przecież funkcję LIKE
Matado
Ok, jak skonstruować zapytanie żeby wyszukiwało tak jak wspomniałem LIKE '%?' ?
Fifi209
  1. SELECT * FROM `tabela` WHERE `text` LIKE ="%szukany tekst%"
piotrooo89
dla bardziej zaawansowanej funkcjonalności polecam FULL TEXT SEARCH.
miccom
Jak już kiedyś słyszałem like zabija bazę jeśli masz dużo rekordów i wpisów do przeszukania.

Moja wyszukiwarka działa na takim kodzie- i o dziwo jest to rewolucja!
Im więcej wyszukiwanych fraz się pojawi i tekstu do przeszukania, tym trafniejsze wyniki się pokażą! Ponoć baza danych segreguje słowa w porządku poprawności,a le jak... nie wiem. U mnie działa prawie jak google smile.gif

Oto kod:
  1. <?php
  2. ....
  3. $frazy     = $_POST['frazy'];//do skryptu dostarczasz wyszukiwane frazy po przecinkach.
  4. $zapytanie1 = "SELECT pola_z_bazy FROM tablica WHERE match(pola_do_przeszukania) against('$frazy' IN BOOLEAN MODE) ORDER BY data DESC";
  5.  $wykonaj = mysql_query($zapytanie1) or exit(mysql_error());
  6. while($wiersz = mysql_fetch_array($wykonaj))
  7. {
  8. $tytul   = $wiersz['tytul'];
  9. $ident      = $wiersz['id'];
  10. $region  = $wiersz['zasieg'];
  11.  echo "<a href='szczegoly.php?ide=$ident''style='text-decoration: none'>$tytul</a>($region)</center><br />";
  12. }...
  13. ?>
Matado
Coś jest nie tak. Mam zapytanie, które ma wyświetlać wszystko co zaczyna się od y, ale jak wpisuję jakieś słowo do formularza to nie wyświetla go, tylko pierwsze z bazy.
  1. <?php
  2. $stmt= $this-> pdo-> prepare ("SELECT keywords FROM search WHERE keywords=:keywords LIKE '%y' ");
  3. ?>
piotrooo89
  1. <?php
  2. $stmt= $this-> pdo-> prepare ("SELECT keywords FROM search WHERE keywords LIKE 'y%' ");
  3. ?>


a może tak?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.