0

我为网站创建了横幅广告机制。横幅点击标签、url 等存储在 mysql 数据库中。目前,我只是从所有可用的随机横幅中获取并将其显示在网站上。但是我怎样才能实现某种机制,以便所有横幅都以随机顺序均匀显示?

4

2 回答 2

2

在您的横幅表中添加另一列,用于计算横幅的使用次数。假设您将其称为“banner_usages”。

我猜你正在使用选择获得随机横幅,按 rand() 函数排序并将结果数限制为 1。

因此,给定新列,您应该只添加一个新的排序字段,即新列,作为第一个使用

因此,如果您将使用使用次数升序对结果进行排序,那么您将获得一开始没有使用太多的结果。对于使用次数最少的那些,您将通过 rand() 对其进行排序,这样您就会得到这种效果。

所以你的查询应该是这样的:

SELECT * FROM `banners` ORDER BY banner_usages ASC, RAND() LIMIT 1

还记得在选择后立即更新使用次数。就像是

UPDATE `banners` SET `banner_usages` = `banner_usages` + 1 WHERE `banner_id` = _THE_ONE_YOU_JUST_GOT_

应该是这样

于 2012-02-15T11:56:13.677 回答
0

在您的 SQl 表中添加一个计数器列以跟踪每个添加已被查看和使用的次数

SELECT ad_url FROM ads ORDER BY counter LIMIT 1;

假设广告不是专门提供给一个用户,这对用户来说似乎是随机的,因为单个添加视图会影响下一个用户看到的内容,将保持平均分布。

于 2012-02-15T11:54:02.480 回答