Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Wyszukiwarka kilku wyrazów
Matado
post 6.05.2009, 16:58:24
Post #1





Grupa: Zarejestrowani
Postów: 67
Pomógł: 0
Dołączył: 9.12.2008

Ostrzeżenie: (0%)
-----


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. ?>


Ten post edytował Matado 6.05.2009, 16:59:53
Go to the top of the page
+Quote Post
Fifi209
post 6.05.2009, 17:12:16
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


W mysql masz przecież funkcję LIKE


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
Matado
post 6.05.2009, 17:26:35
Post #3





Grupa: Zarejestrowani
Postów: 67
Pomógł: 0
Dołączył: 9.12.2008

Ostrzeżenie: (0%)
-----


Ok, jak skonstruować zapytanie żeby wyszukiwało tak jak wspomniałem LIKE '%?' ?
Go to the top of the page
+Quote Post
Fifi209
post 6.05.2009, 17:57:16
Post #4





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


  1. SELECT * FROM `tabela` WHERE `text` LIKE ="%szukany tekst%"


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
piotrooo89
post 6.05.2009, 17:58:19
Post #5


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




dla bardziej zaawansowanej funkcjonalności polecam FULL TEXT SEARCH.


--------------------
Go to the top of the page
+Quote Post
miccom
post 6.05.2009, 18:05:42
Post #6





Grupa: Zarejestrowani
Postów: 493
Pomógł: 8
Dołączył: 7.07.2007
Skąd: Tychy

Ostrzeżenie: (0%)
-----


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. ?>


Ten post edytował miccom 6.05.2009, 18:08:16


--------------------
Jeśli pomogłem- kliknij POMÓGŁ-przyda się ;)- jeśli piszę bzdury- pisz pod postami. Poprawię się.
PISZĘ POPRAWNIE PO POLSKU!
Go to the top of the page
+Quote Post
Matado
post 6.05.2009, 18:14:23
Post #7





Grupa: Zarejestrowani
Postów: 67
Pomógł: 0
Dołączył: 9.12.2008

Ostrzeżenie: (0%)
-----


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. ?>
Go to the top of the page
+Quote Post
piotrooo89
post 6.05.2009, 18:17:17
Post #8


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




  1. <?php
  2. $stmt= $this-> pdo-> prepare ("SELECT keywords FROM search WHERE keywords LIKE 'y%' ");
  3. ?>


a może tak?

Ten post edytował piotrooo89 6.05.2009, 18:17:32


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 12.06.2025 - 13:16