jquery autocomplete - търсене на български

vasilev

Registered
здравейте ,
използвам jquery ajax autocomplete като заявката връща потребителското име :



Код:
header('Content-type: text/html; charset="UTF-8"',true);
$q = (trim(strip_tags($_GET['q'])));
if (!$q) return;
$sql = "select user as name from users where user LIKE '%$q%'";
$rsd = mysql_query($sql);
while($rs = mysql_fetch_array($rsd)) {
        $uname = $rs['name'];
        echo "$uname\n";
}

само че аз искам да се търси по име - което е fullname поле и е на български .
опитах просто да сменя where fullname .. но не става .
моля за съдействие .
 
Не знам какво точно е jquery autocomplete и за това си позволих своеволието да ти драсна много прост кодец за подобно търсене!

<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>

<?php
header('Content-Type: text/html; charset=utf-8');
?>

<input type="text" id="word" />

<div style="border: 1px solid red;">
<h1>Results:</h1>
<ul id="results">

</ul>
</div>

<script>

$("#word").bind("keyup", function(){
$.post(
"query.php",
{
word : $("#word").val()
},
function(data) {
$("#results").html(data);
}
);
});

</script>
Тази жакла картинка представялва полето за търсене. Важен е javascript

при event keyup праща заявка до файла query.php

Файла query.php

<?php
header('Content-Type: text/html; charset=utf-8');
mysql_connect("СЪРВЪР", "ПОТРЕБИТЕЛСКО ИМЕ", "ПАРОЛА");
mysql_select_db("ДАТАБАЗА");
mysql_query("SET NAMES 'utf8'");

$word = $_POST['word'];

if(isset($word) && strlen($word) > 0) {
$sql = "SELECT `ПОЛЕТО, КОЕТО ЩЕ ВРЪЩА` FROM `ТАБЛИЦА` WHERE `ПОЛЕТО, В КОЕТО ДА ТЪРСИ` LIKE '%{$word}%'";
$query = mysql_query($sql);
if(mysql_num_rows($query) >= 1) {
while($r = mysql_fetch_array($query)) {
echo "<li>".$r['ПОЛЕТО, КОЕТО ЩЕ ВРЪЩА']."</li>";
}
} else {
echo "Няма съвпадение!";
}
}
?>

Не е кой знае каква философия, но работи и при работа с "а-я"!
 
тествах и с този скрипт но пак същото . изкарва съвпадение на латиница по user но не и за кирилица по fullname .
Полетата в базата са ми utf8_general_ci .

това е и скрипта който ползвам .
Код:
<script type='text/javascript' src='js/jquery.autocomplete.js'></script>
<link rel="stylesheet" type="text/css" href="css/jquery.autocomplete.css" />
<script type="text/javascript">
$().ready(function() {
	$("#userlist").autocomplete("gettest.php", {
		width: 260,
		matchContains: true,
		selectFirst: true,
		max: 5
	});
});
</script>.
.
.
<input type='text' name='to' size='30' class='logbut' id='userlist'>

и скрипта със заявката:

Код:
<?php
header('Content-Type: text/html; charset=utf-8'); 
require_once "dbc.php";
$q = $_GET['q'];
if (!$q) return;
$sql = "select user as name from users where fullname LIKE '%$q%'";
$rsd = mysql_query($sql);
while($rs = mysql_fetch_array($rsd)) {
        $uname = $rs['name'];
        echo "$uname\n";
}
?>


ако казваш че кода който даде работи с български букви , то явно проблема при мен е в базата :?
 
Ами преди заявката пробва ли да сложиш

PHP:
mysql_query("SET NAMES utf8"); #ако кодировката в базата данни ти е utf8

?
 
:)
в мен е бил проблема ..
аз селектвам username където fullname е като .. нещо на български .
и се чудя защо само при първа буква ми връщаше резултат .
а то autocomplete следи за всяка буква явно . Сега го направих да селектнe fullname и нещата потръгнаха :)

Код:
$sql = "select fullname as name from users where fullname LIKE '%$q%'";
 

Back
Горе