V
vital
Преамбула.
Надо сделать автодополнение в инпут, типа как в гугле, это стало модно. Не долго думаю выбрал ЭТОТ
плагин для джквери, как первый попавшийся.
Була.
Следствие выявило, что русские буквы приходят аякс обработчику(пхп срипту) как хрен знает что. Руками всунул в плагин encodeURIComponent(). Буквы стали приходить нормально, urldecode() возвращает то что надо.
Строки для дополнения берутся из бд. Кодировки всего и везде прописаны как UTF-8.
Беда вот в чем... Русские буквы из урлдекоде!=русским буквам из бд.
Далее таблица и код обработчика, что бы было понятнее..
так вот. ЧТО ЗА БРЕД?
Надо сделать автодополнение в инпут, типа как в гугле, это стало модно. Не долго думаю выбрал ЭТОТ
плагин для джквери, как первый попавшийся.
Була.
Следствие выявило, что русские буквы приходят аякс обработчику(пхп срипту) как хрен знает что. Руками всунул в плагин 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;
PHP:
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";
}
}