2013-03-17 7 views
2

хранить возвращаемое значение из моей модели в $result:модели возвращаемое значение в CodeIgniter

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

Основываясь на том, что я вернуться в функции absensi(), значение $result будет один из них:

  • FALSE
  • 'sudah Absen' (строка)
  • 1 (что указывает на успех)

Тогда я стараюсь, чтобы увидеть значение $result с помощью echo $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').'! ^^'; 

Хотя значение $result - , второе, если ($result == 'sudah absen') всегда возвращается ИСТИНА.

Что здесь происходит спасибо: 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; 
    } 

ОТВЕТ: Отвечу здесь, потому что могут быть спутаны с большим количеством комментарии/разговор.

я понял, что происходит с помощью var_dump() и echo (Благодаря обоим ответам ниже):

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

В var_dump() возвращает bool(true) а echo возвращает 1. Это означает, что эта проблема произошла, потому что я думаю, что значение $result равно 1 (целое), а действительное значение - TRUE (bool).

Вывод: повторение переменной с значением TRUE (bool) приведет к 1 (целочисленному), поэтому используйте var_dump() вместо echo.

+1

@BlazeTama Я был прав с ответом кстати. http://stackoverflow.com/questions/5938221/string-compare-on-a-bool Чтобы убедиться, я задал другой вопрос: http://stackoverflow.com/questions/15462279/php-if-condition-with -boolean и получил downvoted, не понял вопрос был задан ранее. :( –

ответ

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); 
+0

-1 из-за моих аватарных волос ?? LOL – sbaaaang

+0

Нет, я был в процессе добавления комментария. На самом деле мне нравится ваш прическа (y). Вы делаете то же самое, что он делает, добавив фигурные скобки, это не поможет. Checking for! $ Result или FALSE оба одинаковы –

+0

Его не я, и я его поддержал: D Да, я знаю, что что-то вроде этого будет работать (играя с позицией, мне просто нужно переключить второе с 3-го), но что Я хочу объяснить, что происходит. Спасибо: D –

2

Вы уверены, что это происходит? вы уверены $result=1?

Мне трудно поверить. Вот fiddle выход в код

ваша функция возвращает true не 1

вы должны добавить else if($result === 'sudah absen') строго проверить результат.

+0

Как вы думаете, потому что я получаю значение (1) NOT из 'return 1;', но из codeigniter (из '$ this-> idb-> insert()')? Да, я очень уверен, я могу предоставить скриншот и полный код, если вы хотите: D –

+0

@BlazeTama см. edit. скрипка также. –

+0

@ro ko это не исправление $ result === 'sudah absen' он точно такой же, как и $ result == 'sudah absen ', быть серьезным;) – sbaaaang