Codeigniter - 具有多个参数的搜索表单

时间:2012-12-02 21:49:52

标签: php codeigniter

基本上,该代码通过在表单中​​提取用户输入的数据来起作用,并且连接到基于输入的信息执行查询搜索的模型。

此代码有效,但仅当我输入$ no和$ first字段时才有效。但我需要它才能工作,这样用户就可以输入$ no并将其他变量留空。

我以为我可以使用某种OR语句,但我不确定如何实现它。任何帮助将不胜感激,如果它不够清楚,我会道歉,当涉及到codeigniter时我是相当新的。

控制器

    public function query()

{

    $no = $this->input->post('no');
    $first = $this->input->post('first');
    $this->load->model("test");
         $data['query']=$this->test->query($no,$first);
        $this->load->view('query',$data);

}

模型

function query($no, $first)
{

 return $query = $this->db->get_where('table', array('no' => $no,
 'first' => $first ))->result();

}

查看

<?php foreach($query as $row): ?>
<tr> 
    <td><?php echo $row->no; ?></td>
    <td><?php echo $row->date; ?></td>
    <td><?php echo $row->first; ?></td>


    </tr>
    <?php endforeach; ?>

3 个答案:

答案 0 :(得分:2)

如何只跳过未提供的参数?

function query($no, $first)
{
  $where = array();

  if ($no != '') $where['no'] = $no;
  if ($first != '') $where['first'] = $first;

  if (empty($where))
  {
    return array(); // ... or NULL
  }
  else
  {
    return $query = $this->db->get_where('table', $where);
  }
}

答案 1 :(得分:0)

例如

if(strlen($no)>0 && strlen($first)>0){
   $data['query']=$this->test->query($no,$first);
}else{
   $data['query']=$this->test->query($no);//or $first
}

答案 2 :(得分:0)

您也可以使用默认参数概念。可以检查用户是否传递了这两个参数,因此你可以调用模型并发送参数。

考虑你的例子,我正在编写代码:

控制器

public function query()
{

$no = $this->input->post('no');
if($this->input->post('first'))
  $first = $this->input->post('first');
$this->load->model("test");
if($first != '')
  $data['query']=$this->test->query($no,$first);
else
  $data['query']=$this->test->query($no);
$this->load->view('query',$data);
}

模型

function query($no, $first = null)
{

 return $query = $this->db->get_where('table', array('no' => $no,
 'first' => $first ))->result();

}

查看

<?php foreach($query as $row): ?>
<tr> <td><?php echo $row->no; ?></td>
    <td><?php echo $row->date; ?></td>
    <td><?php echo $row->first; ?></td>
</tr>
<?php endforeach; ?>

使用此概念,您可以在不同的地方使用相同的功能。 例如。你用两个差异搜索功能。用于搜索但使用默认参数概念的参数,您可以使用相同的函数来搜索带有一个或两个参数的数据库。

我希望我能帮到你! :)