PHP 查看计数器

标签 php mysql view counter

我正在尝试创建一个网站,它几乎已完成,但我想添加一个 View 计数器,以便当有人访问该页面时,它会计算 View 并将其保存到数据库中。 我的脚本工作正常,但问题是即使访问者正在查看任何其他页面,它也会继续查看计数

我的页面网址显示如下 pictures.php?ID=13

我已在 *count.php* 中添加了此 PHP 代码

<?php
session_start();
if (isset($_SESSION['views'])){
    $_SESSION['views']++;
    } else {
        $_SESSION['views'] =0;
        }
        //echo $_SESSION['views'];


?>

页面*views.php*

<?php
session_start();
if (isset($_SESSION['$post_id'])){
    $_SESSION['$post_id']++;
    } else {
        $_SESSION['$post_id'] =0;
        }
        //echo $_SESSION['views'];


?>

<?php
    echo "<hr><div align=\"center\">";



    echo $_SESSION['$post_id'];
    ?>

    <?php
    $save = $_SESSION['$post_id'];

$con=mysqli_connect("localhost","root","123","user");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

mysqli_query($con,"UPDATE save_data SET Views='$save' WHERE ID='$page_id'");

mysqli_close($con);
?> 

并在 Pictures.php 中添加了这一行,我想在其中显示和统计访问次数

<?php  include("views.php"); ?>

问题:

当有人访问页面 pictures.php?ID=8 时,它会向他显示页面 view 1 并将此 View 保存在 ID=8 的数据库中,当他访问页面时pictures.php?ID=12 它将向他显示 View 2 并将此 2 保存在 ID=12 的数据库中。我的观点是,它是连续计数的,而不是每次页面浏览量。

提前致谢

这是 Pictures.php

<?php 
include("connection.php");

if(isset($_GET['ID'])){

$page_id = $_GET['ID'];

    $select_query = "select * from save_data where ID='$page_id'";

$run_query = mysql_query($select_query);

while($row=mysql_fetch_array($run_query)){

    $post_id = $row['ID']; 
    $post_title = $row['Title'];
    $post_image = $row['Name'];



?>

<h3>
<a href="pictures.php?ID=<?php echo $post_id; ?>">

<?php echo $post_title; ?>

</a>

</h3><center>
<form id="search-form" action="javascript:void(0);">
<input type="text" id="dimen" name="dimension" />
<input type="submit" value="Resize" Onclick ="splitString()"/></form>
<div id="sizet">
Type size like 200*300 in box
</div></center>

<div id="img"><img id="myImage" src="uploads/<?php echo $post_image; ?>"  /></div>



<?php } }?>
<center>
<div id="postdetails">
<?php  include("posted_by.php"); ?></center>
</div>
<?php  include("views.php"); ?>
<html>
<link href="css/Pictures.css" rel="stylesheet" type="text/css">
<body>
<head>
<script type="text/javascript">
function splitString()
{
var myDimen=document.getElementById("dimen").value;
var splitDimen = myDimen.split("*");
document.getElementById("myImage").width=splitDimen[0];
document.getElementById("myImage").height=splitDimen[1];
}
</script>
</head>

</body>

最佳答案

单引号内的变量不会被求值,因此无论 $post_id 是 8 还是 12,$_SESSION['$post_id'] 都会设置名为的键字面意思是 $post_id,而不是名为 128 的键。变量在双引号内计算,因此 $_SESSION["$post_id"] 可以工作,但最简单和最好的方法是使用 $_SESSION[$post_id] 代替。

此外,在这里使用 $_SESSION 可能不是您想要做的。 $_SESSION 对于访问该网站的每个用户来说都是不同的,因此当新访问者访问该网站时,它将从计数 1 重新开始。您可能想要做的是从数据库加载 View 值,添加一个到它,然后将其保存回数据库。 $_SESSION 用于保存特定于某个用户的数据。

关于PHP 查看计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20316391/

相关文章:

javascript - onmouseover 显示添加购物车按钮和折扣图像

php - MySQL echo 具有相同 session ID 的记录数

ios - View 重新出现时刷新表内容

php - 在 IIS7 上使用 web.config 删除 .php 扩展名

php - 如何用其他单词替换以@@ 开头并以@@ 结尾的文本中的单词?

php - MySql - PHP 更新

sql - 连接查询返回空结果,意外结果

MySQL JOIN 查询出现 COUNT 个意外结果

mysql View 性能与额外列的比较

java - Android 中的 Snackbar View 因背景图像而受到影响