특정 게시판 첨부파일 이미지 불러오기2
본문
게시판에 첨부파일로 업로드한 이미지를 메인 페이지에서 불러와 슬라이드하려고 하는데요
그누보드 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_banner
→ g5_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 답변입니다.