我正在尝试在我的项目上创建一个标记系统。 我在我的网站上使用这个 github tagedit 插件作为标记系统。他们正在使用 jquery 代码,如 jquery-1.10.2.min.js
etc(他们自己的).此工具中有一个 PHP 代码,它将使用标签名称和标签 ID 初始化数组。初始化后,jQuery 将处理所有客户端工作(标记工具)。
现在的问题是他们在代码中手动初始化了该数组。但由于显而易见的原因,我不能这样做。我必须从数据库动态初始化此数组。每当我尝试动态初始化它时,整个事情都不起作用。我调试了很多,我发现在下一步初始化后,他们正在检查if(isset($_GET['term']))
,而这个isset($_GET['term'])
总是返回 false。为什么??
这是他们的代码::
$autocompletiondata = array(
3 => 'Hazel Grouse',
4 => 'Common Quail',
5 => 'Common Pheasant',
6 => 'Northern Shoveler',
7 => 'Greylag Goose',
8 => 'Barnacle Goose',
9 => 'Lesser Spotted Woodpecker',
10 => 'Eurasian Pygmy-Owl',
11 => 'Dunlin',
13 => 'Black Scoter',
14 => 'Eurasian Wryneck',
15 => 'Little Owl',
16 => 'Eurasian Curlew',
);
if(isset($_GET['term'])) {
$result = array();
foreach($autocompletiondata as $key => $value) {
if(strlen($_GET['term']) == 0 || strpos(strtolower($value), strtolower($_GET['term'])) !== false) {
$result[] = '{"id":'.$key.',"label":"'.$value.'","value":"'.$value.'"}';
}
}
echo "[".implode(',', $result)."]";
}
上面的代码工作正常。整个标记系统工作正常。但是当我尝试从数据库动态初始化该数组时,它不起作用。整个标记系统停止工作。
这是我的代码::
//$link is database connection link
$query = mysqli_query($link,"select id,tag_name from tags order by no_of_times_used desc");
$autocompletiondata=array();
while($row = mysqli_fetch_object($query))
{
$autocompletiondata +=array($row->id => $row->tag_name);
}
if(isset($_GET['term'])) {
$result = array();
foreach($autocompletiondata as $key => $value) {
if(strlen($_GET['term']) == 0 || strpos(strtolower($value), strtolower($_GET['term'])) !== false) {
$result[] = '{"id":'.$key.',"label":"'.$value.'","value":"'.$value.'"}';
}
}
echo "[".implode(',', $result)."]";
}
现在正如我所说,上面的代码不起作用,整个标记系统现在停止工作
注意:我已经以多种方式尝试了我的代码,例如以这种($autocompletiondata[$row->id] = $row->tag_name;
)方式使用in while循环初始化数组,而不是在while loop
之外声明$autocompletiondata=array();
.很多尝试,但没有一个对我有用。
我可以保证的是 mu dbConfig.php
绝对没问题,因为我与数据库的其他交互运行良好。
现在我的问题是如何解决这个问题?我应该如何使用数据库中的值初始化数组以使这个标记系统工作?
isset 函数检查变量是否已声明。当给定变量不存在时,此函数返回 false。
$_GET
是一个 url 参数数组。因此,如果isset($_GET['term'])
返回 false,这意味着当前 url 不包含名为 term
的参数。因此,尝试添加类似yourlink.com?term=something
的内容并按回车键...
此外,要使用数据库中的数据初始化数组,您应该编写以下内容
//---
$query = mysqli_query($link,"select id,tag_name from tags order by no_of_times_used desc");
$autocompletiondata=array();
while($row = mysqli_fetch_object($query))
{
$autocompletiondata[$row->id]=$row->tag_name;
}
//-----