특정 게시판 첨부파일 이미지 불러오기2

특정 게시판 첨부파일 이미지 불러오기2

QA

특정 게시판 첨부파일 이미지 불러오기2

그누보드5(영카트) 버전

5.6.10

본문

게시판에 첨부파일로 업로드한 이미지를 메인 페이지에서 불러와 슬라이드하려고 하는데요
그누보드 5 테마를 사용하고 있습니다.

게시판(banner) 분류(MAIN_MID)에 첨부파일로 이미지를 업로드 하였는데 메인 페이지에서 이미지가 출력이 되지 않네요.(음.... while()문이 문제인거지....)

그누보드 4 에서는 잘 사용하고 있는 소스입니다.(소스의  g4 을 -> G5로 변경함)

어떤 문제가 있는지 고수님들의 조언 부탁합니다.

 

--------------------------------------소소---------------------------------------------------

<?php

    include_once("./_common.php");

 

    $sql = " select * from G5_write_banner where ca_name='MAIN_MID' AND wr_is_comment = 0 ";

    $result = sql_query($sql, false);

 

?>

 

<!DOCTYPE html>

<html>

<head>

<style type='text/css'>

    body {

        margin:0;

    }

    #slidebox {

        position:relative;

        width:310px;

        height:130px;

        overflow:hidden;

        white-space:nowrap;

        border:0px solid #000;

    }

    #slidebox ul#slider {

        list-style:none;

        margin:0;

        padding:0;

    }

    #slidebox ul li {

        position:absolute;

        width:310px;

        height:130px;

    }

    #slidebox ul li img {

        width:310px;

        height:130px;

    }

</style>

<body>

222

    <div id="slidebox">

        <ul id="slider">

           

<?php

    $i=0;

    while ($row = sql_fetch_array($result))

    {

        $sql2 = " select * from G5_board_file where bo_table='banner' and wr_id=$row[wr_id] ";

        $result2 = sql_query($sql2, false);

        $row2=sql_fetch_array($result2);

?>

            <li>

             <a href="<?=$row[wr_link1]?>" target="_blank"><img src="<?=$G5['path']?>/data/file/banner/<?=$row2[bf_file]?>" border="0"></a>

            </li>

<?php

    }  

?>

        </ul>

    </div>

    <script type='text/javascript'>

        var y = 130;

        var slider = document.getElementById("slider");

        var slideArray = slider.getElementsByTagName("li");

        var slideMax = slideArray.length - 1;

        var curSlideNo = 0;

 

        for (i = 0; i <= slideMax; i++) {

            if (i == curSlideNo) slideArray[i].style.top = 0;

            else slideArray[i].style.top = -y + "px";

        }

 

        slider.addEventListener('click', function () {

            changeSlide();

        }, false);

 

        var aniStart = false;

        var next = 1;

        var changeSlide = function(){

            if (aniStart === true) return;

            next = curSlideNo + 1;

            if (next > slideMax) next = 0;

            aniStart = true;

            sliding();

        }

 

        function sliding() {

            var curY = parseInt(slideArray[curSlideNo].style.top, 10);

            var nextY = parseInt(slideArray[next].style.top, 10);

            var newCurY = curY + 10;

            var newNextY = nextY + 10;

            if (newCurY >= y) {

                slideArray[curSlideNo].style.top = -y + "px";

                slideArray[next].style.top = 0;

                curSlideNo = curSlideNo + 1;

                if (curSlideNo > slideMax) curSlideNo = 0;

                aniStart = false;

                return;

            }

            slideArray[curSlideNo].style.top = newCurY + "px";

            slideArray[next].style.top = newNextY + "px";

            setTimeout(function () {

                sliding();

            }, 20);

        }

        setInterval(changeSlide,2000);

    </script>

 

</body>

</html>

이 질문에 댓글 쓰기 :

답변 1

코드를 확인해보니, 이미지가 출력되지 않는 몇 가지 가능성이 있습니다.

? 문제 가능성 & 해결 방법

1️⃣ SQL 테이블 문제

  • G5_write_banner 테이블은 그누보드의 게시판 테이블이 아니라 g5_write_테이블이름 형태입니다.
  • 따라서 G5_write_banner가 아니라 g5_write_banner 로 확인해야 합니다.

수정 예제

$sql = " SELECT * FROM g5_write_banner WHERE ca_name='MAIN_MID' AND wr_is_comment = 0 ";

2️⃣ 파일 테이블 조회 문제

  • G5_board_file 테이블을 사용할 때 bo_table='banner' 조건이 맞는지 확인해야 합니다.
  • wr_id=$row[wr_id] 부분에서 $row['wr_id']처럼 문자열 키를 정확히 사용하세요.

수정 예제

$sql2 = "SELECT * FROM g5_board_file WHERE bo_table='banner' AND wr_id='{$row['wr_id']}' ";

3️⃣ 이미지 경로 문제

  • 이미지 경로가 잘못되었을 가능성이 큽니다.
  • <?=$G5['path']?>/data/file/banner/<?=$row2[bf_file]?> 이렇게 되어 있는데,
    • <?=$G5['data_url']?>/file/banner/<?=$row2['bf_file']?> 로 변경해 보세요.

수정 예제

<img src="<?=$G5['data_url']?>/file/banner/<?=$row2['bf_file']?>" border="0">

이미지 경로 확인하는 방법 코드 상단에 echo 문을 추가하여 실제 경로를 확인하세요.

echo $G5['data_url'] . "/file/banner/" . $row2['bf_file'];
  • 이 출력된 경로를 브라우저에서 직접 열어서 이미지가 표시되는지 확인하세요.

4️⃣ SQL 실행 오류 확인

  • sql_query($sql, false);에서 false를 넣으면 오류가 발생해도 확인할 수 없습니다.
  • sql_error()를 사용하여 SQL 오류를 출력해 보세요.

SQL 오류 확인 코드

$result = sql_query($sql);
if (!$result) {
    die('Query Error: ' . sql_error());
}

✨ 최종 수정 코드

<?php
include_once("./_common.php");

$sql = "SELECT * FROM g5_write_banner WHERE ca_name='MAIN_MID' AND wr_is_comment = 0";
$result = sql_query($sql);

if (!$result) {
    die('Query Error: ' . sql_error());
}
?>

<!DOCTYPE html>
<html>
<head>
<style type='text/css'>
    body { margin: 0; }
    #slidebox {
        position: relative;
        width: 310px;
        height: 130px;
        overflow: hidden;
        white-space: nowrap;
        border: 0px solid #000;
    }
    #slidebox ul#slider {
        list-style: none;
        margin: 0;
        padding: 0;
    }
    #slidebox ul li {
        position: absolute;
        width: 310px;
        height: 130px;
    }
    #slidebox ul li img {
        width: 310px;
        height: 130px;
    }
</style>
</head>
<body>

<div id="slidebox">
    <ul id="slider">

<?php
$i = 0;
while ($row = sql_fetch_array($result)) {
    $sql2 = "SELECT * FROM g5_board_file WHERE bo_table='banner' AND wr_id='{$row['wr_id']}'";
    $result2 = sql_query($sql2);
    $row2 = sql_fetch_array($result2);

    // 이미지 경로 확인
    $img_src = $G5['data_url'] . "/file/banner/" . $row2['bf_file'];
    echo "<li><a href='{$row['wr_link1']}' target='_blank'><img src='$img_src' border='0'></a></li>";
}
?>

    </ul>
</div>

<script type='text/javascript'>
    var y = 130;
    var slider = document.getElementById("slider");
    var slideArray = slider.getElementsByTagName("li");
    var slideMax = slideArray.length - 1;
    var curSlideNo = 0;

    for (var i = 0; i <= slideMax; i++) {
        if (i == curSlideNo) slideArray[i].style.top = "0px";
        else slideArray[i].style.top = -y + "px";
    }

    function changeSlide() {
        var next = curSlideNo + 1;
        if (next > slideMax) next = 0;

        slideArray[curSlideNo].style.top = -y + "px";
        slideArray[next].style.top = "0px";

        curSlideNo = next;
    }

    setInterval(changeSlide, 2000);
</script>

</body>
</html>

최종 정리

G5_write_bannerg5_write_banner 수정
G5_board_file 조회 시 bo_table='banner'wr_id 올바르게 사용
$row2[bf_file]$row2['bf_file'] 로 변경
✔ 이미지 경로는 $G5['data_url'] . "/file/banner/" . $row2['bf_file']로 사용
sql_error()를 이용해 SQL 오류 확인

이제 수정된 코드로 다시 테스트해보세요! ??

 

chatgpt 답변입니다.

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

회원로그인

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