0

我正在处理 zend 框架中的一个小部件,我无法获取单选按钮值来更新数据库。有人可以帮忙吗。也许有人看到了我没有看到的东西。

提前致谢。

这是广播 html 的示例:

<div class="vote_block">
<form class="data_form">
    <ul class="input_radio_group">
    <li>
        <input id="mediaRating1" class="radioBtnClass" type="radio" title="Poor" value=".1" name="rating">
        <label class="label_radio">Poor</label>
        <div class="clear"></div>
    </li>
  </ul>
  <button id="rateVoteButton" class="button"><span><?php echo $this->translator('send_button'); ?></span></button>
  </form>

我只发布了一个单选按钮,因此您可以了解我所拥有的。

这是页面上的Javascript:

<script type="text/javascript">

$(文档).ready(函数() {

$('#rateVoteButton').click(function() {
        var rating = Array();
        $(this).parents('.rating_block').find('li input').each(function() {
            if ($(this).attr('checked') == true) {
                rating.push($(this).attr('value'));
        });
        if (rating.length > 0) {
            var data = $.toJSON({
                'set_id': '<?php echo $this->set->set_id; ?>', 
                'rating': '<?php # echo $this->rating; ?>'
            });
        }
    }
});

});

现在像控制器一样的小部件页面:

    protected function _prepareShow() 
{
    $setId  = $this->_request->getParam('set_id');
    $rating = $this->_request->getParam('rating');

    $conn = XXX_Db_Connection::factory()->getSlaveConnection();
    $setDao = XXX_Model_Dao_Factory::getInstance()->setModule('media')->getSetDao();
    $setDao->setDbConnection($conn);

    $data = Zend_Json::encode(array('set_id' => $setId, 'rating' => $rating));

    $this->_view->assign('rating', $rating);
    $this->_view->assign('data', $data);
}

protected function _prepareResult() 
{
    $setId = $this->_request->getParam('set_id');
    $rating = $this->_request->getParam('rating');

    $conn = XXX_Db_Connection::factory()->getMasterConnection();
    $setDao = XXX_Model_Dao_Factory::getInstance()->setModule('media')->getSetDao();
    $setDao->setDbConnection($conn);


    $setDao->increaseRating($rating);




    $data = Zend_Json::encode(array('set_id' => $setId, 'rating' => $rating));

    $this->_view->assign('rating', $rating);
    $this->_view->assign('data', $data);
}

最后但并非最不重要的是 sql 语句:

    public function increaseRating($rating)
{
    $sql = sprintf("UPDATE " . $this->_prefix . "media_set
                    SET rating = rating + '%s'
                    WHERE set_id = '%s'",
                    mysql_real_escape_string($rating->rating),
                    mysql_real_escape_string($rating->set_id));
    mysql_query($sql);
    return mysql_affected_rows();
}

当一个收音机被选中并且你点击按钮时,我在地址栏中的链接后得到一个 ?rating=.1 但数据库中没有更新。

任何建议都会有所帮助。再次感谢。

4

0 回答 0