我的搜索代码没有在codeigniter上输出任何结果

时间:2015-09-09 14:10:54

标签: php codeigniter search model-view-controller

请帮忙!!

我正在尝试搜索数据库以生成搜索查询的结果,但即使数据库中存在搜索的术语,它也不会输出任何结果

这是我的控制器

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <View
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:visibility="invisible" />

        <EditText
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="2" />

       <View
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:visibility="invisible" />

</LinearLayout>

这是我的模特

<?php 
if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 

class Search extends CI_Controller {
    public function __construct()
    {
        parent::__construct();
        $this->load->model("profile_model");
        $this->load->model("model_home");
    } 

    public function index(){
        $data = array();
        $search_term = $this->input->post('search');

        if($query = $this->model_home->car_search())
        {
            $data['car'] = $query;
        }
       $this->load->view('search_results', $data);
    }
}

我的搜索表单

public function car_search($search_term='default')
{
    $this->db->select('*');
    $this->db->like('car_make',$search_term);
    $this->db->or_like('car_model',$search_term);
    $this->db->or_like('car_year',$search_term);
    $this->db->or_like('registration_number',$search_term);
    $this->db->or_like('engine_number',$search_term);
    $this->db->or_like('chasis_number',$search_term);
    $query = $this->db->get('cars');
    return $query->result_array();
}

我的搜索结果页

<?php 
     echo form_open('search');
     echo form_input(array('name'=>'search'));
     echo form_submit('search_submit','submit');
?>

它总是输出“不工作”

1 个答案:

答案 0 :(得分:0)

这段代码有点混乱,如果整理一下,你会看到错误

您的代码没有<?php?>

<?php 
    $count = 1; 
    if(isset($car)) : 
        foreach($car as $row) { 
            $count++;
        }
        echo $row['car_make']
    else : 
        echo '<h1> Not working </h1>';
    endif; 
?>

所以你应该看到}在错误的地方结束foreach循环,现在很容易,所以把它改成

<?php 

    $count = 1; 
    if(isset($car)) : 
        foreach($car as $row) { 
            $count++;
            echo $row['car_make'];
         }                               //<-- moved this line
    else : 
        echo '<h1> Not working </h1>';
    endif; 
?>

当您收到Not Working消息时,我必须假设您查询数据库时出现问题。

可能是因为您没有将搜索字词传递给car_search方法调用。因此,尝试传递从POSTed数据中获得的参数。

public function index(){
    $data = array();

    if($query = $this->model_home->car_search($this->input->post('search'))) {
        $data['car'] = $query;
    }
   $this->load->view('search_results', $data);
}

您还应该查看car_search方法中使用的默认值,因为字符串'default'几乎肯定会导致查询无法返回结果。