0

提出されたものと同じタイトルとプラットフォームを持つゲームがデータベースにあるときはいつでも(dbに提出する前に)チェックしたいと思います。

私はこのコントローラーを持っています:

    public function addGame($id = null) { // ID is for children games
    $this->load->library(array('images','form_validation'));
    $this->load->helper('form');
    $this->load->model('contrib_model');

    $this->form_validation->set_rules('gameTitle', 'Tytuł gry', 'required|callback_checkGamePlatform');

    if($this->form_validation->run() == FALSE) {
        $data['title'] = 'Dodaj grę';
        $data['genres'] = $this->contrib_model->getGenres();
        $data['platforms'] = $this->contrib_model->getPlatforms();
        $data['developers'] = $this->contrib_model->getDevelopers();

        $this->template->load('template','theme/contribute/addGame',$data);
    } else {
        $data['submit'] = $this->contrib_model->insertGame();; //submits data
        $this->load->view('theme/contribute/emptyPage', $data); //loads view
    }
}

public function checkGamePlatform() {
    $platform = $this->input->post('gamePlatform');
    $game = $this->input->post('gameTitle');

    $q = $this->contrib_model->checkGame($game,$platform);
    echo $q;
    if($q === '0') {
        $this->form_validation->set_message('checkGamePlatform','gra istnieje');
    }
}

そしてこのモデル:

    function checkGame($name,$platform) {
    $q = $this->db->get_where('games',array(
        'name' => $name,
        'plat' => $platform
    ));

    return $q -> num_rows();

}

問題は、それがまったく機能しないことです。私が間違っていることは何ですか?

4

2 に答える 2

1

同じタイプのゲームがある場合は、エラーメッセージを返す必要があります。さらに、コールバックはブール値を返す必要があります。

checkGamePlatform

if ($q > 0) {
     $this->form_validation->set_message('checkGamePlatform','gra istnieje');
     return FALSE;
}
return TRUE;
于 2012-08-06T12:47:24.933 に答える
0

変化する

if($q === '0')

if($q === 0)

num_rows()文字列と比較している間、整数値を返すためです。

于 2012-08-06T12:42:21.410 に答える