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

Posty w temacie


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 Aktualny czas: 24.08.2025 - 00:02