我想将用户点击的点击次数与保存在数据库中的数据进行比较。 我不知道如何继续传递HTML“点击”的值来与PHP中的“计数”进行比较。
<html>
<script type="text/javascript">
var count = 0;
function countClicks()
{
count = count + 1;
document.getElementById("clicks").innerHTML = count;
}
</script>
<?php
if(empty($counts)){
?>
<script type="text/javascript">
alert("Count is empty!!");
</script>
<?php
} else {
$data = mysql_query("SELECT clicks FROM customerdetails WHERE customer_username='$username'");
$info = mysql_fetch_array($data);
//compare $data with the clicks
echo 'same!';
}
?>
<body>
<a href="javascript:countClicks();">Count Clicks</a>
<input type="button" onclick=countClicks() value="Click"/>
<p id="clicks">0</p>
</body>
</html>
答案 0 :(得分:2)
您正在以错误的方式使用PHP和Javascript。 PHP是一种服务器端语言。这意味着它在页面甚至加载到浏览器之前运行。
您必须创建一个javascript点击计数器并将其值放入隐藏的表单域。然后使用提交按钮将信息发送到服务器(PHP)。然后让PHP从数据库中进行检查和选择并返回答案。
另一个解决方案是使用javascript AJAX,但我建议先尝试上面的内容。
答案 1 :(得分:0)
最好的方法是进行Asynchronous JavaScript and XML调用(AJAX)。 PHP 是一种服务器端语言,在之前执行HTML(因此,在Javascript之前)构建并显示给浏览器。
因此, Javascript 与PHP交换变量和数据的唯一方法是进行AJAX调用(您可以随时使用表单提交或使用session variables和{重新加载页面{3}},但如果行动过于频繁,这不是最佳方式。
在AJAX中,您可以创建另一个PHP页面来检查这两个值并返回您想要的任何内容。响应可以存储在Javascript变量中,甚至存储在cookies中。
我建议您阅读有关AJAX的更多信息,并了解JSON。
编辑:在阅读完评论后,我决定在这里放一个简单的例子。
Javascript(在您的HTML页面中)
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
/*Here you should do what you want.
xmlhttp.responseText is the content of your PHP answer! */
var result = xmlhttp.responseText;
//I am parsing a JSON response, which is a specific, universal language
//To exchange data without losing formatting or anything else.
result = JSON.parse(result);
/* The we use the name of our PHP array key as a property
Here it is "response" (see PHP json_encode line) */
alert(result.response);
}
}
/* Change this URL for the PHP filename. we use the GET method to send data. */
/* You should always use the POST method when sending sensitive data */
xmlhttp.open("GET","getUserClicks.php?clicks="+count+"&username="+username,true);
xmlhttp.send();
PHP(这里是名为getUserClicks.php的文件)
<?php
if(!isset($_GET['username']) || !isset($_GET['clicks']))
die("Error");
$username = $_GET['username'];
$jsClicks = $_GET['clicks'];
$phpClicks = null;
#I am using the mysqli class to execute the query since mysql is deprecated in PHP5.
$data = mysqli_query("SELECT clicks FROM customerdetails WHERE customer_username='$username'");
while($row = mysqli_fetch_array($data))
{
$phpClicks = $row['clicks'];
}
#If your "IF" only contains one line, you don't need brackets.
#Otherwise they are needed.
if($phpClicks == null)
die("Could not get the number of clicks of the desired username");
#This is the string PHP will send to Javascript.
$response = "Same number of clicks!";
#If phpClicks is different and has the same type as jsClicks...
if($phpClicks !== $jsClicks)
{
$response = "Number of clicks changed!";
if($jsClicks > $phpClicks)
{
#Updates the number of clicks the user has done.
$mysqli_result = mysqli_query("UPDATE customerdetails SET clicks=$jsClicks WHERE customer_username='$username';");
}
}
echo json_encode(array('response'=>$response));
&GT;
如果你看到你不知道他们做了什么的功能或方法,请务必进行一些研究(例如:isset
)。