이미지를 랜덤으로 출력하고 싶습니다. 채택완료

php 초보입니다
아래 소스에서 이미지출력을 램덤으로 출력을 하려면 소스 어느 부분을 어떻게 수정을 해야 하는지요?

Copy
<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개

채택된 답변
+20 포인트
<?php shuffle($banner_data); foreach($banner_data[2] as$banner) {
로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

키워드를 보니 '그누보드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()

로 변경하시면 불러올때 랜덤으로 처리될것입니다.

단점이라면 사이트내의모든 배너함수가  랜덤으로 가져올겁니다만.

방법중에 하나라 소개해드렸습니다..^^

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

그 오류는 배너의 구조 즉 $banner_data 가 shuffle 되기 전과 후가 달라서 생긴 오류일겁니다 :-)

print_r2 함수로 전 / 후를 비교해보세요 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

달콤별님 감사합니다.

알려주신 소스로 적용하니

Warning: Invalid argument supplied for foreach()

이런 에러가 출력이 됩니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인
🐛 버그신고