AJAX에서 DB 데이터 가져오기 문의

AJAX에서 DB 데이터 가져오기 문의

QA

AJAX에서 DB 데이터 가져오기 문의

답변 4

본문

안녕하세요~ 

ajax로 db에 있는 데이터를 출력하려고 합니다. 

이리저리 찾아보고 예제 코드로도 해봤는데 도저히 감이 오지 않아 이렇게 문의 드립니다.

 

661996078_1682095458.2798.png          661996078_1682095468.0309.png

 

우측에 이미지처럼 정상적으로 출력이 되야 하는데 좌측 이미지처럼 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']; ?> 처럼 필요값 넣으면되요.

우선 답변 감사드립니다.
조언해 주신대로 추가 변경해서 잘 적용되었습니다 감사합니다.

궁금한게 있는데요 ajax에서 post로 넘길경우 받는쪽에서도 $_POST를 선언해줘야 하는걸로 아는데 $_POST값이 없어도 되는 이유는 왜 그런건가요?

즐거운 주말되세요

 

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);
            }
        });

 

안녕하세요~
밤늦게 답변 주셔서 감사드립니다.
bo_table 은 g5_write_search 이므로 아래와 같이 수정하였으며,


$bo_table ="search"; 
$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'];
    }

$bo_table = $_POST['bo_table'];  //추가부분  


말씀하신 것처럼 ajax 부분에서 변수들을 다 대입을 해봐도 같은 현상이 생깁니다.
어떻게 해야 하면 되는지 도움좀 부탁드리겠습니다.



작성하신 내용은
$row를 얻어올곳이 없네요


$bo_table = $_POST['bo_table'];  //추가부분 //이게 위로 와야하고 없다면
// 아래내용으로 셋팅하거나 위엣부분이 필요없거나 해야 합니다. 
$bo_table ="search"; 

$sql = " select * from g5_write_".$bo_table." order by wr_id asc ";
$result = sql_query($sql);
// result까지는 생성하셨는데
// 하단에 $row에 필요한 내용을 가져오는 부분이 없습니다.
// 그리고,  select * from bo_table 이라고만 하면 모든 데이타를 전부 가져오는 사항이라서
// 테이블에 있는 전체 데이가 대상이 됩니다.
// wr_id 가 없이 전체라면
// ajax로 호출하는 호출부를 보면 wr_id가 있으므로
// 쿼리영역이 다음과 같이 수정되어야합니다.

$sql = " select * from g5_write_".$bo_table." where wr_id = '{$wr_id}' order by wr_id asc ";
//그리고 단일 데이타만 필요하기때문에

//$result도 다음과 같이 변경되어야합니다.
// $row = sql_fetch($sql); // 이전의 $result = sql_query($sql);이것은 필요가 없어집니다

//$board 의 정보가 잘 담겨져있다면 상관없고, 없다면 확인후 정상적인지 체크해보셔야 합니다.
// 그런데, include common 을 하기전에
// $bo_table정보가 존재해야 $board를 정상으로 가져올수있을겁니다.

$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.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로 변경하시면 사용이 가능 하실 겁니다.

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
filter #html ×
전체 1,125
© SIRSOFT
현재 페이지 제일 처음으로