对不起,问题的标题有点令人困惑。基本上我想要的是:我正在开发一个专为发布广告而设计的 php 网站。用户可以支付一些钱,他们可以在网站上发布他们的广告。现在我想抽奖 6 个广告,即管理员将随机选择 6 个广告,他们将获得奖品。管理员选择这些广告后,它们将在网站上显示2 months
。 为此,我创建了一个页面,现在我正在使用查询显示数据库中的 6 条随机记录:
"SELECT * FROM tbl_ad ORDER BY RAND() LIMIT 6"
这给了6
随机广告。但是现在我想通过单击该按钮在该页面上提供一个按钮,单击该按钮将显示这些6
广告。但此按钮可供管理员使用。他点击下面应该显示button & 6
随机记录。一旦显示 6 条随机记录,它们应该显示,直到管理员单击该按钮,这些记录应显示给所有访问者。访客不应显示该按钮。(我知道该怎么做(。 通过点击该按钮,记录显示在从数据库中随机选择的网页上后,所选广告不会在页面刷新时更改。只有管理员可以更改随机记录,一旦他点击此按钮,这些广告应该一直显示,直到和除非管理员再次点击该按钮。
在你的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
我的建议是用额外的一行标记这六个项目; 所以像这样:
+------------------------------------------------------------+
|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 个项目以显示。