我想在不同的页面上显示随机图像,而无需在php中重复数据库

时间:2019-07-04 10:34:01

标签: php codeigniter

查看:

<?php
$bnrDone = createDynamicBanner();
if (count($bnrDone) === 1):
?>
    <div class="ads-dv under_search">
        <div class="container">
            <div class="row">
                <div class="inner_ads_sys">
                    <a href="<?php echo $bnrDone[0]['ad_url']?>">
                        <img  src="<?php echo base_url('assets/images/advertisements/'.$bnrDone[0]['ad_dp']); ?>" class="img-fluid" alt="<?php echo $bnrDone[0]['ad_title']?>">
                    </a>
                </div>
            </div>
        </div>
    </div>
<?php 
endif; 
?>

助手:

function createDynamicBanner()
{
    $CI = & get_instance();
    return $CI->db->distinct()
                  ->select('ad_id,ad_title,ad_url,ad_status,ad_dp')
                  ->order_by('rand()')
                  ->limit(1)
                  ->from('advertisements')
                  ->where('ad_status',1)
                  ->get()
                  ->result_array();
    //echo $CI->db->last_query();
}

现在令人惊讶的是,即使我排除了betwwen子句部分,我的愚蠢固执方法(或者说我)仍会为任何值返回1

1 个答案:

答案 0 :(得分:0)

想法1)您可以使用Singleton模式创建一个列出了所有图像的队列对象吗?然后,您对队列的调用将检索下一张图像。

想法2)另外,您可以通过创建第二个映像名称表将状态保存在DB中,该表每晚都会重新生成。该表可能有两列,[imageName]和[usedBy],您可以得到下一张图像,其中usedBy为false(null,0,无论如何)。您的图片获取方法必须将图片标记为页面的唯一ID使用的图片作为获取的一部分,当然,为了安全起见,也可能将其标记为SQL事务。

很大程度上取决于您的预期流量。