【问题标题】:Show record from db only one time to user仅向用户显示一次来自数据库的记录
【发布时间】:2015-04-29 20:29:54
【问题描述】:

我只想向用户显示一次新记录。我知道可以通过使用cookies来实现,但是在这种情况下如何使用呢? 我在 $row 中有所有记录。

$con = mysqli_connect("localhost", "root", "", "dentistf_new_df");

if(mysqli_connect_errno()) {
    echo "Failed to connect to MySQL: ".mysqli_connect_error();
}

$query = mysqli_query($con, "SELECT * FROM wp_blog_posts order by ID desc ");



while($row = $query->fetch_assoc()) {


    if(in_array($row['ID'], $_COOKIE['blog_id _status'])) {
        do nothing...
    } else {
        echo $row['ID'];
        setcookie('blog_id _status', $row['ID']);
    }
}

【问题讨论】:

  • 你应该在数据库中添加访问过帖子的用户ID。

标签: php mysql cookies mysqli


【解决方案1】:

当您在一页上使用setcookie() 将数据设置为cookie 时,您可以在第二页执行此操作:

if(isset($_COOKIE['mydata'])) {
    echo $_COOKIE['mydata'];
    setcookie("mydata", "", time()-(60*60*24), "/"); // unsets cookie
}

不要使用 $_COOKIE['blog_id _status'] = ''; 为您的 cookie 设置值。

【讨论】:

  • 好的,但是在while循环中应该给出什么条件,这样我就可以只显示一次新记录
  • 为什么不能只在 MySQL 查询中添加条件?
  • 我无法在 mysql 查询中给出条件,因为其他用户可以看到相同的记录。我将其用于通知目的。意味着任何新的事情发生在桌子上
  • 那么,也许您应该创建两个查询?一种适用于所有用户,一种仅适用于特定用户?
【解决方案2】:

Cookie 不在您的控制范围内;用户可以随时删除它们,此时您将再次向他们显示他们以前看过的记录。

如果不了解有关您的数据的更多详细信息,很难提供准确的解决方案,但我建议记录在数据库中,该数据库记录了特定用户所看到的记录。
根据您的数据,您可能能够实现这一目标,例如通过为每条记录添加时间戳并将每个用户的“last_timestamp_shown”存储在单独的表中。然后,您必须扩展您的 SELECT 语句,使其仅包含时间戳比该特定用户的“last_timestamp_shown”更新的记录。

【讨论】:

    猜你喜欢
    • 2018-03-18
    • 2016-06-25
    • 1970-01-01
    • 1970-01-01
    • 2012-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多