私はこの問題に何時間も苦労しています。私はこのメソッドを私のモデル(codeigniter)に持っています:
public function get_umat($kelas1 = 0, $kelas2 = 0) {
$this->db->select('*');
$this->db->from('msumat');
$this->db->join('mskelas', 'msumat.kelas_id = mskelas.kelas_id');
if($kelas1 != 0)
{
echo $kelas1;
var_dump($kelas1);
$this->db->where('mskelas.kelas_id', $kelas1);
}
else if($kelas2 !=0)
{
echo '2';
$this->db->where('mskelas.kelas_id', $kelas2);
}
else if($kelas1 != 0 && $kelas2 !=0)
{
echo '3';
$this->db->where('mskelas.kelas_id BETWEEN $kelas1 AND $kelas2');
}
return $this->db->get();
}
編集:機能していない ものは、このコード行にあります(上から取得):
$this->db->where('mskelas.kelas_id', $kelas1);
次のように、コントローラーでこのメソッドを呼び出したときに機能しませんでした。
$this->backend_m->get_umat($_POST['ddl_kelas1'], $_POST['ddl_kelas1']);
vardumpすると「1」(文字列)が表示されます($_POST['ddl_kelas1']
次に、コントローラーのパラメーターを変更しようとしましたが、それでも機能しません:
$this->backend_m->get_umat(1, $_POST['ddl_kelas1']);
必死に、私はモデルで直接パラメータを変更しようとしました、そしてその動作:
public function get_umat($kelas1 = 1, $kelas2 = 0)
ここで何が起こっているのでしょうか?1(int)と「1」(String)の違いと関係があると思います。ありがとう
編集2:いくつかの実験の後、変数型はここでは問題ではないと思います。それは:私は自分のコントローラーでこれをやろうとしたからです:
if(isset($_POST['btnSearch']))
{
$test = (int)$_POST['ddl_kelas1'];
$this->backend_m->get_umat($_POST['ddl_kelas1'] , $_POST['ddl_kelas1']);
}
そしてこれは私のモデルでは:
if((int)$kelas1 != 0)
{
echo $kelas1;
var_dump($kelas1);
$this->db->where('mskelas.kelas_id', $kelas1);
}
私が得たのは、これ$kelas1
はすでにintですが、コードはまだ機能していません。私はそれが$_POST
私select
のHTMLの何か、または何か他のものと関係があると思います:D
ただし、このコードはまだ完全に機能しています(上記のように、パラメーターを手動で1(整数)に変更しました):
public function get_umat($kelas1 = 1, $kelas2 = 0)
これは私の完全なコントローラーコードです:
public function index() {
//table
$data_umat = $this->backend_m->get_umat()->result();
$this->table->set_heading(
'No',
'Nama',
'Kelas',
'Alamat',
'Sekolah',
'Nomor Telepon',
'Keterangan'
);
$table_template = array('table_open' => '<table border="1" id="custom_table">');
$this->table->set_template($table_template);
$no = 1;
foreach($data_umat as $list_temp)
{
$this->table->add_row(
$no++,
$list_temp->nama,
$list_temp->kelas,
$list_temp->alamat,
$list_temp->sekolah,
$list_temp->no_tlpn,
$list_temp->keterangan
);
}
$data_kelas = $this->backend_m->get_kelas()->result();
$data['list_kelas'][0] = 'Pilih Kelas';
foreach($data_kelas as $row)
{
$data['list_kelas'][$row->kelas_id] = $row->kelas;
}
$data['table'] = $this->table->generate();
$this->load->view('backend/home_v', $data);
if(isset($_POST['btnSearch']))
{
//$test = (int)$_POST['ddl_kelas1'];
$test = (int)$this->input->post('ddl_kelas1');
$this->backend_m->get_umat($test , $_POST['ddl_kelas1'], $_POST['txtNama']);
}
}
かなり紛らわしいですよね?
同じ問題を抱えている人への簡単な回答コントローラーではなく、モデルで
使用$_POST
または$this->input->post()
モデルで使用します。したがって、モデルのメソッドを呼び出す必要はありません。