对不起,这个问题的题目有点混乱。基本上我想要的是:我正在一个php网站上工作,这个网站是为发布广告而设计的。用户可以支付一些钱&他们可以在网站上张贴他们的广告。现在我想抽奖6个广告,也就是6个广告将由管理员随机选择&他们将得到奖品。这些广告将在网站上看到的2 months后,管理员选择他们。为此,我创建了一个页面,现在我正在使用查询显示数据库中的6个随机记录:
"SELECT * FROM tbl_ad ORDER BY RAND() LIMIT 6"
这是给6随机广告。但是现在我想在页面上给出一个按钮,点击将显示这些6广告的按钮。但是这个按钮可供管理员使用。他点击button & 6随机记录应该显示在下面。一旦显示了6个随机记录,就应该显示它们,直到管理员单击该按钮&这些记录应该显示给所有访问者。访客不应该显示那个按钮。(我知道怎么做)。在通过单击该按钮从数据库中随机选择的页面上显示记录后,所选广告不应在页面刷新时更改。只有管理员可以更改随机记录&一旦他点击这个按钮,这些广告应该一直显示,直到-除非管理员再次单击该按钮。
发布于 2013-10-05 09:52:32
您需要在tbl_ad中有一个名为order或visible之类的字段。
当管理员生成随机顺序时,单击该按钮将每个广告的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-05 09:55:04
我的建议是将这六项标记为额外一行,如下所示:
+------------------------------------------------------------+
|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个项被标记为要显示。
https://stackoverflow.com/questions/19196280
复制相似问题