Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Wyszukiwanie
Forum PHP.pl > Forum > Przedszkole
-Dawid-
Witam
  1. $stmt = $pdo -> prepare('SELECT username, email, rlname, lastname, website, gg, skype, bio FROM `'.$prefix_mysql.users.'` WHERE
  2. `username` LIKE :slowo
  3. OR `email` LIKE :slowo
  4. OR `rlname` LIKE :slowo
  5. OR `lastname` LIKE :slowo
  6. OR `website` LIKE :slowo
  7. OR `gg` LIKE :slowo
  8. OR `skype` LIKE :slowo
  9. OR `bio` LIKE :slowo');
  10. $stmt -> bindValue(':slowo', '%'.$slowo.'%', PDO::PARAM_STR);
  11. $stmt -> execute();
  12. while($row2 = $stmt -> fetch()){
  13. $users[] = $row2;
  14. }
  15.  
  16. $stmt = $pdo -> prepare('SELECT tags, topic, contents, author_id FROM `'.$prefix_mysql.news.'` WHERE
  17. `tags` LIKE :slowo
  18. OR `topic` LIKE :slowo
  19. OR `contents` LIKE :slowo');
  20. $stmt -> bindValue(':slowo', '%'.$slowo.'%', PDO::PARAM_STR);
  21. $stmt -> execute();
  22. while($row2 = $stmt -> fetch()){
  23. $news[] = $row2;
  24. }


Wyszukiwarka teoretycznie działa tak jak została do tego napisana.

Pytanie brzmi:
Jak mogę wyświetlić treść tylko danej kolumny w której znalazł się wyszukiwany wyraz? I go podświetlić +/- dwóch zdań?

1. Jak rozpoznać gdzie mi coś znalazło i to uciąć tak jak w innych wyszukiwarkach?


Nie proszę o gotowca a o naprowadzenie mnie. smile.gif


Dziękuje i pozdrawiam!
markuz
Wyszukujesz pozycji szukanego słowa w tekście za pomocą strpos a potem wyświetlasz +- np. 10 znaków.
lub
Dzielisz tekst na wyrazy, szukasz szukanego słowa w tablicy wyrazów i wyświetlasz +- np. 5 słów. (explode, array_search).
-Dawid-
Witam,

No tak ale jeśli mam tyle kolumn to muszę powielić zmienne z tą funkcją x razy?
Bo to tylko dwie tabele a chciałbym dodać jeszcze z 5 conajmiej więc chce to zrobić od razu jak najlepiej a nie najbardziej mulący skrypt.
YourFrog
@Dawid
Zarejestruj się będzie ci łatwiej odpowiadać

@Topic
Wyszukiwarki tekstowe w aplikacjach nie są wcale rzeczą prostą. Rozwiązanie jakie dałeś powinno od razu polecieć do kosza na śmieci bo jest nie dość że nie wydajne to sprawia problemy takie jak np napisałeś. Oprzyj się o jakiś ciekawszy pomysł z internetu np. przechowywanie wyrazów w bazie danych i ich relacji z właściwymi tabelami.
-Dawid-
Witam,

Szukam i szukam i w google same wyłapuje odpowiedzi typu LIKE lub WHERE.. A tym nieda się odnieść chyba większego sukcesu?
Głównie chodzi mi o te wyłapywanie tekstu i podświetlanie +/- dwóch zdań z danej kolumny. Kiedyś coś takiego udało mi się osiągnąć ale strasznie naokoło.
-Dawid-
Witam,
przepraszam za double post.


Zrobiłem coś takiego:
  1. $stmt = $pdo -> prepare('SELECT tags, topic, contents, author_id FROM `'.$prefix_mysql.news.'` WHERE
  2. `tags` LIKE :slowo
  3. OR `topic` LIKE :slowo
  4. OR `contents` LIKE :slowo');
  5. $stmt -> bindValue(':slowo', '%'.$slowo.'%', PDO::PARAM_STR);
  6. $stmt -> execute();
  7. while($row2 = $stmt -> fetch()){
  8. $mystring = strip_tags($row2['contents']);
  9. $findme = $slowo;
  10.  
  11. $pos = strpos($mystring, $findme);
  12. if ($pos !== false) {
  13. if($pos <= $pokaz_wstecz){ $pos1 = 0; }else{
  14. $pos1 = $pos - $pokaz_wstecz;
  15. }
  16. $pos2 = $pos + $pokaz_dalej;
  17. $rest = substr($mystring, $pos1, $pos2);
  18. $zwroc = search_highlight($rest, $findme);
  19. } else {
  20. $zwroc = 1;
  21. }
  22. $news[] = array('contents' => $zwroc);
  23. }


Wiem że to nie jest doskonałe ale mniej więcej działa jak powinno. Lecz ma drugi minus. Muszę kod powielić x razy dla każdego pola w bazie osobno.
Wciąż szukam odpowiedniego rozwiązania.
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.