AJAX에서 DB 데이터 가져오기 문의 채택완료

안녕하세요~ 

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

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

 

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

 

우측에 이미지처럼 정상적으로 출력이 되야 하는데 좌측 이미지처럼 db의 데이터 값이 출력이 되지 않습니다.

 

list.skin.php //ajax로 아래와 같이 작성했습니다.

Copy
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 // 출력부분

Copy
<?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개

채택된 답변
+20 포인트

테이블을 search 이거로 하고 하나만 가져온다면
wr_id.ajax.php 파일 sql 수정 $thumb 수정 나머지 $_POST는 필요없어요.

여러개를 가져오려면 전반적으로 다 수정해야합니다.

for문도 들어가야하고 등등

Copy
$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']; ?> 처럼 필요값 넣으면되요.
로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

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

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

즐거운 주말되세요
보내는 값만 POST로 받으면되는거니깐요
나머진 받는쪽 디비에서 가져오니 wr_id만 있으면되는거죠

댓글을 작성하려면 로그인이 필요합니다.

wr_id.ajax.php 소스 안에서
$result = sql_query($sql);  ==> 바로 아래..

for ($i = 0; $row = sql_fetch_array($result); $i++) {     ==> 이걸 추가하시고요.

 

최 하단에

<?php

}

?>

를 추가해 보시겠어요..?

 

 

 

 

 

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

@하얀감자 알려주신 코드로 적용을 해봤는데 잘 안되었지만 제가 모르고 있었던 부분을 알려 주셔서 감사드립니다.
즐거운 주말 되세요

댓글을 작성하려면 로그인이 필요합니다.

전체적으로 다 잘못되신거 같네요

$sql 문도 하나만 가지고 와야 하는데 리스트를 가지고 오는 부분이고

$row가 없는데 $row를 쓰시고 있습니다.

일단 ajax 보낼때  bo_table를 보내야지 기본적으로 $board를 사용 하실 수 있습니다.

그리고 bo_table랑 wr_id를 보내면 $write 로 사용가능해서 따로 글 내용 가지고 오는 부분를 사용 안하시고 $row 로 되어 있는 부분은 $write로 변경하시면 사용이 가능 하실 겁니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

@블랙캣77 조언 감사드립니다. 제가 초보라 구체적으로 잘 이해를 못했었네요...ㅠㅠ
좋은 주말 되세요

댓글을 작성하려면 로그인이 필요합니다.

 

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로 호출하는 시점에 값을 넘기지 않기때문입니다.

Copy
$.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);
            }
        });

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 3개

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

[code]
$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']; //추가부분
[/code]

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

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

[code]
$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'];
}


[/code]
위의 주석의 내용을 잘 확인해보세요
@플래토 덕분에 몰랐던 부분을 하나더 배웠습니다. 감사합니다.
좋은 주말되세요

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인
🐛 버그신고