我正在研究一个代码,允许我在我的数据库中保存用户在查看页面上花费的时间,当他单击"关闭"按钮时,通过 AJAX 我在 php 页面上发布一些参数以插入到数据库 (Mysql)。
这是我的代码:
窗口.php(我正在查看的页面)
<?php $start_time = microtime(true);
?>
*page content*
<div align="center"><input type="button" value="Close" onclick="open()"></div>
<script language="javascript" type="text/javascript">
function open()
{
var start = <?php echo $start_time; ?>;
var end = <?php echo $end = microtime(true); ?>;
var uid = <?php echo $_SESSION['uid']; ?>;
var corso = <?php echo $_SESSION['cod']; ?>;
$.ajax({
url: "http://www.mysite.it/template/pages/save.php",
type: "POST",
data: "startt="+start+"&endt="+end+"&uid="+uid+"&corso="+corso,
success: function(){ // trigger when request was successfull
alert("Recorded!");
},
})
}
</script>
然后我的 php 脚本页面:
保存.php
<?php
require "connection.php";
$inizio = $_POST['startt'];
$fine = $_POST['endt'];
$uid = $_POST['uid'];
$corso = $_POST['corso'];
$duration = $fine-$inizio;
$hours = (int)($duration/60/60);
$minutes = (int)($duration/60)-$hours*60;
$seconds = (int)$duration-$hours*60*60-$minutes*60;
$stringa = ($hours .":" .$minutes .":" .$seconds);
$sql = "INSERT INTO visua (utente, corso, tempo)
VALUES ($stringa, $uid, $corso)";
$result = $link->mysql_query($sql);
if ($result) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $link->error;
}
$link->close();
?>
实际上无法理解为什么不起作用,即使AJAX的"成功"部分向我显示消息,但DB上没有新行
谢谢你的建议。
<script language="javascript" type="text/javascript">
function open()
{
var start = '<?php echo $start_time; ?>';
var end = '<?php echo $end = microtime(true); ?>';
var uid = '<?php echo $_SESSION['uid']; ?>';
var corso = '<?php echo $_SESSION['cod']; ?>';
$.ajax({
url: "http://www.mysite.it/template/pages/save.php",
type: "POST",
data: "startt="+start+"&endt="+end+"&uid="+uid+"&corso="+corso,
success: function(){ // trigger when request was successfull
alert("Recorded!");
},
})
}
</script>
<?php
require "connection.php";
$inizio = $_POST['startt'];
$fine = $_POST['endt'];
$uid = $_POST['uid'];
$corso = $_POST['corso'];
$duration = $fine-$inizio;
$hours = (int)($duration/60/60);
$minutes = (int)($duration/60)-$hours*60;
$seconds = (int)$duration-$hours*60*60-$minutes*60;
$stringa = ($hours .":" .$minutes .":" .$seconds);
$sql = "INSERT INTO visua (utente, corso, tempo)
VALUES ('$stringa', '$uid', '$corso')";
$result = $link->mysql_query($sql);
if ($result) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $link->error;
}
$link->close();
?>
也许它会起作用。在此之前,您需要检查 ajax 值或是否通过。
试试这段代码,
<script type="text/javascript">
function open(){
var start = '<?php echo $start_time; ?>';
var end = '<?php echo $end = microtime(true); ?>';
var uid = '<?php echo $_SESSION['uid']; ?>';
var corso = '<?php echo $_SESSION['cod']; ?>';
$.ajax({
url: "http://www.mysite.it/template/pages/save.php",
type: "POST",
data: {
startt : start,
endt : end,
uid : uid,
corso : corso
},
success: function(){ // trigger when request was successfull
alert("Recorded!");
}
});
}
</script>
另外,一个可以帮助您的逻辑问题。如果您需要计算用户关闭页面时的结束时间,请在 save.php 文件中计算结束时间为,
<?php
$fine = microtime(true);
//Also try including single-quote in your query for insert
$sql = "INSERT INTO visua (utente, corso, tempo) VALUES ('$stringa', '$uid', '$corso')";
?>
这将为您提供预期的结果。
希望这有帮助!!