Надо сделать автодополнение в инпут, типа как в гугле, это стало модно. Не долго думаю выбрал ЭТОТ
плагин для джквери, как первый попавшийся.
Була.
Следствие выявило, что русские буквы приходят аякс обработчику(пхп срипту) как хрен знает что. Руками всунул в плагин encodeURIComponent(). Буквы стали приходить нормально, urldecode() возвращает то что надо.
Строки для дополнения берутся из бд. Кодировки всего и везде прописаны как UTF-8.
Беда вот в чем... Русские буквы из урлдекоде!=русским буквам из бд.
Далее бд и код обработчика, что бы было понятнее..
--
-- Database: `SPRAVKA`
--
-- --------------------------------------------------------
--
-- Table structure for table `Student`
--
CREATE TABLE IF NOT EXISTS `Student` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`fio` varchar(200) COLLATE utf8_bin NOT NULL,
`nomprikzach` int(11) NOT NULL,
`dataprikzach` date NOT NULL,
`passport` varchar(20) COLLATE utf8_bin NOT NULL,
`address` varchar(50) COLLATE utf8_bin NOT NULL,
`phone` varchar(10) COLLATE utf8_bin NOT NULL,
`group` varchar(5) COLLATE utf8_bin NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
-- --------------------------------------------------------
--
-- Table structure for table `Users`
--
CREATE TABLE IF NOT EXISTS `Users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`uname` varchar(30) COLLATE utf8_bin NOT NULL,
`upass` varchar(32) COLLATE utf8_bin NOT NULL,
`type` enum('user','admin') COLLATE utf8_bin NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uname` (`uname`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
header("Content-type: text/plain; charset=utf-8");
if (empty($_GET["q"]))exit;
$q=$_GET['q'];
include_once("../config.php");
$q=urldecode($q);
$handle=mysql_connect($dbhost,$dbuser,$dbpass) or exit;
mysql_select_db($dbname,$handle) or exit;
mysql_query('SET NAMES `utf8`');
$res=mysql_query('SELECT id,fio FROM student',$handle) or exit;
while($row = mysql_fetch_assoc($res))
{ echo $row['fio']."====".$row['id']."===".$q."\n";
if (strpos(strtolower($row['fio']), $q) !== false) //Не выполняется, возвращает фолс, когда буквы те же.
{
echo $row['fio']."|".$row['id']."\n";
}
}
так вот. ЧТО ЗА БРЕД?
Спустя 2 минуты, 17 секунд (27.09.2010 - 19:00) vital написал(а):
Была мысль что надо из урлдекоде еще сделать iconv но непонятно из какой кодировки..
пс. если ф-ии заменить на их аналоги mb_* нчиего не меняется)
пс. если ф-ии заменить на их аналоги mb_* нчиего не меняется)
Спустя 2 часа, 4 минуты, 4 секунды (27.09.2010 - 21:04) vasa_c написал(а):
strtolower не работает с utf8
mbstring
mbstring
Спустя 3 минуты, 37 секунд (27.09.2010 - 21:08) vital написал(а):
2vaha_c
Цитата |
пс. если ф-ии заменить на их аналоги mb_* нчиего не меняется) |
Спустя 14 минут, 10 секунд (27.09.2010 - 21:22) vasa_c написал(а):
для mb_strtolower явно "utf8" указывали в аргументах?
Цитата |
echo $row['fio']."====".$row['id']."===".$q."\n"; |
что это выводит?
Спустя 10 минут, 16 секунд (27.09.2010 - 21:32) vital написал(а):
что это выводит?
Эту строку я всунул для дебага.
Там так и получается что-то в духе фамилия=id=ф
Я потому и в шоке.
mb_strtolower явно "utf8" указывали в аргументах?э
Хм, нет. Попробую завтра на работе..
Спустя 3 минуты, 2 секунды (27.09.2010 - 21:36) vasa_c написал(а):
А без urldecode не работает? пых должен сам декодировать GET-параметры.
Спустя 2 часа, 13 минут, 44 секунды (27.09.2010 - 23:49) vital написал(а):
Цитата |
А без urldecode не работает? пых должен сам декодировать GET-параметры. |
Нет.
Цитата |
ледствие выявило, что русские буквы приходят аякс обработчику(пхп срипту) как хрен знает что. Руками всунул в плагин encodeURIComponent(). |
Спустя 12 часов, 55 минут, 3 секунды (28.09.2010 - 12:44) vital написал(а):
Как не странно, указать прямо утф-8 для ф-й mb_* спасло человечество) А откуда оно там по дефолту берет значение? мб у меня сервер так сконфигурирован, что там вин-1251 стоит?
Спасибо.
Спасибо.
_____________
"Нужно быть готовым прислушиваться к тем, кто может тебя чему-нибудь научить. Иначе ты никогда не вырастешь."
Откровенно я никому ниразу не нагрубил. А дать подзатыльник зарвавшемуся юнцу, так это и ему на пользу, и мне в удовольствие. © AllesKlar