Witam,
napisałem sobie typowy skrypt autosuggest, niestety przy wybieraniu pozycji z listy podpowiedzi dostaje do inputa string z krzakami [jeśli są w nim polskie znaki].
screen:
kod php:
<?php
// ładuje moduł obsługi błędów
require_once('error_handler.php');
// ładuje plik konfoguracyjny
require_once('config.php');
// klasa, której zadaniem jest obsługa funkcji podpowiadania i autouzupełniania po stronie serwera
class Suggest
{
// obsługa bazy danych
private $mMysqli;
// konstruktor, otwiera połączenie z bazą
function __construct()
{
// łączy z bazą
$this->mMysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE);
}
// destruktor, zamyka połączenie z bazą
function __destruct()
{
$this->mMysqli->close();
}
// zwraca nazwy wszystkich funkcji, które zaczynają się od wartości $keyword
public function getSuggestions($keyword)
{
// obcina łańcuch słowa kluczowego
$patterns = array('/\s+/', '/"+/', '/%+/');
$replace = array('');
$keyword = preg_replace($patterns, $replace, $keyword);
// tworzy zapytanie SQL, które pobiera pasujące nazwy funkcji z bazy
$this->mMysqli->query("SET NAMES 'UTF8'");
$this->mMysqli->query('SET character_set_client=latin2');
// $this->mMysqli->query('SET character_set_results=cp1250');
if($keyword != '')
$query = 'SELECT nazwa_przystanku FROM przystanki WHERE nazwa_przystanku LIKE "'.$keyword.'%"';
// jeśli słowo kluczowe nie zostało podane, nie zwraca nic
else
$query = 'SELECT nazwa_przystanku ' . 'FROM przystanki ' . 'WHERE nazwa_przystanku=""';
// wykonuje zapytanie SQL
$result = $this->mMysqli->query($query);
// tworzy odpowiedź w formacie XML
$output = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
$output .= '<response>';
// jeśli są wyniki, przegląda je w pętli i dodaje do danych wyjściowych
if($result->num_rows)
while ($row = $result->fetch_array(MYSQLI_ASSOC))
{
$nazwa = $row['nazwa_przystanku'];
$output .= '<name>' . $nazwa . '</name>';
}
// zamyka strumień wyjściowy
$result->close();
// dodaje znacznik kończący plik
$output .= '</response>';
// zwraca wyniki
return $output;
}
//koniec klasy Suggest
}
?>
i kod html:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link href="suggest.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="suggest.js"></script>
</head>
<body>
<noscript>
Twoja przeglądarka nie obsługuje JavaScript!!
</noscript>
<div id="content" onclick="hideSuggestions();">
<div id="message">Podaj pierwsze litery przystanku, który chcesz odnaleźć:</div>
<input type="text" name="keyword" id="keyword" maxlength="70"
size="69" onkeyup = "handleKeyUp(event)" value="" />
<div id="scroll">
<div id="suggest">
</div>
</div>
</div>
</body>
</html>
dodam że w bazie mam kodowanie UTF-8.
Jakieś pomysły?
Z góry dziękuję