Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在电子商务网站上添加“最近访问的产品”功能?_Php_Mysql_Web - Fatal编程技术网

Php 如何在电子商务网站上添加“最近访问的产品”功能?

Php 如何在电子商务网站上添加“最近访问的产品”功能?,php,mysql,web,Php,Mysql,Web,我在一家电子商务网站上工作,该网站销售各种产品。我想向用户显示用户最近浏览过的产品列表。你能帮我实现这个目标吗 我在Windows服务器上使用PHP、MySQL和Apache HTTP 谢谢 您可以使用数据库或cookie。即使在用户清除浏览器cookie后,此数据库方法仍将保持不变: 在数据库中创建一个表,如下所示: userid, productid, viewdate TIMESTAMP DEFAULT CURRENT_TIMESTAMP 每当访问者查看产品时,只需在数据库中插入一行,标

我在一家电子商务网站上工作,该网站销售各种产品。我想向用户显示用户最近浏览过的产品列表。你能帮我实现这个目标吗

我在Windows服务器上使用PHP、MySQL和Apache HTTP


谢谢

您可以使用数据库或cookie。即使在用户清除浏览器cookie后,此数据库方法仍将保持不变:

在数据库中创建一个表,如下所示:

userid,
productid,
viewdate TIMESTAMP DEFAULT CURRENT_TIMESTAMP
每当访问者查看产品时,只需在数据库中插入一行,标识用户、产品和访问时间戳

-- Insert
INSERT INTO recentlyviewed (userid, productid) VALUES (userid, productid);
下次用户加载页面时,您将检索他们查看的最近n个产品并显示它们。您可以定期运行计划作业,以清理比您选择的过期天数更早的视图记录

-- Cleanup old records after 14 days
DELETE FROM recentlyviewed WHERE viewdate < DATE_ADD(NOW(), INTERVAL -14 DAY);

有两种方法,我可以想到,这样做

您可以在cookie中存储他们查看过的产品。 您可以将其会话id存储在数据库中,然后将查看的产品存储在与会话id相关的数据库中。
我认为第二个选项更好,因为您可以使用此数据创建类似于Amazon的“查看此产品的人也查看此产品的人”

我将这样做,您可以创建如下表:

CREATE TABLE views(
id bigint not null auto_increment,
user_id bigint not null,
product_id bigint not null,
primary key(id)
)

每次用户查看产品时,您都会在此处保存用户id和产品id。然后,您可以使用一个简单的select查询获取用户查看过的最新10个产品,以及单个产品的查看计数。

您可以使用会话并保存用户的产品ID:会话\u开始$_会话['products'][=$current_product_id;您需要研究PHP中会话变量的使用。或者,您可以将IP与产品密钥的序列化数组存储在数据库中,不管它们是什么。这里没有人会为您编写代码,如果您希望有人这样做,请雇佣一名开发人员。我们在这里做的就是尝试并寻求帮助。只有当我们知道用户id,即登录用户时,这才有效。我们如何获取匿名用户最近查看过的产品?匿名用户访问并查找了一些产品,一周后再次访问商店。我可以显示这些产品。@Raaga您将为匿名用户存储一个cookie,其中包含会话id或最近查看列表中的某个标识符。最近查看的表不是userid,而是会话id或cookie令牌的列。它可能会在表中累积大量记录。如何克服这个问题。几天后我是否必须打扫桌子@Raaga按照与cookie过期相同的时间表清理表。如果您不能支持对最近查看的项目进行长期存储,请在30天或7天后使cookie过期,并根据cron计划相应地从表中删除行。