모바일 메인이미지 관련 질문입니다.

모바일 메인이미지 관련 질문입니다.

QA

모바일 메인이미지 관련 질문입니다.

본문

모바일일때의 메인베너 불러오는 코드가 아래인데요 메인 이미지를 2개 등록할 때는 두개다 보이는데요, 

하나만 등록하면 등록된 이미지가 않보입니다.

어디가 잘못된건가요?



<?php
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="'.G5_MSHOP_SKIN_URL.'/style.css">', 0);
?>
<?php
$max_width = $max_height = 0;
$bn_first_class = ' class="bn_first"';
//$bn_slide_btn = '';
$bn_sl = ' class="bn_sl"';
for ($i=0; $row=sql_fetch_array($result); $i++)
{
    if ($i==0) echo '<div id="main_bn" class="swipe">'.PHP_EOL.'<ul class="slide-wrap bn_img">'.PHP_EOL;
    //print_r2($row);
    // 테두리 있는지
    $bn_border  = ($row['bn_border']) ? ' class="sbn_border"' : '';;
    // 새창 띄우기인지
    $bn_new_win = ($row['bn_new_win']) ? ' target="_blank"' : '';
    $bimg = G5_DATA_PATH.'/banner/'.$row['bn_id'];
    if (file_exists($bimg))
    {
        $banner = '';
        $size = getimagesize($bimg);
        if($size[2] < 1 || $size[2] > 16)
            continue;
        if($max_width < $size[0])
            $max_width = $size[0];
        if($max_height < $size[1])
            $max_height = $size[1];
        echo '<li'.$bn_first_class.'>'.PHP_EOL;
        if ($row['bn_url'][0] == '#')
            $banner .= '<a href="'.$row['bn_url'].'">';
        else if ($row['bn_url'] && $row['bn_url'] != 'http://') {
            $banner .= '<a href="'.G5_SHOP_URL.'/bannerhit.php?bn_id='.$row['bn_id'].'&url='.urlencode($row['bn_url']).'"'.$bn_new_win.'>';
        }
        echo $banner.'<img src="'.G5_DATA_URL.'/banner/'.$row['bn_id'].'" width="'.$size[0].'" alt="'.$row['bn_alt'].'"'.$bn_border.'>';
        if($banner)
            echo '</a>'.PHP_EOL;
        echo '</li>'.PHP_EOL;
        $bn_first_class = '';
        //$bn_slide_btn .= '<button type="button"'.$bn_sl.'>'.$row['bn_alt'].' 이미지</button>'.PHP_EOL;
        $bn_sl = '';
    }
}
if ($i > 0) {
    echo '</ul>'.PHP_EOL;
    //echo '<div class="bn_silde_btn">'.$bn_slide_btn.'</div>'.PHP_EOL;
    echo '</div>'.PHP_EOL;
?>
<script>
$(function() {
    $("#main_bn").bannerSlide({
        wrap: ".slide-wrap",
        slides: ".slide-wrap > li",
        //buttons: ".bn_silde_btn > button",
        //btnActive: "bn_sl",
  continuous: true,
        startSlide: 0,
        auto: 6000
    });
});
</script>
<?php
}
?>

이 질문에 댓글 쓰기 :

답변 5

영카트 배너 스킨이네요.  올려주신 소스가 원본이랑 다르지 않네요...

제가 말씀드린건 다시 원복해 주세요.

소스 이상이 아니라 다른곳에 원인이 있을 수도 있을거 같습니다.

추측컨데 슬라이드 구현을 위해서는 최소 2개의 이미지가 있어야만 하는거 같습니다.

그래서 1개일 때 보이지 않을 수도 있습니다.

영카트는 자주 열어보지 못해 이 이상의 답변은 어려울거 같습니다.

이미지가 하나일때 $i = 0으로 끝이 나고 이후 if($i > 0)은 동작을 하지 않아 UL, DIV가 열린채로

끝나서 해당 스크립트가 동작하지 않을꺼 같습니다만... for문 끝나고 $i값 한번 확인해 보세요.

답변 감사합니다.


for문 끝나고 $i 값이 0보다 크면 아래와 같은 코드가 있습니다.

if ($i > 0) {
    echo '</ul>'.PHP_EOL;
    echo '</div>'.PHP_EOL;

문제는 메인이미지를 두개이상 등록하면 보인다는 점이죠^^;;
왜 하나일때는 않보이고 두개일때만 보이는지 그걸 몰라서요^^;

이미지가 1개일 때 for문이 끝나면 $i = 0

이미지가 2개일 때 for문이 끝나면 $i = 1

이렇게 되는거 아닌가요?

그러니 1개일때 밑에 if문은 동작을 안하게 되고

태그가 열린 상태로 끝나게 되어 원하시는 값이 나오지 않는거 같은데요.

답변 정말 감사합니다.

전 이미지가 하나일때 $i = 1인줄 알고 계속 보았습니다.^^;

그런데요 이미지가 하나일때 아래처럼 하면 0 보다 크거나 0 일때라는 조건이 성립되는거 아닌가요?

if ($i >= 0) {
    echo '</ul>'.PHP_EOL;
    echo '</div>'.PHP_EOL;

위처럼 해도 않되는데 왜이런건가요?
더운날 자꾸 덥게하는 것 같아 죄송합니다.

for문이 값이 없을 때는 동작을 안합니다.

만약 for문이 한번이라도 동작을 하면 즉 이미지가 1개라면

$i = 1 이 되야 for문이 끝난 다음 if문도 동작을 할껍니다.

for문 다음의 if가 문제가 아니라

for문을 변경 하셔야 합니다.

for($i = 1

그리고 for문 안에 if 도 $i == 1

이렇게 변경하고 한번 해 보세요.

11for ($i=1; $row=sql_fetch_array($result); $i++)
12{
13    if ($i==1) echo '<div id="main_bn" class="swipe">'.PHP_EOL.'<ul class="slide-wrap bn_img">'.PHP_EOL;


... 중간 생략


45if ($i > 0) {
46    echo '</ul>'.PHP_EOL;

말씀처럼 했는데 않되네요^^;

이전 말슴 해주신

이미지가 1개일 때 for문이 끝나면 $i = 0
이미지가 2개일 때 for문이 끝나면 $i = 1

$i가 1이면 두번째 이미지가 되는 것 아닌가요?

답변을 작성하시기 전에 로그인 해주세요.
전체 56
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT