2012-02-15 135 views
0

我为网站创建了横幅广告机制。横幅点击标签,网址等存储在MySQL数据库。目前,我只是从所有可用的横幅中获得随机横幅并将其显示在网站上。 但是,我怎样才能实现某种机制,使所有的横幅均匀显示,但随机顺序?从MySQL获取随机行(Flash横幅广告),均匀分配

回答

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_ 

的东西,应该是它

+0

谢谢,工作只是完美的:)! – fjckls 2012-02-15 14:24:14

+0

@fjckls酷,我很高兴它帮助 – mishu 2012-02-15 14:24:56

+1

+ 1为一个简单的解决方案。如果您想在一段时间后添加其他横幅:'插入横幅广告(banner_usages,...)VALUES((SELECT MIN(banner_usages)FROM banners),...)'以确保新广告不会赢得所有广告其他。 – 2014-01-22 00:27:09

0

添加计数器列到您的SQL表来跟踪有多少次,每次加已被查看并使用

SELECT ad_url FROM ads ORDER BY counter LIMIT 1; 

假设广告没有投放给一个用户以独占这似乎是随机的给用户,因为单个添加视图会影响下一个用户看到的内容,并保持平均分配。