如何用php绑定select2和mysql数据库

Posted

技术标签:

【中文标题】如何用php绑定select2和mysql数据库【英文标题】:How to bind select2 and mysql databse with php 【发布时间】:2015-08-15 16:49:49 【问题描述】:

我正在尝试绑定我的 select2 输入以使用 mysqli 连接从 mysql 数据库中获取结果。我在这里尝试了几种解决方案,但尚未使其工作,而是一直说找不到结果。

我最近尝试的是来自https://select2.github.io/examples.htmljavascript 代码。我不确定是我的 javascript 还是我的 php 文件失败了。

这些是我的代码,希望有人能指出我需要更改的地方。

HTML

<div class="form-group">
   <div class="col-xs-12 col-sm-12 col-md-6 col-lg-6">
      <label class="control-label col-lg-3" for="Customer" id="Customer"><span style="color:red;">*</span>Customer:</label>
      <div class="col-lg-9">
         <input id="cCustomer" name="cCustomer" class="cCustomer form-control" type="hidden" value="" style="width: 100%" />   
      </div><!-- END col-lg-9  -->
   </div><!-- END col-xs-12 col-sm-12 col-md-6 col-lg-6  -->
</div><!-- END .form-group  -->

我确实包括了

<link rel="stylesheet" href="//localhost/1System/select2/css/select2.min.css">
<link rel="stylesheet" href="//localhost/1System/select2/css/select2-bootstrap.min.css">
<script type="text/javascript" src="//localhost/1System/select2/js/select2.full.min.js"></script>

在我的&lt;head&gt;&lt;/head&gt;

JS

$(document).ready(function() 
    $("#cCustomer").select2(
        ajax: 
            url: "../../autoComplete/autoAddQuotation1.php",
            dataType: 'json',
            delay: 250,
            data: function (params) 
                return 
                    q: params.term, // search term
                    page: params.page
                ;
            ,
            processResults: function (data, page) 
                // parse the results into the format expected by Select2.
                // since we are using custom formatting functions we do not need to
                // alter the remote JSON data
                return 
                    results: data.items
                ;
            ,
            cache: true
        ,
        escapeMarkup: function (markup)  return markup; , // let our custom formatter work
        minimumInputLength: 1,
        //templateResult: formatRepo, // omitted for brevity, see the source of this page
        //templateSelection: formatRepoSelection // omitted for brevity, see the source of this page
    );
);

最后,我的 PHP

<?php
   include($_SERVER['DOCUMENT_ROOT']."/1System/php/connect.php");//calling connection file

   $conn=dbConnect();
   if (!$conn)
      die("Couldn't connect to MySQL"); /*when server is down, the statement will be showed*/
   $query = "SELECT c.customerID, c.name AS cname FROM customer c WHERE c.name LIKE '%".mysql_real_escape_string(strtoupper($_GET['q']))."%' or '%".mysql_real_escape_string($_GET['q']))."%'";
   $result = mysqli_query($conn, $query);
   $numCustomer = mysqli_num_rows($result);

   if($numCustomer != 0) 
      while(row = mysqli_fetch_array($result)) 
         $answer[] = array("id"=>$row['customerID'], "text"=>$row['cname']);
      
   else 
      $answer[] = array("id"=>"0", "text"=>"No Results Found...");    
   
   echo json_encode($answer);
?>

我正在使用 mysqli 连接到我的数据库。我的连接适用于其他 php 页面。

$conn = mysqli_connect($host, $username, $password);

说实话,我真的不知道 PHP 文件应该是什么样子的?任何人都可以为我指出一个好的例子或正确的方向。

问题:

当我点击我的 chrome 上的输入时,它显示没有找到结果。![在此处输入图像描述][1] [1]:http://i.stack.imgur.com/PDAa5.png

提前致谢。如果我的问题重复或不好,请反馈。

【问题讨论】:

1.检查萤火虫(或其他浏览器的类似扩展)所说的内容。 2.在你的JS代码中url参数应该是一个URL,而不是一个相对路径。 3. 你的 PHP 代码应该返回 array('items' =&gt; $answer) @dragoste 如何检查我的 php 代码的返回结果?我读到人们能够看到他们的 json 结果,但我不太清楚我该怎么做。谢谢 在 Firebug -> 控制台和网络选项卡中,您可以查看所有 ajax 请求。 【参考方案1】:

您的 JS select2 代码非常适合我。

下面是我用来创建 JSON 响应的 Doctrine 函数。

你应该能够适应你的 mysql/php 代码。

$q = strtolower($q);
$stmt = $this->getEntityManager()
        ->getConnection()
        ->prepare("SELECT s.id, s.suburb, s.state, s.postcode "
            . "FROM suburbs s "
            . "WHERE LOWER(s.suburb) LIKE '%" . $q . "%' "
            . "OR LOWER(s.state) LIKE '%" . $q . "%' "
            . "OR LOWER(s.postcode) LIKE '%" . $q . "%' "
            . "ORDER BY s.suburb, s.state"
        );
$stmt->execute();
$result = $stmt->fetchAll();

$suburbs = array();
if (is_array($result)) 
    foreach ($result as $row) 
        $id = $row['id'];
        $text = $row['suburb'] . ", " . $row['state'] . " " . $row['postcode'];
        $suburbs[] = array('id' => $id, 'text' => $text);
    

return json_encode(array('items' => $suburbs));

【讨论】:

【参考方案2】:

select2 的最新版本 4.0 适用于选择标签,而不再适用于输入标签(输入文本或隐藏输入)。 看来你使用的是这个版本,所以你应该相应地增强你的代码。

【讨论】:

以上是关于如何用php绑定select2和mysql数据库的主要内容,如果未能解决你的问题,请参考以下文章

如何用 jquery I 制作 select2

如何用锁选择实现select2

如何用windows系统搭建企业和个人私有云

如何用PHP+MySQL计算两个日期之间的月份数和其余下的天数?

如何用php判断mysql数据库里某张表是不是存在

如何用php 在mysql的日期型数据中写入NULL