基本上,该代码通过在表单中提取用户输入的数据来起作用,并且连接到基于输入的信息执行查询搜索的模型。
此代码有效,但仅当我输入$ 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; ?>
答案 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; ?>
使用此概念,您可以在不同的地方使用相同的功能。 例如。你用两个差异搜索功能。用于搜索但使用默认参数概念的参数,您可以使用相同的函数来搜索带有一个或两个参数的数据库。
我希望我能帮到你! :)