我目前正在尝试创建一个系统,我的网站用户可以在其中投票/投票。从本质上讲,我的方法是使用以下html
<form method='post'>
<input type='submit' name='up' value='up'>
<input type='submit' name='down' value='down'>
</form>
结合这个php:
<?php
if( isset($_POST['up']) ){
$con = mysqli_connect("localhost","user","password");
if (!$con)
{
die('Could not connect: ' . mysqli_connect_error());
}
$postid = "";
$userid = $_SERVER['REMOTE_ADDR'];
$query = "
INSERT INTO database.table (postid, ipaddress, vote) VALUES ('$postid', '$userid', '+1')";
mysqli_query($con, $query);
mysqli_close($con);
}
elseif( isset($_POST['down']) ){
$con = mysqli_connect("localhost","user","password");
if (!$con)
{
die('Could not connect: ' . mysqli_connect_error());
}
$postid = "";
$userid = $_SERVER['REMOTE_ADDR'];
$query = "
INSERT INTO database.table (postid, ipaddress, vote) VALUES ('$postid', '$userid', '-1')";
mysqli_query($con, $query);
mysqli_close($con);
}
?>
这在某种程度上有效。正如我所希望的那样,它会跟踪当前的投票数量。我想解决的问题是,每次按下向上/向下按钮 - 页面都会重新加载。如何防止这种情况发生,并使这个过程更加流畅?
提前感谢任何输入。
答案 0 :(得分:4)
我意识到你在问题的任何地方都没有提到jQuery,但是由于你无法用纯HTML + PHP做你想做的事情,我认为你迟早会求助于JS来实现这个效果。 jQuery非常适合这种情况:
HTML部分
<a class="voter" data-vote="up">Vote up</a>
<a class="voter" data-vote="down">Vote down</a>
jQuery部分(JSFiddle)
$(function(){
$('.voter').click(function(e){
e.preventDefault(); // prevent page reload
var voteType = $(this).data('vote');
$.post('/echo/json/', {
voteType: voteType
}, function(){
alert('You have voted');
});
});
});
PHP部分
$voteType = $_POST['voteType'];
switch($voteType){
case 'up':
// Do something
break;
case 'down':
// Do something else
break;
}