Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jqueryui-Autocomplete-UTF8字符集_Jquery_Sql_Utf 8_Autocomplete_Case Sensitive - Fatal编程技术网

jqueryui-Autocomplete-UTF8字符集

jqueryui-Autocomplete-UTF8字符集,jquery,sql,utf-8,autocomplete,case-sensitive,Jquery,Sql,Utf 8,Autocomplete,Case Sensitive,我正在处理这个jquery数据输入表单,在这个表单中,我需要一个特定的字段来自动完成来自mysql的数据 我让一切正常,自动完成通过php从sql检索数据 英语/拉丁语字符的匹配非常好 问题是,当我输入希腊文时,我只得到区分大小写的匹配 如果我输入了正确的大小写,我就得到了匹配的结果,一切都很顺利,但我希望它不区分大小写 正如你所理解的,我将它与一个外部源一起使用,所以我猜在比较两个字符串时,它一定是某种东西。。。正确键入case时,效果非常好 另外,正如您将在我的代码中看到的,我有一个数组[i

我正在处理这个jquery数据输入表单,在这个表单中,我需要一个特定的字段来自动完成来自mysql的数据

我让一切正常,自动完成通过php从sql检索数据 英语/拉丁语字符的匹配非常好

问题是,当我输入希腊文时,我只得到区分大小写的匹配 如果我输入了正确的大小写,我就得到了匹配的结果,一切都很顺利,但我希望它不区分大小写

正如你所理解的,我将它与一个外部源一起使用,所以我猜在比较两个字符串时,它一定是某种东西。。。正确键入case时,效果非常好

另外,正如您将在我的代码中看到的,我有一个数组[id,name] 使用我当前的配置(甚至区分大小写),我搜索名称,当我单击我想要的名称时,会出现下拉列表,单元格中会填充ID,当我提交表单时,ID会发布到下一个php页面

是否有任何方法可以完全相同,但不是用id填充字段,而是用名称填充字段?ie:搜索姓名,获取姓名下拉列表,单击并在字段中获取姓名,然后在提交时发布id

任何帮助都将不胜感激。 代码如下:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js"></script>
<script language="javascript" type="text/javascript" src="js/dropdowndata/dropdowndata.name.js"></script>
以下是源代码(search.php):


您需要在php页面的开头添加一个标题(索引或从ajax(search.php)调用的任何内容)


在autocomplete插件的文档中,有一个名为
matchCase
的选项。默认情况下,它设置为false。将其更改为true,则匹配项应不区分大小写

http://docs.jquery.com/Plugins/Autocomplete/autocomplete
我想出来了, strtolower()和UTF-8字符集似乎有问题 我改变了这两种情况 strtolower($string) 在search.php中: mb_strtolower(($string),'UTF-8') 它成功了;)

代码如下所示:

sleep( 1 );
if (empty($_GET['term'])) exit ;
//change in next line:
$q = mb_strtolower(($_GET["term"]),'UTF-8');
if (get_magic_quotes_gpc()) $q = stripslashes($q);



$result = array();
foreach ($items as $value=>$key) {
        //change in next line:
        if (strpos(mb_strtolower(($key),'UTF-8'),$q ) !== false) {
                array_push($result, array("id"=>$value, "label"=>$key, "value" => strip_tags($value)));
        }
        if (count($result) > 11)
                break;}

echo json_encode($result);
thanx的回复是:) 早上的心态+咖啡对我来说更清晰:)

对此有何想法: “此外,正如您将在我的代码中看到的,我有一个数组[id,name],带有我当前的配置(甚至区分大小写)。我搜索名称时,会出现下拉列表,当我单击我想要的名称时,单元格会充满id,当我提交表单时,id会发布到下一个PHP页面


有没有什么方法可以完全相同,但不是用id填充字段来填充名称?例如:搜索名称,用名称下拉列表,单击并在字段中获取名称,然后在提交时发布id?”

不起作用,不幸的是,我添加了您告诉我的行,我还添加了mysql\u set\u charset('utf8',$link);mysql_查询(“SET NAMES'utf8'”,$link);同样,不区分大小写搜索英语字符,区分大小写搜索希腊语:(我不知道如何编写@jirka kopriva ah,就是这样:)为什么不尝试在数据库查询中直接使用-SELECT…像“…%”这样的值进行比较呢?顺便说一句,对于非英语使用
mb\u strtolower
而不是直接在查询中使用
strtolower
上/下大小写。但是,使用
SELECT..LIKE
更快、更有效。mb\u strtolower为了解决我的问题,我在第二篇文章中提到了我到底做了些什么。下次我会像这样尝试sql,看看它是如何工作的:)thanxtip@jmort254我应该提到的是,我没有使用您上面提到的自动完成功能,但是:[link]它们使用相同的选项吗?@jmort254我还是输入了代码:$(“.doctors”).autocomplete({minLength:1,matchCase:true,…似乎没有什么变化,我仍然对英文字符不区分大小写,对希腊文不区分大小写…我不明白:)在文档中,可能有一种方法可以覆盖进行比较的方法,以确定要显示的内容。如果使用特殊(非英语)字符。我在一个项目中使用了jQuery的tagit插件。它有自动完成功能,我可以覆盖tagSource函数,这样它就可以满足我的需要。你正在使用的插件的url是什么?如果没有一个选项来传递覆盖的函数,你可以直接权衡编辑插件的利弊……恐怕我不能编辑插件是一项全新的工作:)我的第一个回复中有一个链接。找到你的答案是一份很棒的工作。但是,为了更好地利用这个问答网站,也为了帮助其他有问题的用户,你应该将你的下一组问题清楚地划分为一个全新的问题,这样你的答案就是这个问题的答案。:)
<?php

                $link = mysql_connect("1","2","3");
                        if (!$link) {  die("Database Connection Failed". mysql_error());}

    mysql_set_charset('utf8',$link);

                $db_select = mysql_select_db("form2",$link);
                        if(!$db_select){die("Database Selection Failed " . mysql_error());}

    mysql_query("SET NAMES 'utf8'", $link);

                $result1 = mysql_query("SELECT dlastname,dfirstname,id FROM doctors ORDER BY dlastname ASC", $link);
                        if(!$db_select){die("No Data found in db " . mysql_error());            }

$items=array();

                while($row = mysql_fetch_array($result1)){
                         $items[$row['id']] = $row['dlastname']. ", ". $row['dfirstname'];}

sleep( 1 );
if (empty($_GET['term'])) exit ;
$q = strtolower($_GET["term"]);
if (get_magic_quotes_gpc()) $q = stripslashes($q);



$result = array();
foreach ($items as $value=>$key) {
        if (strpos(strtolower($key),$q ) !== false) {
                array_push($result, array("id"=>$value, "label"=>$key, "value" => strip_tags($value)));
        }
        if (count($result) > 11)
                break;}

echo json_encode($result);


?>
 header("Content-Type:text/html; charset=utf-8");
http://docs.jquery.com/Plugins/Autocomplete/autocomplete
sleep( 1 );
if (empty($_GET['term'])) exit ;
//change in next line:
$q = mb_strtolower(($_GET["term"]),'UTF-8');
if (get_magic_quotes_gpc()) $q = stripslashes($q);



$result = array();
foreach ($items as $value=>$key) {
        //change in next line:
        if (strpos(mb_strtolower(($key),'UTF-8'),$q ) !== false) {
                array_push($result, array("id"=>$value, "label"=>$key, "value" => strip_tags($value)));
        }
        if (count($result) > 11)
                break;}

echo json_encode($result);