0

ユーザーが投票時にオプションを選択すると、データベース内のオプションの値をインクリメントしようとしています。エラーは発生していませんが、データベースが更新されていません。私は何を間違っていますか?

私のコントローラーで:

public function vote($option_id)
{
    $this->load->helper('form');
    $this->load->library('form_validation');

    $this->form_validation->set_rules('options', 'required');

    if ($this->form_validation->run() === FALSE)
    {

        $this->load->helper('html');
        $data['content'] = $this->load->view('user/vote','', TRUE);
        $this->load->view('templates/master', $data);
    }
    else{

        $checkedoption = intval($_POST['options']);
        $optionid = $this->polls_model->get_option($option_id);
        $this->polls_model->set_votes($checkedoption, $option_id);
        $this->load->helper('html');
        $data['content'] = $this->load->view('user/success','', TRUE);
        $this->load->view('templates/master', $data);

    }


} 

私のモデルでは、次のような関数があります。

//this gets the id of the option to vote on
    function get_option($option_id)
    {
        $query = $this->db->get_where('pollOption', array('option_id'=>$option_id));
        return $query->row_array();       
    }

// THis updates the vount_count column in the database:
        public function set_votes($checkedoption, $option_id)
        {

            $this->db->where('option_id', $checkedoption);
            $this->db->set('vote_count', 'vote_count+1', FALSE);
            $this->db->update('pollOption');

        }

そして私の見解では、私はこれを持っています:

$poll_id = $polls_item['id'];

$query = $this->db->get_where('pollOption', array('poll_id' => $poll_id));
$queryResult = $query->result_array();?>

<html>
    <head>

<script type="text/javascript" src="<?php echo base_url();?>js/jquery.js"></script>      
</head>

<body>
<?php echo form_open('user/vote/' .$poll_id); 

foreach ($queryResult as $row):?>

<input type="radio" name="options" value = "<?php echo $row['option_item'];?>" > <?php echo $row['option_item'];?> <br>

<?php endforeach;?>

<input type="submit" name="submit_vote" value="Vote">

<?php echo form_close(); ?>

ありがとうございました。

4

2 に答える 2

0

クエリを手動で実行してみましたか?

echo $this->db->last_query();では、手動クエリと CodeIgniter が行っていることを比較してみましたか?

または、値を選択して変数に代入し、PHP でインクリメントして、$this->db->set('vote_count', $incremented_value);

于 2012-10-06T03:24:05.383 に答える
0

変更してみてください

  $this->db->set('vote_count', 'vote_count+1', FALSE);

  $this->db->set('vote_count = vote_count + 1');
于 2012-10-06T05:40:49.530 に答える