1

重複した ip_address が現在のページにとどまるか、何らかのメッセージを表示する場合は、フォームの検証を追加したいと考えています。

これはモデルコードです

  public function add_vote($option_id)
    {
        $this->db->insert($this->votes_table, array(
            'option_id' => $option_id,
            'ip_address' => $this->input->ip_address(),
            'timestamp' => time()
        ));

        return ($this->db->affected_rows() == 1) ? TRUE : FALSE;
    }

これがコントローラーです

public function vote($poll_id, $option_id)
    {
        if ( ! $this->poll_lib->vote($poll_id, $option_id))
        {
            $data['base_styles'] = 'public_html/res/css/base.css';
            $data['title'] = 'Sorry an error occured';
            $data['error_message'] = $this->poll_lib->get_errors();
            $this->load->view('header');
            $this->load->view('www/posts/postclose', $data);
        }
        else
        {
            redirect('posts', 'refresh');
        }
    }

新しい投票を追加すると、列が重複しているためデータベースエラーが表示されるので、それを表示したくないので、他のページにリダイレクトする場合は、現在のページにとどまるか、ポップアップメッセージが表示されれば素晴らしいでしょう。

4

1 に答える 1

0

データベースに挿入する前にチェックを行います。

public function add_vote($option_id)
    {   
        $query = $this->db->get_where($this->votes_table, array('ip_address' => $this->input->ip_address()));

        if($query->num_rows() < 1)

        {    $this->db->insert($this->votes_table, array(
                'option_id' => $option_id,
                'ip_address' => $this->input->ip_address(),
                'timestamp' => time()
             ));

             return "Successfully Inserted";
        }else{
               return "Duplicate";
              } 
    }

コントローラーで応答を処理し、それに応じて表示します

于 2013-06-04T05:11:02.523 に答える