그누어린이입니다. 아죠씨들에게 질문 좀 드릴게요~ 채택완료
도움으로 거의 정상까지 왔습니다. 그런데 한가지가 막힙니다. 흑흑
1.버튼을 누르면 모달창띄우고 select까지는 했습니다.
2.문제는 모달창스킨은 하나만 쓰는데 select구문중에
sending_idx in ('1')
버튼값이 1~10까지 있는데 갈호안의 숫자를 버튼누를때 ajax로 보내서
아래코드식으로
$list = array(); $result = sql_query("SELECT wr_name, wr_id, g5_sending WHERE sending_idx in ('1') and `wr_id` = $write[wr_id] order by wr_datetime "); for($i=0;$row = sql_fetch_array($result);$i++){ $list[] = $row; }
?>
이상태에서는 sending_idx에 1값이 있는 데이터 잘 출력되는데요
이걸
$list = array(); $sending_idx = $_POST['sending_idx']; $result = sql_query("SELECT wr_name, wr_id, g5_sending WHERE sending_idx in ('{$sending_idx}') and `wr_id` = $write[wr_id] order by wr_datetime "); for($i=0;$row = sql_fetch_array($result);$i++){ $list[] = $row; }
?>
이렇게 변수로 해보려하니 안되네요..도움기다려봅니다..그누어린이가 뭘하려니 아주 어려버요,,흑흑
버튼 누르는 값에 따라 3, 7, 6 등 ajax로 잘 가는지 console에는 잘 표시됩니다.
말하자면 버튼1~10중 해당버튼 누를때 모달창에는 sending_idx in ('해당숫자')
가 있는 데이터만 뿌려주고 싶다는 것입니다.
답변 1개
$sending_idx = $_POST['sending_idx']; $result = sql_query("SELECT wr_name, wr_id, g5_sending WHERE sending_idx in ('{$sending_idx}') and `wr_id` = $write[wr_id] order by wr_datetime ");
두문장만 보고 이야기를 드리면
문제가 있어보입니다.
$_POST['sending_idx'];
여기에 넘어가는값이
숫자 1개면 상관이 없지만
멀티의 값 3,7,6 과 같이 , 가 포함된 값이라면
위의 내용은 작동하지 않습니다.
왜냐면
WHERE sending_idx in ('{$sending_idx}')
의 구조라서 그렇습니다. 3,7,6 일때
위 문장을 DB에서 적용되는 코드는
WHERE sending_idx in ('3,7,6') 으로 인식됩니다.
'3,7,6' 의 값은 , 와 무관하게
문자열이 됩니다
즉, 3,7,6의 값을 갖는 문자열이라는 의미이고
sending_idx에 ,를 포함한 값이 없다면 절대 나올수 없어보입니다.
sending_idx가 int값을 갖는다면
더더욱 오류입니다.
따라서 (db 컬럼의 유형을 알수없기에 추측이지만)
WHERE sending_idx in ('{$sending_idx}')
는
WHERE sending_idx in ({$sending_idx})
가 되어야 정상작동하지 않을까 생각됩니다.
물론, 넘겨주는값이 3,7,6 이라는 구조의 멀티값이나 3 과 같은 숫자이고 sending_idx가 int값과 같은 구조일때를 적용해보세요
답변에 대한 댓글 5개
위와같이 안되시면 $_GET으로 받아 보시거나
$_REQUEST['sending_idx'] 로 받으시는게 좀더 확인이 수월합니다.
<script>
$(document).on("click", ".create-user", function () {
var wr_id = $('#wr_id_<?php echo $write['wr_id'] ?>').val();
var bo_table = $('#bo_table_<?php echo $write['bo_table'] ?>').val();
var sending_idx = $('#sending_idx_<?php echo $write['wr_id'] ?>').val();
$.ajax({
url: "<?php echo $board_skin_url?>/modal/sending_history.php",
type: "POST",
data: {
"wr_id": wr_id,
"bo_table": bo_table,
"sending_idx": sending_idx
},
dataType: "text",
async: false,
cache: false,
success: function(data, textStatus) {
console.log(sending_idx);
$( "#sending_history" ).load("<?php echo $board_skin_url?>/modal/sending_history.php");
}
});
});
</script>
ajax는 이상없는거 같은데요.
아래에 디비값이 안나오고 표 제목만 나올까요?
그래서 이 php를 주소창에서 바로 실행해도 안나오네요..흑흑
변수로 안하고 원래코드로
WHERE sending_idx in (1) 이렇게 해도 안나오고요
<?php
@include_once('../../../../common.php');
?>
<?php
$list = array();
$sending_idx = $_REQUEST['sending_idx'] ;
$result = sql_query("SELECT wr_name, wr_id from g5_re_sending WHERE sending_idx in ({$sending_idx}) and `wr_id` = $write[wr_id] order by wr_datetime ");
for($i=0;$row = sql_fetch_array($result);$i++){
$list[] = $row;
}
?>
<table id="users" class="ui-widget ui-widget-content">
<thead>
<tr class="ui-widget-header ">
<th>이름</th>
<th>wr_id</th>
<th>수정</th>
</tr>
</thead>
<tbody>
<?php
for ($i=0; $i<count($list); $i++) {
?>
<tr>
<td class="tg-0lax"><?php echo $list[$i][wr_name]?></td>
<td class="tg-0lax"><?php echo $list[$i]['sending_idx'] ?></td>
<td class="tg-0lax"><a class="btn btn2" onclick="update_<?php echo $write['wr_id'] ?>();">수정</a> </td>
</tr>
<?php } ?>
자세히 판단은 잘 안되지만
ajax 의 구동방식을 잘 이해하고 진행하신게 맞는지 여쭤보고싶어집니다.
가장 간단한 샘플은
게시글쓰기의
id중복체크 하는 로직을 참고하셔서
실제 ajax.처리파일.php 로 이름되는 파일과
그것을 호출하는 파일과의 관계
실제 처리파일내의 결과값들을 잘 살펴보시는게 우선이 아닐까 생각됩니다.
아래 내용을 재구성해드릴수는 없을것 같네요
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
넘어가는 값은 1~10까지 한자리수입니다.ㅋ 제가 표현이 혼란드렵어요,,,
바깥에 ' '이거 빼고 해보겠습니다.