2

モデルからの戻り値を次のように保存します$result

$result = $this->absensi_m->absensi();

関数で返すものに基づいてabsensi()、の値は$result次のいずれかになります。

  • 間違い
  • 'sudah absen' (文字列)
  • 1 (成功を示す)

$result次に、使用して値を確認しようとすると、 1echo $result;が返されます

$resultしかし、いくつかの検証に使用しようとすると、奇妙なエラーが発生します:

        if($result == FALSE)
            $data['result'] = 'Anda Belum Terdaftar, Silahkan Daftar Dahulu :D';
        else if($result == 'sudah absen')
            $data['result'] = 'Anda Sudah Absen Hari Ini :D';
        else 
            $data['result'] = 'Selamat Datang, '.$this->input->post('txtNama').'! ^^';

の値 $result1ですが、2 番目の if( $result == 'sudah absen') は常にTRUEを返します。

ここで何が起こっているのですか?ありがとう:D

これはabsensi()私のモデルの関数です:

public function absensi() {
        $nama = $this->input->post('txtNama');
        $tanggal = date('Y-m-d', now());

        $this->db->select('umat_id');
        $terdaftar = $this->db->get_where('msumat', array('nama' => $nama));

        $row = $terdaftar->row_array();
        $sudah_absen = $this->db->get_where('msabsensi', array('umat_id' => $row['umat_id'], 'absensi_tanggal' => $tanggal));

        if($terdaftar->num_rows() != 0 && $sudah_absen->num_rows() == 0)
        {
            $data_umat = array(
            'umat_id' => $row['umat_id'],
            'status' => 'H',
            'absensi_tanggal' => date('Y-m-d')
            );

            return $this->db->insert('msabsensi', $data_umat);
        }
        else if($sudah_absen->num_rows() != 0)
            return 'sudah absen';
        else
            return FALSE;
    }

ANSWER : たくさんのコメントや会話で混乱するかもしれないので、ここでお答えします。

var_dump()andを使用して何が起こっているのかを理解しましたecho以下の両方の回答に感謝します):

$result = $this->absensi_m->absensi();
var_dump($result);
echo $result;

は1をvar_dump()返します。これは、実際の値が TRUE(bool) であるのに、値が 1(integer) であると考えるために、この問題が発生したことを意味します。bool(true)echo$result

結論は次のとおりです。変数を TRUE(bool) 値でエコーすると 1(整数) になるため、 のvar_dump()代わりに を使用しechoます。

4

2 に答える 2

4

最初に戻ることはできません:

return $this->db->insert('msabsensi', $data_umat);

これを行う:

 $this->db->insert('msabsensi', $data_umat);
 return ...-> 1 or true or what you need

次に、次のことを行う必要があります。

if(!$result){
            $data['result'] = 'Anda Belum Terdaftar, Silahkan Daftar Dahulu :D';
        }
    if($result == 'sudah absen'){
            $data['result'] = 'Anda Sudah Absen Hari Ini :D';
         }
       if($result && $result !== 'sudah absen'){
            $data['result'] = 'Selamat Datang, '.$this->input->post('txtNama').'! ^^';
          }

次に、使用var_dump();して結果を確認します。

var_dump($result);
于 2013-03-17T14:16:01.447 に答える
2

これが起こっていると確信していますか?よろしいですか$result=1

信じがたい。コードへのフィドル出力は次のとおりです

trueあなたの関数はnotを返します1

else if($result === 'sudah absen')結果を厳密にチェックするために追加する必要があります。

于 2013-03-17T14:15:53.753 に答える