Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][MySQL][PHP]problem z polskimi znakami
Forum PHP.pl > Forum > Przedszkole
salek
Witam,
Problem może okazać się banalny, ale szukałem już w google 2 dni, i próbowałem różnych spraw a problem ciągle jest. Dlatego postanowiłem zadać w końcu pytanie:

Otóż mam problem z polskimi znakami w wyszukiwarce "pseudoajaxowej". Mam sobie pole input text, w nim wpisuję znaki, a poprzez js i osobny plik php pobieram dane z bazy i wyświetlam w osobnym DIV.
Wszystko by działało, tylko znaczki się gdzieś krzaczą. Zaznaczam, że wszystko mam w UTF-8 (baza, set names w pliku łączącym z bazą, wszystkie pliki kodowane w utf, nawet gdzieś znalazłem żeby w <form> dołożyć accept-charset="utf-8" więc tak zrobiłem, ciągle ten sam problem...)

Kod
Grzeg?�?k? (grzeg?�?k? li??)


coś takiego wyświetla div pod inputem.

Jeśli to coś pomoże, wklejam też poszczególne kody, ogólnie cały skrypt jest znaleziony w necie i tylko troszkę zmieniony:

  1. <input type="text" id="searchinput" name="searchinput" value="" onkeyup="searchSuggest();"/>
  2. </div><div id="search_suggest"></div>


Kod
function searchSuggest(){
var str = escape(document.getElementById('searchinput').value);
var myAjax = new Ajax.Request(
      'suggest.php',
      {
         method: 'get',
         parameters: "search="+str,
         onComplete: showResponse,
         onFailure: showAlert
      });
                
}
function showResponse(text){
        
        var search_suggest = document.getElementById("search_suggest");
        search_suggest.style.visibility = "visible";
        var ss = document.getElementById('search_suggest')
        ss.innerHTML = '';
        var str = text.responseText.split("\n");
        for(i=0; i < str.length - 1; i++)
        { var suggest = '<div onmouseover="java script:suggestOver(this);" ';
                        suggest += 'onmouseout="java script:suggestOut(this);" ';
                        suggest += 'onclick="java script:setSearch(this.innerHTML);" ';
                        suggest += 'class="suggest_link">' + str[i] + '</div>';
                        ss.innerHTML += suggest;
                }
        
        
        
}
function showAlert(MyRequest) {
        alert("Operacja nie powiodła się");
}
function suggestOver(div_value) {
        
        div_value.className = 'suggest_link_over';
}
function suggestOut(div_value) {
        
        div_value.className = 'suggest_link';
}
function setSearch(value) {
        var search_suggest = document.getElementById("search_suggest");
        search_suggest.style.visibility = "hidden";
        document.getElementById('searchinput').value = value;
        document.getElementById('search_suggest').innerHTML = '';
}


  1. <?php
  2. include('db_config.php');
  3. $search = addslashes($_GET['search']);
  4. if(!empty($search)){
  5.  
  6.  
  7.  
  8. $zapytanie = "select identyfikator, nazwa, id_kontrahenta from kontrahenci where identyfikator LIKE '%$search%' LIMIT 10";
  9. $wynik = mysql_query($zapytanie);
  10.  
  11. $ile_znalezionych = mysql_num_rows($wynik);
  12. for ($i=0; $i <$ile_znalezionych; $i++)
  13. {
  14.  
  15. $wiersz = mysql_fetch_assoc($wynik);
  16.  
  17. $str .= "[".$wiersz['id_kontrahenta']."]".$wiersz['identyfikator']." (".$wiersz['nazwa'].") \n";
  18.  
  19. }
  20. $str .= "empty \n";
  21. echo rtrim($str);
  22. }
Posio
http://php.pl/phppl/Wortal/Artykuly/Pomysl...e-znaki-a-MySQL
PDO - polecam smile.gif
salek
Cytat
Zaznaczam, że wszystko mam w UTF-8 (baza, set names w pliku łączącym z bazą, wszystkie pliki kodowane w utf, nawet gdzieś znalazłem żeby w <form> dołożyć accept-charset="utf-8" więc tak zrobiłem, ciągle ten sam problem...)


Takie rzeczy to dla mnie podstawa i na prawdę nie mam pojęcia dlaczego wywala mi takie krzaki. Wydaje mi się, że wyczerpałem już 99% możliwości i gdzieś jest tylko ta jedna, która to "naprawi" wink.gif


Dodam jeszcze, że korzystam też z prototype.js, ale tam też jest wszystko w utf-8.
Turson
- w pliku php meta z kodowanie UTF-8
- w edytorze tekstu UTF-8 bez BOM
- w bazie PhpMyAdmin daj:
  1. ALTER TABLE nazwa_tabeli CONVERT TO CHARACTER SET utf8 COLLATE utf8_polish_ci

- zacznie działać dopiero po dodaniu nowego rekordu, więc stare musisz wywalić
- sprawdź w strukturze czy kolumny mają kodowanie utf8_polish_ci

Używam osobiście tego rozwiązania i się sprawdza.
salek
Mam poustawiane wszystko tak jak piszecie. Problem nie tkwi w tym. w bazie wyświetla się wszystko ładnie. W aplikacji jak sobie klupnę przez echo "" - też wyświetla ładnie znaczniki.

Problem występuje tylko w divie id="search_suggest" - podczas wpisywania tekstu w inpucie wyświetla pasujące pozycje w divie i te pozycje są skrzaczkowane w miejscach polskich znaków... Podejrzewam że problem gdzieś robi javascript...

Temat do usunięcia. Problem rozwiązałem zmieniając całkowicie system autocomplete na jqueryUI i zaprądziło.
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.