Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP/MYSQL]Wyszukiwarka
Forum PHP.pl > Forum > Przedszkole
Tubis
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?
Daimos
polskie znaki i robisz strone w kodowaniu utf? zrob iso iso iso iso iso iso....
ps. długie, a nie dłógie winksmiley.jpg
Tubis
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
Kicok
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'
Tubis
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ć?
Kicok
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
Tubis
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??
pbnan
Highlighter do wyszukiwanych treści na stronie znalazłem tutaj:
http://www.davelemen.com/highlighter.js
Tubis
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?
DjKermit
  1. <?php
  2. $znaleziona_tresc = str_replace($szukaj, '<span class="highlight">'. $szukaj .'</span>', $znaleziona_tresc);
  3. ?>

i odpowiedni styl do tego w css'ie
pbnan
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 smile.gif

@DjKermit: tak, tylko Twoje wyszukuje jeszcze pomiędzy tagami, a to jest niedozwolone...
DjKermit
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 questionmark.gifquestionmark.gif? prawem ścigane czy co questionmark.gif
Tubis
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ć?
pbnan
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"...
Tubis
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ś?
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.