테스트 사이트 - 개발 중인 베타 버전입니다

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

웹메이킹 2년 전 조회 7,317

안녕하세요~ 

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

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

 

          

 

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

 

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

</p>

<p>function wm_click_view(map, marker, wr_id) {</p>

<p>    $(".wrap").remove();</p>

<p>    var overlay = new daum.maps.CustomOverlay({</p>

<p>    content: '<div class="wrap"></div>',</p>

<p>    map: map,</p>

<p>    position: marker.getPosition()      </p>

<p>});</p>

<p>    overlay.setMap(map);</p>

<p>    $.ajax({</p>

<p>            url: g5_url+"/wr_id.ajax.php",</p>

<p>            type: "POST",</p>

<p>            data: {</p>

<p>                "wr_id": wr_id,</p>

<p>            },</p>

<p>            dataType: "html",</p>

<p>            success: function(data) {</p>

<p>                $('.wrap').html(data);</p>

<p>            }</p>

<p>        });</p>

<p>}</p>

<p>

 

wr_id.ajax.php // 출력부분

</p>

<p><?php</p>

<p>include_once './_common.php';</p>

<p>include_once(G5_LIB_PATH.'/thumbnail.lib.php');</p>

<p> </p>

<p>$sql = " select * from g5_write_".$bo_table." order by wr_id asc ";</p>

<p>$result = sql_query($sql);</p>

<p> </p>

<p>$thumb = get_list_thumbnail($board['bo_table'], $row['wr_id'], $board['bo_gallery_width'], $board['bo_gallery_height'], false, true);</p>

<p>    if($thumb['src']) {</p>

<p>       $img_content = $thumb['src'];</p>

<p>    }</p>

<p> </p>

<p>$wr_id = $_POST['wr_id'];</p>

<p>$wr_subject = $_POST['wr_subject'];</p>

<p>$thumb = $_POST['img_content'];</p>

<p>$wr_3 = $_POST['wr_3'];</p>

<p>$wr_4 = $_POST['wr_4'];</p>

<p>$wr_link1 = $_POST['wr_link1'];</p>

<p>?></p>

<p> </p>

<p><div class="info"></p>

<p>   <div class="title"><?php echo $row['wr_subject']; ?><div class="close" onclick="closeOverlay()" title="닫기"></div></p>

<p></div>    </p>

<p>          <div class="body"></p>

<p>              <div class="img"></p>

<p>                  <?php if($thumb['src']) { ?><img src="<?php echo $img_content ?>" width="75" height="73"></p>

<p>                  <?php } ?></p>

<p>             </div></p>

<p>             <div class="desc"></p>

<p>                 <div class="ellipsis"><?php echo $row['wr_3']; ?></div></p>

<p>                 <div class="jibun ellipsis"><?php echo $row['wr_4']; ?></div></p>

<p>                 <div><a href="<?php echo $row['wr_link1']; ?>" target="_blank" class="link">홈페이지</a></div></p>

<p>             </div></p>

<p>         </div></p>

<p></div></p>

<p>

 

위 코드처럼 했을때 출력을 해보면 html 부분은 정상적으로 출력이됩니다.

문제는 db의 데이터를 가져오지 못하고 list.skin.php 에 데이터값이 출력이 되지 않고 있습니다.

어디에 문제가 있는걸까요?

 

고수님들의 조언 부탁드리겠습니다.

즐거운 주말 되세요~^^

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

답변 4개

채택된 답변
+20 포인트

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

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

for문도 들어가야하고 등등

$wr_id = $_POST['wr_id'];</p>

<p>$bo_table ="search"; 

$sql = " select * from g5_write_".$bo_table." where wr_id = '$wr_id' ";

$row = sql_fetch($sql);</p>

<p>$thumb = get_list_thumbnail($bo_table, $row['wr_id'], 200, 200, false, true);

나머지 출력 부분은 <?php echo $row['wr_subject']; ?> 처럼 필요값 넣으면되요.

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

답변에 대한 댓글 2개

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

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

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

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

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

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

 

최 하단에

<?php

}

?>

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

 

 

 

 

 

 

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

답변에 대한 댓글 1개

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

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

2년 전

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

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

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

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

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

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

답변에 대한 댓글 1개

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

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

플래토
2년 전

 

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

</p>

<pre>
<code>$.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);
            }
        });</code></pre>

<p><code>

 

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

답변에 대한 댓글 3개

웹메이킹
2년 전
@플래토 안녕하세요~
밤늦게 답변 주셔서 감사드립니다.
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 부분에서 변수들을 다 대입을 해봐도 같은 현상이 생깁니다.
어떻게 해야 하면 되는지 도움좀 부탁드리겠습니다.
플래토
2년 전
@웹메이킹

작성하신 내용은
$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]
위의 주석의 내용을 잘 확인해보세요
웹메이킹
2년 전
@플래토 덕분에 몰랐던 부분을 하나더 배웠습니다. 감사합니다.
좋은 주말되세요

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

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

로그인