Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> wyszukiwarka problem polskich znaków
informatycy
post
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 22.02.2006
Skąd: Mysłowice

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


Witam
Problem jest następujący brak polskich znaków w wyniku wyszukiwania. kodowanie strony i skryptu: UTF-8
Dane wprowadzone do bazy danych są w utf-8, system porównań bazy danych ustawiony na UTF-8, połączenie z baza danych zostało ustawione aby dane pobierał w utf-8:

  1. mysql_query("SET NAMES 'utf8'");
  2. mysql_query('SET CHARACTER_SET utf8_unicode_ci');


W całym skrypcie dane z bazy wyświetlane są poprawnie z polskimi znakami. Jedynie podczas wpisania do formularza szukanego słowa które zawiera polskie znaki zostaje zwrócony komunikat że słowo nie zostało znalezione, jednak skrypt wyszukuje słowo bez polskich znaków w bazie. polskie znaki są ignorowane np. wpisując do formularza słowo "żółty" skrypt przeszukuję tylko "ty" bez początkowych 3 polskich znaków.

Ma ktoś jakiś pomysł jak rozwiązać ten problem?

Szczegóły poniżej:

Mam prosty formularz wyszukiwania pojedynczych słów w bazie:

  1. <form action="$kay_site/lookup" method="get" id="frmSearch" name="frmSearch">
  2. <fieldset>
  3. <ol>
  4. <li>
  5. <label for="word">Szukaj Słowa: </label>
  6. <input id="word" type="text" value="" onfocus="tipFade();" name="word"/>
  7. <input id="submit" type="submit" value="Szukaj"/>
  8. </li>
  9. </ol>
  10. </fieldset>
  11. </form>



wynik zwracany jest za pomocą następującego kodu:

  1. <div id="lookup_results">
  2. <?php echo get_lookup_results($word); ?>
  3. </div>


który odwołuje się do funkcji: get_lookup_results:

  1. function get_lookup_results($word) {
  2. $id_url = get_word_info($word);
  3. if ($id_url) {
  4. if ($id_url['url'] == 'none') {
  5. $html = '<p>Znalazłem! To słowo jest wolne i możesz je zarejestrować dla siebie. <a href="'.KAY_SITE.'/buy/'.$id_url['id'].'" class="buyitnow">Aktywuj to Słowo!</a></p>';
  6. $html .= '<p>&raquo; <span class="available"><a href="'.KAY_SITE.'/buy/'.$id_url['id'].'">'.$word.'</a></span></p>';
  7. } else {
  8. $html = '<p>Niestety, słowo którego szukasz zostało już aktywowane przez innego użytkownika.!</p>';
  9. /* $html .= '<p>Jesteś właścicielem tego słowa? ';*/
  10. /* $html .= 'Jeżeli tak możesz <a href="'.KAY_SITE.'/feature/'.$id_url['id'].'" class="buyitnow">wyróżnić to słowo</a> na naszej <b>stronie głównej</b>!'; */
  11.  
  12. $html .= '</p>';
  13. $html .= '<p><ul class="home-words"><li><a class="active-link" href="'.$id_url['url'].'"><span >'.$word.'</span></a></p></li></ul><br /><br />';
  14.  
  15.  
  16. }
  17. $html .= '<p>Możesz również rozważyć aktywację podobnych<span class="available"> dostępnych</span> słów, kliknij aby kontynować.</p>';
  18. $html .= get_alike($word);
  19.  
  20. return $html;
  21. } else {
  22. $html = '<p>Niestety, słowo którego poszukujesz nie znajduje się w naszej bazie! Aby dodać słowo napisz do naszego administratora lub sam dodaj słowo.</p>';
  23. $html .= '<p><h2>Kliknij aby dodać słowo <span >'.$word.'</span> do bazy danych</h2></p>';
  24. $html .= '<p>Możesz również zarejestrowac podobne słowo?</p>';
  25. $html .= get_alike($word);
  26. return $html;
  27. }
  28. }


funkcje powiązane:

  1. function get_word_info($word) {
  2. $sql = "SELECT `url`, `words`.`id` FROM `words`, `sold` WHERE `sold`.`sold_id` = `words`.`id` AND `words`.`word` = '$word'";
  3. $results = mysql_query($sql);
  4. if (mysql_num_rows($results)) {
  5. $row = mysql_fetch_array($results);
  6. return array('url' => $row['url'], 'id' => $row['id']);
  7. } else {
  8. $sql = "SELECT * FROM `words` WHERE `word` = '$word' ";
  9. $results = mysql_query($sql);
  10. if (mysql_num_rows($results)) {
  11. $row = mysql_fetch_array($results);
  12. return array('url' => $row['url'], 'id' => $row['id']);
  13. }
  14. }
  15.  
  16. return false;
  17. }
  18.  
  19. function get_alike($word) {
  20. $html = '<ul class="alike_words">';
  21. $sql = "SELECT * FROM `words` WHERE (SELECT `word` LIKE '%$word%') AND (`url` = 'none') AND (`word` != '$word') LIMIT 0, 20";
  22. $results = mysql_query($sql);
  23. if (mysql_num_rows($results)) {
  24. while ($row = mysql_fetch_array($results)) {
  25. $html .= '<li><a href="'.KAY_SITE.'/buy/'.$row['id'].'" title="Kliknij aby kupić: '.$row['word'].'">'.$row['word'].'</a></li>';
  26. }
  27. } else {
  28. $html .= '<li>Niestety, nie znaleziono podobnych słów !)</li>';
  29. }
  30. $html .= '</ul>';
  31. return $html;
  32. }


z góry dzięki za pomoc wszystkim dobrym ludziom (IMG:style_emoticons/default/smile.gif)

czy nikt nie ma pomysłu co morze być przyczyną mojego problemu??

pozdrawiam,
Marcin
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
informatycy
post
Post #2





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 22.02.2006
Skąd: Mysłowice

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


witam,

z mojego php.ini wynika że funkcja jest włączona:

mbstring

Multibyte Support enabled
Multibyte string engine libmbfl
Multibyte (japanese) regex support enabled
Multibyte regex (oniguruma) version 4.4.4
Multibyte regex (oniguruma) backtrack check On

mbstring extension makes use of "streamable kanji code filter and converter", which is distributed under the GNU Lesser General Public License version 2.1.

Directive Local Value Master Value
mbstring.detect_order no value no value
mbstring.encoding_translation Off Off
mbstring.func_overload 0 0
mbstring.http_input pass pass
mbstring.http_output pass pass
mbstring.internal_encoding no value no value
mbstring.language neutral neutral
mbstring.strict_detection Off Off
mbstring.substitute_character no value no value


Włączyłem raportowanie błędów i wyświetla następujący błąd:

Notice: Undefined variable: word in /home/wojdylam/public_html/lookup.php on line 22


Go to the top of the page
+Quote Post

Posty w temacie


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: 13.10.2025 - 09:58