0

抱歉,问题的标题有点令人困惑。基本上我想要的是:我正在开发一个专为发布广告而设计的 php 网站。用户可以支付一些钱,他们可以在网站上发布他们的广告。现在我要抽奖 6 个广告,即管理员将随机选择 6 个广告,他们将获得奖品。这些广告将2 months在管理员选择后在网站上显示。为此,我创建了一个页面,现在我正在使用查询显示来自数据库的 6 条随机记录:

"SELECT * FROM tbl_ad ORDER BY RAND() LIMIT 6"

这是给6随机广告。但是现在我想通过单击6将显示这些广告的方式在该页面上提供一个按钮。但此按钮可供管理员使用。他单击button & 6随机记录应显示在下方。一旦显示 6 条随机记录,它们就应该显示出来,直到管理员单击该按钮,并且这些记录应该显示给所有访问者。访客不应显示该按钮。(我知道该怎么做)。一旦通过单击该按钮从数据库中随机选择的页面上显示记录,则所选广告不应在页面刷新时更改。只有管​​理员可以更改随机记录,并且一旦他单击此按钮,这些广告应该一直显示,直到 & 除非管理员再次单击该按钮。

4

2 回答 2

1

你需要一个字段在你的tbl_ad被调用ordervisible类似的东西

id当管理员生成随机顺序时,您单击该按钮将每个广告的显示顺序和它们的显示顺序发送回数据库。

你可以把它作为一个数组发回

$adverts = array ();
$adverts['124'] = 1;
$adverts['20'] = 2;
$adverts['483'] = 3;
$adverts['36'] = 4;
$adverts['8'] = 5;
$adverts['655'] = 6;

$sql = "`UPDATE `tbl_ad` SET `live`='0'";
// run $sql to turn off all the adverts

foreach( $adverts as $key=>$val )
{
$key = (int)$key;
$val = (int)$val;
$sql = "UPDATE `tbl_ad` SET `live`='1', `order`='$val' WHERE `id`='$key'";
// run your $sql
}

或者如果您不关心广告的顺序,您可以像这样运行一个查询

$idarray = array();
foreach( $adverts as $key=>$val )
{
    $idarray[] = (int)$key;
}

$sql = "UPDATE `tbl_ad` SET `live`='1' WHERE `id` IN ( " . implode(',', $idarray) . " )";
// run your $sql

在这个例子中..键是id广告的,值是广告显示的顺序。

所以现在你给每个广告它们显示的顺序,我还建议有一个字段live,这样你就可以设置这 6 个。

在公共方面,你会这样称呼它:

SELECT * FROM tbl_ad WHERE `live`='1' ORDER BY `order` LIMIT 6
于 2013-10-05T09:52:32.773 回答
0

我的建议是用额外的一行标记这六个项目;像这样:

+------------------------------------------------------------+
|ID     advertiser    image_url      display_on_page  clicks |
+------------------------------------------------------------+
|1       Ellen      foo/bar.jpg        true            3     |
|2       Ann        foo/bar2.jpg       false           0     |
|3       Grace      foo/bar3.jpg       true            7     |
|4       Hellen     foo/bar4.jpg       false           1     |
|5       Isabella   foo/bar5.jpg       true            2     |
+------------------------------------------------------------+

然后在页面上,您必须选择要显示的标记项目。在上面的示例中,3 个项目被标记为显示。

于 2013-10-05T09:55:04.877 回答