【发布时间】:2011-07-09 18:55:38
【问题描述】:
我正在制作一个简单的投票器,它接受“喜欢”或“不喜欢”的投票。然后,我计算喜欢和不喜欢的总数并输出总数。我想出了如何使用 Jquery Ajax 进行投票,但是投票后投票数不会更新。我想使用 Jquery Ajax 更新 $numlike 和 $numdislike 变量。
这是与输出相关的 PHP 脚本:
$like = mysql_query("SELECT * FROM voter WHERE likes = 1 ");
$numlike = 0;
while($row = mysql_fetch_assoc($like)){
$numlike++;
}
$dislike = mysql_query("SELECT * FROM voter WHERE likes = 0 ");
$numdislike = 0;
while($row = mysql_fetch_assoc($dislike)){
$numdislike++;
}
echo "$numlike like";
echo "<br>";
echo "$numdislike dislike";
更新: 用于上传投票的 Jquery Ajax
<script>
$(document).ready(function(){
$("#voter").submit(function() {
var like = $('#like').attr('value');
var dislike = $('#dislike').attr('value');
$.ajax({
type: "POST",
url: "vote.php",
data: "like=" + like +"& dislike="+ dislike,
success: submitFinished
});
function submitFinished( response ) {
response = $.trim( response );
if ( response == "success" ) {
jAlert("Thanks for voting!", "Thank you!");
}
return false;
});
});
</script>
<form id="voter" method="post">
<input type='image' name='like' id='like' value='like' src='like.png'/>
<input type='image' name='dislike' id='dislike' value='dislike' src='dislike.png'/>
</form>
投票.php:
if ($_POST['like'])
{
$likeqry = "INSERT INTO test VALUES('','1')";
mysql_query($likeqry) or die(mysql_error());
echo "success";
}
if ($_POST['dislike'])
{
$dislikeqry = "INSERT INTO test VALUES('','0')";
mysql_query($dislikeqry) or die(mysql_error());
echo "success";
}
【问题讨论】:
-
请告诉我这段代码是个玩笑。您正在使用最低效的行数计数方式。在结果集上使用
mysql_num_rows()效率会很低,但是您的代码在每一行上迭代会更糟。无论如何,使用SELECT COUNT(*) FROM然后使用mysql_result($resultset, 0, 0)来获取行数。 -
^ SELECT COUNT(*) FROM voter WHERE like=0 会好很多
-
select like, count(*) from voter group by like 会更好:一个查询同时获得喜欢和不喜欢
-
发送投票的 javascript 代码和读取投票并将其放入数据库的 PHP 代码在哪里?