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";
}
}