PHP:Bootstrap,CodeIgniter-从MySQL中提取Typeahead数据


PHP: Bootstrap, CodeIgniter - Typeahead data pulling from MySQL

我正试图查询SQL以获得一个用于预编类型的值数组,但我显然错过了数组的基本原理,因为它甚至没有给我带来接近的结果

我想从SQL中收集"名称"列,只用于不同的数据

这是我的MySQL查询

$data['typeahead'] = $this->db->query('SELECT DISTINCT Name from table')->result_array();

这是它在var_dump 上给出的输出

array(287) { 
 [0]=> array(1) { ["Name"]=> string(16) "'67 Shelby GT500" } 
 [1]=> array(1) { ["Name"]=> string(8) "Tooligan" } 
 [2]=> array(1) { ["Name"]=> string(24) "'67 Pontiac Firebird 400" } 
 [3]=> array(1) { ["Name"]=> string(17) "Volkswagen Beetle" } 
}

我唯一想做的就是用列中的数据构建一个数组。我正在使用CodeIgniter for FrameWork,并将使用Bootstrap的JS来处理typeahead,但我一直停留在数据数组部分。

如果有任何帮助,我将不胜感激,我已经找到了许多关于如何使用非MySQL数组作为typeahead的教程,但没有一个是使用MySQL的。

^^已解决

现在发布:

Typeahead未从阵列中提取数据

控制器代码:

 $name_array = $this->db->query('SELECT DISTINCT Name from table')->result_array();
 $typeahead_string = '';
 foreach ($name_array as $name)
 {
  $formatted_name    =  '"' . $name['Name'] . '", ';
  $typeahead_string .= $formatted_name;
 }
 $option_list = "[" . rtrim($typeahead_string, ", ") . "]";
 $data['typeahead'] = $option_list;

查看代码:

<input type="text" class="span3 search-query" placeholder="Search" id="typeahead" data-provide="typeahead" data-source="<?php echo $typeahead; ?>"><button type="submit" class="btn"><i class="icon-search"></i></button>

您可以迭代查询当前生成的结果,并将Name元素添加到新数组中,如下所示:

$name_array = $this->db->query('SELECT DISTINCT Name from HWC')->result_array();
$typeahead_array = array();
foreach ($name_array as $name)
{
    $typeahead_array[] = $name['Name'];
}
$data['typeahead'] = $typeahead_array;

编辑:

要使用Bootstrap中的typeahead功能,数据源可以是字符串列表,例如:"Orange", "Apple", "Banana"

您可以为$data['typeahead']变量分配一个作为选项列表的字符串,将其传递到视图并将其回显到相关属性。

控制器

下面的循环将创建一个字符串变量,该变量将包含typeahead的所有选项。它在每个元素周围添加引号,并在末尾添加逗号,因此Apple将变为"Apple",。然后,它将把每个元素附加到字符串中。

$name_array = $this->db->query('SELECT DISTINCT Name from HWC')->result_array();
$typeahead_string = '';
foreach ($name_array as $name)
{
    $formatted_name    =  '"' . $name['Name'] . '", ';
    $typeahead_string .= $formatted_name; 
}
$option_list = rtrim($typeahead_string, ",");  //Strips the last comma and any whitespace from the end string
$data['typeahead'] = $option_list;

查看

视图中的输入应该与此类似,重要的部分是选项列表的回声:data-source="[<?php echo $typeahead; ?>]"

<input type="text" data-provide="typeahead" data-items="4" data-source="[<?php echo $typeahead; ?>]">

希望这能有所帮助!

仍然对我不起作用。当我检查元素时,数据像这样"uncategories","php"。第一个总是spasing。

找到了使用这个$formatted_name = '"' . $name['Name'] . '", ';的方法,只需更改为$formatted_name = '&quot;' . $name['Name'] . '&quot;, ';