我有一张名为Stats的表。统计数据有4列:id,ip,count和date。 count是ip点击我网站上广告的点击次数。每次用户点击广告时,其计数数量都会增加1.如何将计数增加1并在数据库中更新?这是我的代码,由于某种原因它不起作用。当我点击div时,它不会刷新...所以整个代码块都没有执行。请注意,我已经在用户输入我的网站时捕获了用户的IP,如果他们点击我的广告,则会在数据库中增加和更新计数。
<script>
$(document).ready(function()
{
$("#ad").click(function()
{
<?php
$queryTot = "SELECT `count` AS total FROM Stats WHERE ip = '$ip'";
$resultTot = $db->query($queryTot);
$data = $resultTot->fetch_assoc();
$count = $data["total"] + 1;
$insert = $db->prepare("UPDATE Stats(count) WHERE ip = '$ip' VALUES(?)");
$insert->bind_param('i', $count);
$insert->execute();
$insert->close();
?>
location.reload();
})
})
</script>
答案 0 :(得分:0)
你的答案中有很多要考虑的问题。
但很可能你应该使用AJAX解决方案来完成它,并避免HTML页面中的每个SQL查询,因为根据所有basic security and code maintenance POVs,保持SQL查询肯定不是一个好的实践。
在不知道您的项目结构,甚至是您的想法的情况下,无法正确地重新编写您的代码,您必须将此答案作为一个重要的起点。
基本上,您必须在服务器端应用程序中定义一个以JSON格式返回纯数据的方法,然后根据事件使用AJAX访问此方法(例如,单击) ,接收它的响应并修改你的客户端,可能使用jQuery和JS。
我希望这个答案可以帮到你。
答案 1 :(得分:0)
我为你写了一个简短的例子,你可以继续为实现你的需要而继续发展。这是基本的想法。
HTML
<input type="hidden" id="ip" value="<?php echo $_SERVER['REMOTE_ADDR'];?>"/>
的jQuery
var ip = $('#ip').val();
$(document).ready(function(){
$('#ad').on('click',function(){
$.ajax({
type: 'POST',
url: 'ajaxUpdateDatabase.php',
data: 'ip='+ ip,
success: function(response){
console.log(response)
//send the user to the ad's page here for example
//you could use location.href='url-to-add-here';
//or if you really want to reload the page for a reason I fail to understand, use location.reload();
}
});
});
});
PHP(ajaxUpdateDatabase.php)
//please note that using UPDATE requires that there is previously an entry with this IP address.
//example using PDO...
$sql = 'SELECT * FROM stats WHERE ip = ?';
$stmt = $pdo->prepare($sql);
$stmt->execute(array($_POST['ip']));
if($stmt -> rowCount() > 0){
$sql = 'UPDATE stats SET count = count + 1 WHERE ip = ?';
$stmt = $pdo->prepare($sql);
$stmt->execute(array($_POST['ip']));
}
else{
//ip-address was not found in the database
//insert query goes here
}