Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP/MYSQL]Wyszukiwarka, przez fulltext
Tubis
post
Post #1





Grupa: Zarejestrowani
Postów: 44
Pomógł: 2
Dołączył: 27.03.2007
Skąd: Sufczyn

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


No więc. Mam tabele z newsami, tam tresc_dloga i temat są fulltext. W wyszukiwarce mam takie zapytanie:

  1. "SELECT * FROM news WHERE MATCH (tresc_dloga, temat) AGAINST ('*$szukaj*' IN BOOLEAN MODE)"


zmienna szukaj jest pobierana z formularza. Wszystko ładnie chodzi, ale do czasu. Do czasu, gdy trzeba wyszukać wyraz z poskimi znakami.Wtedy nie znajduje nic, mimo iż w tresc_dluga jest ten wyraz. Całą stronę mam opartą na utf8, w bazie też jest utf. Np. komentarze dodawane przez formularz ładnie się wyświetlają z polskimi znakami. Co mam zrobić, żeby wyszukiwało wyrazy z polskimi znakami?

Ten post edytował Tubis 5.05.2007, 10:11:08
Go to the top of the page
+Quote Post
Daimos
post
Post #2





Grupa: Zarejestrowani
Postów: 1 319
Pomógł: 118
Dołączył: 26.11.2003
Skąd: Lublin

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


polskie znaki i robisz strone w kodowaniu utf? zrob iso iso iso iso iso iso....
ps. długie, a nie dłógie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
Tubis
post
Post #3





Grupa: Zarejestrowani
Postów: 44
Pomógł: 2
Dołączył: 27.03.2007
Skąd: Sufczyn

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


No ok. Ale jak teraz przekonwertować wszystko z bazy na ISO?

Dodam jeszce, że zmienną przekazuje właściwie, bo później ją wyświetlam i wyświetla się z polskim znakami

Ten post edytował Tubis 5.05.2007, 10:19:55
Go to the top of the page
+Quote Post
Kicok
post
Post #4





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


Cytat
polskie znaki i robisz strone w kodowaniu utf? zrob iso iso iso iso iso iso....


W UTF-8 też są polskie znaki ;]


A co do problemu, to pomóc może wykonanie tego zapytania zaraz po nawiązaniu połączenia z bazą danych:
  1. SET names 'utf8'
Go to the top of the page
+Quote Post
Tubis
post
Post #5





Grupa: Zarejestrowani
Postów: 44
Pomógł: 2
Dołączył: 27.03.2007
Skąd: Sufczyn

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


Nietety nie zadziałało. Ale mam pewien trop. Gdy w wyszukiwarkę wpiszę zamiast znaku polskiego jego kod UTF, to znajduje. Ktoś wie co trzeba zrobić?

Ten post edytował Tubis 5.05.2007, 14:45:11
Go to the top of the page
+Quote Post
Kicok
post
Post #6





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


Jeśli strona na prawdę jest w UTF-8 (takie kodowanie ustawione jest w tagu <meta> lub wysyłane przez nagłówek Contet-Type) to dane z formularza od razu powinny być w UTF-8. Jeśli jednak nie są możesz zastosować funkcję iconv" title="Zobacz w manualu PHP" target="_manual lub mb_convert_encoding" title="Zobacz w manualu PHP" target="_manual
Go to the top of the page
+Quote Post
Tubis
post
Post #7





Grupa: Zarejestrowani
Postów: 44
Pomógł: 2
Dołączył: 27.03.2007
Skąd: Sufczyn

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


Nie zadziałało. Ale poradziłem sobie w inny sposób. Przerobiłem sobie wszystko na iso i latin. I teraz śmiga. Ktoś ma jakiś pomysł jak w znalezionej treści podświetlić wyszukiwane wyrażenie? Wiem, że mod_rewrite, ale wtedy wyszukaną frazę w treści zamieni na wpisany w formularz wyraz. I np. tekst zaczynający się na dużą literę zamieni na małą literę. Any ideas??

Ten post edytował Tubis 5.05.2007, 15:26:05
Go to the top of the page
+Quote Post
pbnan
post
Post #8





Grupa: Zarejestrowani
Postów: 174
Pomógł: 0
Dołączył: 27.03.2007
Skąd: Osiek almost City ;-D

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


Highlighter do wyszukiwanych treści na stronie znalazłem tutaj:
http://www.davelemen.com/highlighter.js
Go to the top of the page
+Quote Post
Tubis
post
Post #9





Grupa: Zarejestrowani
Postów: 44
Pomógł: 2
Dołączył: 27.03.2007
Skąd: Sufczyn

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


Dzięki, ale ja z js jestem noga i kompletnie nie wiem jak zrobić, żeby mi podświetlało to co chce. W zmiennej $szukaj mam zawarte zapytanie. Pomożesz?
Go to the top of the page
+Quote Post
DjKermit
post
Post #10





Grupa: Zarejestrowani
Postów: 82
Pomógł: 0
Dołączył: 18.06.2005

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


  1. <?php
  2. $znaleziona_tresc = str_replace($szukaj, '<span class="highlight">'. $szukaj .'</span>', $znaleziona_tresc);
  3. ?>

i odpowiedni styl do tego w css'ie
Go to the top of the page
+Quote Post
pbnan
post
Post #11





Grupa: Zarejestrowani
Postów: 174
Pomógł: 0
Dołączył: 27.03.2007
Skąd: Osiek almost City ;-D

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


Cytat(Tubis @ 5.05.2007, 18:07:47 ) *
Dzięki, ale ja z js jestem noga i kompletnie nie wiem jak zrobić, żeby mi podświetlało to co chce. W zmiennej $szukaj mam zawarte zapytanie. Pomożesz?

http://www.davelemen.com/archives/2004/10/...ighlighter.html
Cytat
Here's how to implement it:
1. (Optional) Change the items in the Configuration Section that you want to change.
There are examples to show you how.
2. Put this file on your web server.
3. Add a script tag to your web page, like this:
<script type="text/javascript" src="/highlighter.js"></script>
4. Add an "onload" attribute to the body tag, like this:
<body onload="highlighter.highlight()">

Mam nadzieję, że z angielskiego nie jesteś noga (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

@DjKermit: tak, tylko Twoje wyszukuje jeszcze pomiędzy tagami, a to jest niedozwolone...

Ten post edytował pbnan 5.05.2007, 17:33:59
Go to the top of the page
+Quote Post
DjKermit
post
Post #12





Grupa: Zarejestrowani
Postów: 82
Pomógł: 0
Dołączył: 18.06.2005

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


Cytat(pbnan @ 5.05.2007, 18:33:08 ) *
@DjKermit: tak, tylko Twoje wyszukuje jeszcze pomiędzy tagami, a to jest niedozwolone...


Hmmm, ta funkcja nic nie wyszukuje tylko zamienia i hmmm^2 niedozwolone (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ? prawem ścigane czy co (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
Tubis
post
Post #13





Grupa: Zarejestrowani
Postów: 44
Pomógł: 2
Dołączył: 27.03.2007
Skąd: Sufczyn

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


Ok zrozumiałem.
<script type="text/javascript" src="/highlighter.js"></script> - wstawiłem to w head

<body onload="highlighter.highlight()"> - to dałem zamiast <body>

I nicsię nie dzieje. Co jeszcze ma zrobić?
Go to the top of the page
+Quote Post
pbnan
post
Post #14





Grupa: Zarejestrowani
Postów: 174
Pomógł: 0
Dołączył: 27.03.2007
Skąd: Osiek almost City ;-D

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


Cytat(Tubis @ 5.05.2007, 18:54:20 ) *
Ok zrozumiałem.
<script type="text/javascript" src="/highlighter.js"></script> - wstawiłem to w head

<body onload="highlighter.highlight()"> - to dałem zamiast <body>

I nicsię nie dzieje. Co jeszcze ma zrobić?

Jeszcze konfiguracja
Cytat
// ---------------------------------------------------------------------------
// Configuration Section:
// ---------------------------------------------------------------------------

// Uncomment the following line to hide the legend.
// highlighter.legend = false;

// List the URL parameters that contain search terms.
// Defaults: q, as_q, as_epq, as_oq, query, search
// Example:
// highlighter.parameters = 'q, as_q, as_epq, as_oq, query, search';

// Use addStyle(color, background, fontWeight) to change the highlighting style.
// This is optional. A set of 10 default styles will be used automatically.
// Example:
// highlighter.addStyle('#000', '#FF4', 'bold'); // bold, black text on yellow background.

(Zresztą wszystko jest na stronie, którą podałem.)

Oraz sprawdzenie, czy skrypt działa:
  1. <form method="get">
  2. <input type="text" name="search" value="fraza" />
  3. <input type="submit" value="szukaj" />
  4. </form>


@DjKermit: ciekawe, co by się stało, gdy jako treść masz "<b>tresc</b>", a user będzie wyszukiwał frazy "b"...

Ten post edytował pbnan 5.05.2007, 18:07:56
Go to the top of the page
+Quote Post
Tubis
post
Post #15





Grupa: Zarejestrowani
Postów: 44
Pomógł: 2
Dołączył: 27.03.2007
Skąd: Sufczyn

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


Dzięki wielkie, poradziłem sobie. Tylko jeszcze jedno. Ten skrypt koloruje mi też tak, gdzie nie chce, a więc np. w menu które jest includowane. Jak wyłączyć w danym obszarze skrypt??


EDIT: Mam jeszcze jedno pytanie, ponieważ ten skrypt dziłą jakgdyby o jedno wyszukiwanie za późno. Przy pierwszym wyszukiwaniu nie podkreśla nic, przy drugim to co było wyszukiwane w pierwszym, a przy trzecim to co w drugim. Wie ktoś co może buć tego przyczyną? Może trzeba jakoś przeładować ten skrypt, albo coś?

Ten post edytował Tubis 6.05.2007, 08:14:14
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 24.08.2025 - 22:00