2

基本的に、このコードは、ユーザーがフォームに入力したデータをプルすることによって機能し、入力された情報に基づいてクエリ検索を実行するモデルに接続します。

このコードは機能しますが、$no フィールドと $first フィールドの両方を入力した場合にのみ機能します。しかし、ユーザーが $no を入力して他の変数を空のままにできるようにするには、それが必要です。

ある種の OR ステートメントを使用できると思いましたが、それを実装する方法がわかりません。コードイグナイターに関してはかなり新しいので、十分に明確でない場合はお詫び申し上げます。

コントローラ

    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; ?>
4

3 に答える 3

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);
  }
}
于 2012-12-02T21:56:51.863 に答える
0

例えば

if(strlen($no)>0 && strlen($first)>0){
   $data['query']=$this->test->query($no,$first);
}else{
   $data['query']=$this->test->query($no);//or $first
}
于 2012-12-02T21:57:47.910 に答える
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; ?>

この概念を使用すると、同じ機能をさまざまな場所で使用できます。例えば。2つの差分で検索機能を作成しました。検索用のパラメーターですが、デフォルトのパラメーターの概念を使用すると、同じ関数を使用して、1 つまたは両方のパラメーターを使用してデータベースを検索できます。

お役に立てば幸いです。:)

于 2014-07-07T07:30:19.103 に答える