AJAX에서 DB 데이터 가져오기 문의
본문
안녕하세요~
ajax로 db에 있는 데이터를 출력하려고 합니다.
이리저리 찾아보고 예제 코드로도 해봤는데 도저히 감이 오지 않아 이렇게 문의 드립니다.
우측에 이미지처럼 정상적으로 출력이 되야 하는데 좌측 이미지처럼 db의 데이터 값이 출력이 되지 않습니다.
list.skin.php //ajax로 아래와 같이 작성했습니다.
function wm_click_view(map, marker, wr_id) {
$(".wrap").remove();
var overlay = new daum.maps.CustomOverlay({
content: '<div class="wrap"></div>',
map: map,
position: marker.getPosition()
});
overlay.setMap(map);
$.ajax({
url: g5_url+"/wr_id.ajax.php",
type: "POST",
data: {
"wr_id": wr_id,
},
dataType: "html",
success: function(data) {
$('.wrap').html(data);
}
});
}
wr_id.ajax.php // 출력부분
<?php
include_once './_common.php';
include_once(G5_LIB_PATH.'/thumbnail.lib.php');
$sql = " select * from g5_write_".$bo_table." order by wr_id asc ";
$result = sql_query($sql);
$thumb = get_list_thumbnail($board['bo_table'], $row['wr_id'], $board['bo_gallery_width'], $board['bo_gallery_height'], false, true);
if($thumb['src']) {
$img_content = $thumb['src'];
}
$wr_id = $_POST['wr_id'];
$wr_subject = $_POST['wr_subject'];
$thumb = $_POST['img_content'];
$wr_3 = $_POST['wr_3'];
$wr_4 = $_POST['wr_4'];
$wr_link1 = $_POST['wr_link1'];
?>
<div class="info">
<div class="title"><?php echo $row['wr_subject']; ?><div class="close" onclick="closeOverlay()" title="닫기"></div>
</div>
<div class="body">
<div class="img">
<?php if($thumb['src']) { ?><img src="<?php echo $img_content ?>" width="75" height="73">
<?php } ?>
</div>
<div class="desc">
<div class="ellipsis"><?php echo $row['wr_3']; ?></div>
<div class="jibun ellipsis"><?php echo $row['wr_4']; ?></div>
<div><a href="<?php echo $row['wr_link1']; ?>" target="_blank" class="link">홈페이지</a></div>
</div>
</div>
</div>
위 코드처럼 했을때 출력을 해보면 html 부분은 정상적으로 출력이됩니다.
문제는 db의 데이터를 가져오지 못하고 list.skin.php 에 데이터값이 출력이 되지 않고 있습니다.
어디에 문제가 있는걸까요?
고수님들의 조언 부탁드리겠습니다.
즐거운 주말 되세요~^^
!-->!-->답변 4
테이블을 search 이거로 하고 하나만 가져온다면
wr_id.ajax.php 파일 sql 수정 $thumb 수정 나머지 $_POST는 필요없어요.
여러개를 가져오려면 전반적으로 다 수정해야합니다.
for문도 들어가야하고 등등
$wr_id = $_POST['wr_id'];
$bo_table ="search";
$sql = " select * from g5_write_".$bo_table." where wr_id = '$wr_id' ";
$row = sql_fetch($sql);
$thumb = get_list_thumbnail($bo_table, $row['wr_id'], 200, 200, false, true);
나머지 출력 부분은 <?php echo $row['wr_subject']; ?> 처럼 필요값 넣으면되요. !-->
wr_id.ajax.php // 출력부분
위 파일에서 누락된 부분이 있습니다.
바로 $bo_table을 알수없다는점과
$wr_id = $_POST['wr_id'];
$wr_subject = $_POST['wr_subject'];
$thumb = $_POST['img_content'];
$wr_3 = $_POST['wr_3'];
$wr_4 = $_POST['wr_4'];
$wr_link1 = $_POST['wr_link1'];
이중에서
wr_id를 제외하고는 알수없습니다.
왜냐면..
상단 ajax로 호출하는 시점에 값을 넘기지 않기때문입니다.
$.ajax({
url: g5_url+"/wr_id.ajax.php",
type: "POST",
data: {
"wr_id": wr_id, // 여기에 wr_id만 있네요
// ajax파일이 전달받을 bo_table과 위의 대입할 변수들을 다 javascript상에서 인식후 호출할대상으로 넘기시고 다시 확인해보세요
},
dataType: "html",
success: function(data) {
$('.wrap').html(data);
}
});
!-->
wr_id.ajax.php 소스 안에서
$result = sql_query($sql); ==> 바로 아래..
for ($i = 0; $row = sql_fetch_array($result); $i++) { ==> 이걸 추가하시고요.
최 하단에
<?php
}
?>
를 추가해 보시겠어요..?
전체적으로 다 잘못되신거 같네요
$sql 문도 하나만 가지고 와야 하는데 리스트를 가지고 오는 부분이고
$row가 없는데 $row를 쓰시고 있습니다.
일단 ajax 보낼때 bo_table를 보내야지 기본적으로 $board를 사용 하실 수 있습니다.
그리고 bo_table랑 wr_id를 보내면 $write 로 사용가능해서 따로 글 내용 가지고 오는 부분를 사용 안하시고 $row 로 되어 있는 부분은 $write로 변경하시면 사용이 가능 하실 겁니다.