我正在处理 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 但数据库中没有更新。
任何建议都会有所帮助。再次感谢。