이미지를 랜덤으로 출력하고 싶습니다.
본문
php 초보입니다
아래 소스에서 이미지출력을 램덤으로 출력을 하려면 소스 어느 부분을 어떻게 수정을 해야 하는지요?
<div id="side_right">
<ul class="side_banner">
<?php foreach ($banner_data[2] as $banner) { if ((int) $banner['banner_expire_time'] > 0 && (int) $banner['banner_expire_time'] < time()) { continue; } ?>
<li>
<?php if (!empty($banner['banner_link'])) { ?>
<a href="<?php echo (empty($banner['banner_link'])) ? '' : $banner['banner_link']; ?>" target="_blank">
<?php } ?>
<img src="<?php echo G5_DATA_URL, '/', basename(BANNER_FILEPATH), '/', $banner['banner_filename']; ?>" />
<?php if (!empty($banner['banner_link'])) { ?>
</a>
<?php } ?>
</li>
<?php } ?>
</ul>
</div>
답변 4
<?php
shuffle(
$banner_data); foreach
(
$banner_data
[2]
as
$banner
) {
달콤별님 감사합니다.
알려주신 소스로 적용하니
Warning: Invalid argument supplied for foreach()
이런 에러가 출력이 됩니다.
그 오류는 배너의 구조 즉 $banner_data 가 shuffle 되기 전과 후가 달라서 생긴 오류일겁니다 :-)
print_r2 함수로 전 / 후를 비교해보세요
키워드를 보니 '그누보드5'로 되어있네요. 일단 영카트5를 기준으로 말씀드리겠습니다.
제경우는 php소스보다는 그냥 편하게...lib. 를 수정해서 사용했습니다.
무식한방법이긴 합니다.. 참고만 해보십시요.^^
영카트5 경우
/lib/shop.lib.php
안에
...........
...........
// 배너출력
function display_banner($position, $skin='')
.......
// 배너 출력
$sql = " select * from {$g5['g5_shop_banner_table']} where '".G5_TIME_YMDHIS."' between bn_begin_time and bn_end_time $sql_device and bn_position = '$position' order by bn_order, bn_id desc ";
이렇게 있을겁니다.
order by bn_order,bn_id desc ---> order by rand()
로 변경하시면 불러올때 랜덤으로 처리될것입니다.
단점이라면 사이트내의모든 배너함수가 랜덤으로 가져올겁니다만.
방법중에 하나라 소개해드렸습니다..^^