0

如果它的批准= 1,我想展示一个广告。我正在使用的是这个代码;

$query = $db->query("SELECT * FROM ads WHERE approved = '1'");
$ad = $db->fetch_array($query);

if (advert_available())
{
    for($id=1; $id < 4+1; ++$id)
    {
        if ($ad['spot_id'] == $id)
        {
            // Approved ad
            $ads = '<td width="25%" valgn="middle" align="center"><a href="'.htmlspecialchars_uni($ad['link']).'" target=_blank><img src="'.htmlspecialchars_uni($ad['image']).'" alt="" title="" width="285px" height="114px" class="advert_image"></a></td>';
        }
        else
        {
            // If ad is not approved, show default <td>
            $ads = '<td width="25%" valgn="middle" align="center"><a href="misc.php?action=buy_ad&amp;spot_id='.$id.'"><img src="images/xf/ads1.gif" alt="Ad Spot" title="Click here to reserve this ad spot."></a></td>';
        }
        $ads_spot_bit .= $ads;
    }

    $ads_spot = '
        <table border="0" class="tborder">
            <tr>
                '.$ads_spot_bit.'
            </tr>
        </table>
    ';
}

但问题是,它只显示一个已批准的广告,但有 2 个已批准的广告!我在这里缺少什么?

顺便说一句,我正在使用 for 循环来显示 4 个广告位。

4

2 回答 2

1

您已提出以下条件

 if ($ad['spot_id'] == $id)

可能有 2 个可能的活动广告,但来自数据库的 spot_id 可能与 for 循环中的 $id 列不匹配。

于 2013-09-19T09:14:19.767 回答
0

您需要在循环中获取结果。尝试这样的事情

while( $ad = $db->fetch_array($query) ){
  //do your processing
}
于 2013-09-19T07:26:11.510 回答