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>

私が持っているもののアイデアを得ることができるように、私はラジオボタンを1つだけ投稿しました.

ページ上の Javascript は次のとおりです。

<script type="text/javascript">

$(document).ready(function() {

$('#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