Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: polskie znaki w suggest
Forum PHP.pl > Forum > XML, AJAX > AJAX
tomkoz
wiem wiem.. bylo już o polskich literach i js, ale za cholere nie działa żadne set UTF-8. Kody wyglądają tak:

index.html
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  2. <html lang="pl" dir="ltr">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  5.  
  6. <style type="text/css" media="screen">
  7. body {
  8. font: 11px arial;
  9. }
  10. .link {
  11. background-color: #FFFFFF;
  12. padding: 2px 6px 2px 6px;
  13.  
  14. }
  15. .podsw {
  16. background-color: #3366CC;
  17. padding: 2px 6px 2px 6px;
  18. }
  19. #wypisz {
  20. position: absolute;
  21. background-color: #FFFFFF;
  22. text-align: left;
  23. border: 1px solid #000000;
  24. }
  25. .male{
  26. color: #777777;
  27. }
  28. </style>
  29. <script type="text/javascript" language="JavaScript" charset=utf-8>
  30. function getXmlHttpRequestObject() {
  31. if (window.XMLHttpRequest) {
  32. return new XMLHttpRequest();
  33. } else if(window.ActiveXObject) {
  34. return new ActiveXObject("Microsoft.XMLHTTP");
  35. } else {
  36. alert("zmien przegladarke");
  37. }
  38. }
  39.  
  40. var obiekt = getXmlHttpRequestObject();
  41.  
  42. function podpowiedz() {
  43. if (obiekt.readyState == 4 || obiekt.readyState == 0) {
  44. var str = escape(document.getElementById('szukaj').value);
  45. obiekt.open("GET", 'sugest.php?search=' + str, true);
  46. obiekt.onreadystatechange = handleSearchSuggest;
  47. obiekt.send(null);
  48. }
  49. }
  50.  
  51. function handleSearchSuggest() {
  52. if (obiekt.readyState == 4) {
  53. var ss = document.getElementById('wypisz')
  54. ss.innerHTML = '';
  55. var str = obiekt.responseText.split("\n");
  56. for(i=0; i < str.length - 1; i++) {
  57. var wynik = '<div onmouseover="java script:podswietlony(this);" ';
  58. wynik += 'onmouseout="java script:niepodswietlony(this);" ';
  59. wynik += 'onclick="java script:zapal(this.innerHTML);" ';
  60. wynik += 'class="link">' + str[i] + '</div>';
  61. ss.innerHTML += wynik;
  62. }
  63. }
  64. }
  65.  
  66. function niepodswietlony(div_value) {
  67. div_value.className = 'link';
  68. }
  69.  
  70. function podswietlony(div_value) {
  71. div_value.className = 'podsw';
  72. }
  73.  
  74. function zapal(value) {
  75. document.getElementById('szukaj').value = value;
  76. document.getElementById('wypisz').innerHTML = '';
  77. }
  78. </script>
  79.  
  80. </head>
  81. <body>
  82. <div style="width: 500px;">
  83. <form>
  84. <input type="text" id="szukaj" name="szukaj" onkeyup="podpowiedz();" autocomplete="off" />
  85. <input type="submit" id="Wybierz" name="Wybierz" value="Wybierz" />
  86. <div id="wypisz"></div><br>
  87. </form>
  88. </div>
  89. </body>


sugest.php:
  1. <?php
  2. header("Expires: Mon, 26 Jul 1997 05:00:00 GMT" );
  3. header("Last-Modified: " . gmdate( "D, d M Y H:i:s" ) . "GMT" );
  4. header("Cache-Control: no-cache, must-revalidate" );
  5. header("Pragma: no-cache" );
  6. header("Content-Type: text/html; charset=utf-8");
  7.  
  8. db_connect() or die('blad polaczenia');
  9.  
  10. function db_connect($server = 'localhost', $username = 'login', $password = 'haslo', $database = 'nazwabazy', $link = 'db_link') {
  11. global $$link;
  12. $$link = mysql_connect($server, $username, $password);
  13. if ($$link) mysql_select_db($database);
  14. return $$link;
  15. }
  16.  
  17. function db_error($query, $errno, $error) {
  18. die('błąd:'.$errno . ' - ' . $query );
  19. }
  20.  
  21. function db_query($query, $link = 'db_link') {
  22. global $$link;
  23. $result = mysql_query($query, $$link) or db_error($query, mysql_errno(), mysql_error());
  24. return $result;
  25. }
  26.  
  27. function db_fetch_array($db_query) {
  28. return mysql_fetch_array($db_query, MYSQL_ASSOC);
  29. }
  30.  
  31. if (isset($_GET['search']) && $_GET['search'] != '') {
  32. $search = addslashes($_GET['search']);
  33. $suggest_query = db_query("SELECT * FROM miejscowosci2 WHERE miej like('".$search."%') ORDER BY miej LIMIT 0,15");
  34. while($suggest = db_fetch_array($suggest_query)) {
  35. $woje=$suggest['woj'];
  36. if ($woje=='1') $string="Dolnośląskie";
  37. if ($woje=='2') $string="Kujawsko-Pomorskie";
  38. if ($woje=='3') $string="Lubelskie";
  39. if ($woje=='4') $string="Lubuskie";
  40. if ($woje=='5') $string="Łódzkie";
  41. if ($woje=='6') $string="Małopolskie";
  42. if ($woje=='7') $string="Mazowieckie";
  43. if ($woje=='8') $string="Opolskie";
  44. if ($woje=='9') $string="Podkarpackie";
  45. if ($woje=='10') $string="Podlaskie";
  46. if ($woje=='11') $string="Pomorskie";
  47. if ($woje=='12') $string="Śląskie";
  48. if ($woje=='13') $string="Świętokrzyskie";
  49. if ($woje=='14') $string="Warmińsko-Mazurskie";
  50. if ($woje=='15') $string="Wielkopolskie";
  51. if ($woje=='16') $string="Zachodniopomorskie";
  52.  
  53. echo $suggest['miej']." <i class=\"male\">(".$string.")</i> \n";
  54. }
  55. }
  56. ?>


baza wpisana w UTF-8 i ma system porównania: utf8_general_ci
  1. CREATE TABLE `miejscowosci2` (
  2. `idr` int(11) NOT NULL AUTO_INCREMENT,
  3. `miej` varchar(50) NOT NULL,
  4. `woj` varchar(3) NOT NULL DEFAULT '0',
  5. PRIMARY KEY (`idr`)
  6. );
  7.  
  8. INSERT INTO `miejscowosci2` VALUES (1, 'Abisynia', '11');
  9. INSERT INTO `miejscowosci2` VALUES (2, 'Abramowice Prywatne', '3');
  10. INSERT INTO `miejscowosci2` VALUES (3, 'Abramów', '3');
  11. INSERT INTO `miejscowosci2` VALUES (4, 'Abramy', '7');
  12. INSERT INTO `miejscowosci2` VALUES (5, 'Achrymowce', '10');
  13. INSERT INTO `miejscowosci2` VALUES (6, 'Adamczowice', '13');
  14. INSERT INTO `miejscowosci2` VALUES (7, 'Adamczowice (Stara Wieś)', '13');
  15. INSERT INTO `miejscowosci2` VALUES (8, 'Adamczycha', '7');
  16. INSERT INTO `miejscowosci2` VALUES (9, 'Adamek', '13');
  17. INSERT INTO `miejscowosci2` VALUES (10, 'Adamierz', '6');
  18. INSERT INTO `miejscowosci2` VALUES (11, 'Adamin', '15');
  19. INSERT INTO `miejscowosci2` VALUES (12, 'Adamin (Nowa Wieś)', '15');
  20. INSERT INTO `miejscowosci2` VALUES (13, 'Adaminowo', '2');
  21. INSERT INTO `miejscowosci2` VALUES (14, 'Adaminowo (Łączki)', '2');
  22. INSERT INTO `miejscowosci2` VALUES (15, 'Adamka', '5');
  23. INSERT INTO `miejscowosci2` VALUES (16, 'Adamki', '3');
  24. INSERT INTO `miejscowosci2` VALUES (17, 'Adamkowo', '2');
  25. INSERT INTO `miejscowosci2` VALUES (18, 'Adamowa Góra', '7');
  26. INSERT INTO `miejscowosci2` VALUES (19, 'Adamowice', '6');
  27. INSERT INTO `miejscowosci2` VALUES (20, 'Adamowice (Dębina)', '5');
  28. INSERT INTO `miejscowosci2` VALUES (21, 'Adamowizna', '7');
  29. INSERT INTO `miejscowosci2` VALUES (22, 'Adamowo', '7');
  30. INSERT INTO `miejscowosci2` VALUES (23, 'Adamowo-Leśnictwo', '2');
  31. INSERT INTO `miejscowosci2` VALUES (24, 'Adamowo-Zastawa', '10');
  32. INSERT INTO `miejscowosci2` VALUES (25, 'Adamów', '7');
  33. INSERT INTO `miejscowosci2` VALUES (26, 'Adamów (Adamów-Kolonia)', '15');
  34. INSERT INTO `miejscowosci2` VALUES (27, 'Adamów Drwalewski', '7');
  35. INSERT INTO `miejscowosci2` VALUES (28, 'Adamów Rososki', '7');
  36. INSERT INTO `miejscowosci2` VALUES (29, 'Adamów-Parcel', '7');
  37. INSERT INTO `miejscowosci2` VALUES (30, 'Adamów-Parcel (Karolinów)', '7');


Skrypt sprawuje się dobrze bez polskich liter, wpisanie %dę% powinno wyświetlić sugestie nr 20, tymczasem nie znajduje żadnego wyniku. Gdzie robię błąd ?

ps. jak ktoś potrzebuje mogę podesłać całą bazę
vokiel
Bazy to Ty chyba nie masz w UTF-8... Tak będzie w utf-8:
  1. CREATE TABLE `miejscowosci2` (
  2. `idr` int(11) NOT NULL AUTO_INCREMENT,
  3. `miej` varchar(50) NOT NULL,
  4. `woj` varchar(3) NOT NULL DEFAULT '0',
  5. PRIMARY KEY (`idr`)
  6. ) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT CHARSET=utf8;
Wrzuć dane jeszcze raz.

sugest.php powinien być zapisany z kodowaniem utf-8, poza tym:
  1. function db_query($query, $link = 'db_link') {
  2. global $$link;
  3. @mysql_query("SET NAMES 'utf8'");
  4. $result = mysql_query($query, $$link) or db_error($query, mysql_errno(), mysql_error());
  5. return $result;
  6. }


Kodowanie wszystkich plików powinno też być w utf-8, nie tylko wysyłana treść.
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.