【问题标题】:Autocomplete in CodeIgniter MySQL with JQuery使用 JQuery 在 CodeIgniter MySQL 中自动完成
【发布时间】:2017-06-22 17:17:26
【问题描述】:

我在 codeigniter 中发现了一个关于自动完成的问题,如果我用 autocomplete 填充 siteid,我想在另一个表单(站点名称)中直接显示来自数据库的数据,但我失败了,自动完成表单在siteid 没有显示,所以另一个字段也不能工作

这是我的控制器代码:

    public function get_allkota() {
    $kode = $this->input->post('kode',TRUE); 
    $query = $this->db->get("tbl_site");

    $kota       =  array();
    foreach ($query as $d) {
        $kota[]     = array(
            'label' => $d->siteid,
            'nama' => $d->siteid ,
            'sitename' => $d->sitename,
        );
    }
    echo json_encode($kota);   
}

这是我的 jquery 代码:

    <script src="<?php echo base_url(); ?>assets/js/jquery.min.js" type="text/javascript"></script>
<script src="<?php echo base_url(); ?>assets/js/jquery-ui.js" type="text/javascript"></script>
<script>
 $(function () {
    $("#kode").autocomplete({  
        minLength:0,
        delay:0,
        source:'<?php echo site_url('app_admin_kabupaten/get_allkota'); ?>', 
        select:function(event, ui){
            $('#siteid').val(ui.item.siteid);
            $('#sitename').val(ui.item.sitename);
            }
        });
    });
</script>

这是我的表单代码:

<p><input type="text" id="kode" placeholder="Fill site ID" > </p>
<p>Site ID : </br><input type="text" id="siteid"></br>
   Site Name : </br><input type="text" id="sitename"></br>

谢谢

【问题讨论】:

  • “我在codeigniter中发现了一个关于自动完成的问题”...那么问题是什么?
  • @DamithRuwan 我正在编辑它,我无法运行自动完成数据,如果您有任何建议,请告知,谢谢

标签: jquery codeigniter autocomplete


【解决方案1】:

问题出在您的控制器代码中,当您执行$this-&gt;db-&gt;get('table_name') 时,codeigniter 返回查询对象。您需要从中获取结果。

来自文档:

$query = $this->db->get('table_name');

foreach ($query->result() as $row)
{
        echo $row->field;
}

因此,将您的控制器代码更改为此,它应该可以工作,

public function get_allkota() {
    $kode = $this->input->get('term'); 

    $this->db->like('siteid', $kode); 
    $query = $this->db->get("tbl_site");
    $kota       =  array();

    foreach ($query->result() as $d) {
        $kota[]     = array(
            'label' => $d->siteid,
            'nama' => $d->siteid ,
            'sitename' => $d->sitename,
        );
    }
    echo json_encode($kota);   
}

【讨论】:

  • 它没有用,我换成 foreach ($query->result() as $row){echo $row->sitename;echo $row->siteid;},你能给完整编辑?
  • 您是否尝试过我在答案中包含的get_allkota() 函数?
  • 我认为你的 get_allkota() 和我之前的控制器一样,
  • 没有。这就是我在回答中所说的。你循环了$query 对象。您需要循环包含结果的$query-&gt;results()
【解决方案2】:
// js code after document is ready
// Search autocomplete
$("#swSearch").autocomplete({
    minLength: 1,
    source: function(req, add){
        $.ajax({
            url: '/search', //Controller where search is performed
            dataType: 'json',
            type: 'POST',
            data: req,
            success: function(data){
                if(data.response =='true'){
                   add(data.message);
                }
            }
        });
    }
});

// Controller search function


    $keyword = $this->input->post('term');

    $data['response'] = 'false'; //Set default response

    $query = $this->Mprofile->sw_search($keyword); //Model DB search

    if($query->num_rows() > 0){
       $data['response'] = 'true'; //Set response
       $data['message'] = array(); //Create array
       foreach($query->result() as $row){
          $data['message'][] = array('label'=> $row->friendly_name, 'value'=> $row->friendly_name); //Add a row to array
       }
    }
    echo json_encode($data);

// Simple model example

public function sw_search($keyword)
    {
        $this->db->select('id, friendly_name');
        $this->db->from('business_category');
        $this->db->where('suppress', 0);
        $this->db->like('friendly_name', $keyword);
        $this->db->order_by("friendly_name", "asc");

        $query = $this->db->get();
        foreach($query->result_array() as $row){
            //$data[$row['friendly_name']];
            $data[] = $row;
        }
        //return $data;
        return $query;
    }

Enjoy

【讨论】:

    【解决方案3】:
    In core PHP here is the code
    
    ///////////////////////Search.php////////////////
    
        <?php
    $dbHost = 'localhost';
    $dbUsername = '';
    $dbPassword = '';
    $dbName = '';
    //connect with the database
    $db = new mysqli($dbHost,$dbUsername,$dbPassword,$dbName);
    //get search term
    $searchTerm = $_GET['term'];
    //get matched data from skills table
    $query = $db->query("SELECT * FROM tablename WHERE column_name LIKE '%".$searchTerm."%' group by column_name ORDER BY column_name ASC");
    while ($row = $query->fetch_assoc()) {
        $data[] = $row['column_name'];
    }
    //return json data
    echo json_encode($data);
    ?>
    
    
    ///////////////////////////////////////////////
    
    //////////////////Index.php///////////////////
    
    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="utf-8">
    
      <link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
      <script src="//code.jquery.com/jquery-1.10.2.js"></script>
      <script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
      <script>
      $(function() {
        $( "#skills" ).autocomplete({
          source: 'search.php'
        });
      });
      </script>
    </head>
    <body>
    
    <div class="ui-widget">
      <label for="skills">Skills: </label>
      <input id="skills">
    </div>
    </body>
    </html>
    
    /////////////////////////////////////////////////////
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多