리스트 화면에서 특정 필드의 값을 수정하기 위해 아래와 같이 진행했습니다.
그런데, "수정" 버턴을 누르면 "목록에서 항목을 선택하세요"라는 메세지가 뜨면서 수정이 되지 않습니다.
어디가 잘못되었는지 모르겠습니다.
list.skin.php 파일에서
<select name="wr_3" id="wr_3_<?php echo $i;?>" required class="form-control input-sm">
<option value="">확인중</option>
<option value="50" <? if($list[$i]['wr_3'] == '50') echo " selected "; ?>>예약완료</option>
<option value="10" <? if($list[$i]['wr_3'] == '10') echo " selected "; ?>>예약취소</option>
<option value="70" <? if($list[$i]['wr_3'] == '70') echo " selected "; ?>>환불완료</option>
</select>
</b>
<button id="list_select_<?php echo $i;?>">수정</button>
<script>
$(document).ready(function(){
$("#list_select_<?php echo $i;?>").click(function(){
var bo_table = "<?=$bo_table?>";
var wr_id = "<?php echo $list[$i]['wr_id'] ?>";
var value0 = $("#wr_3_<?php echo $i;?>").val();
$.ajax({
type: "POST",
url: "<?php echo $board_skin_url?>/list_up.php",
data: { bo_table:bo_table, wr_id:wr_id, wr_3:value0 },
success: function () {
//do somthing here
location.reload();
alert("수정되었습니다")
}
});
});
});
</script>
그리고, list_up.php 파일에는 아래와 같은 내용을 넣었습니다.
include_once('./_common.php');
$sql = " update g5_write_{$_POST[bo_table]}
set wr_3 = '{$_POST[wr_3]}'
where wr_id = '{$_POST[wr_id]}' ";
sql_query($sql);
답변 4개 / 댓글 13개
값을 넘겨줘야 하니까
ajax 구문과 select 구문을 이렇게 바꿔보세요
- ajax -
<script type="text/javascript">var wr3_chk = function(wr_num,wr_id,field) { $.ajax({ type:"post", url:"<?php echo $board_skin_url?>/list_up.php", data: { bo_table : g5_bo_table, wr_num : wr_num, wr_id : wr_id, field : field }, dataType:"html", success:function(res){ $("#wr_3_"+wr_num).val(res); if(res) alert(res+"(으)로 변경되었습니다"); else alert("변경 실패"); } });}</script>
- select -
<select name="wr_3" id="wr_3_<?php echo $i;?>" onchange="wr3_chk('<?php echo $i;?>','<?php echo $list[$i]['wr_id']?>',this.value);" required class="form-control input-sm"> <option value="">확인중</option> <option value="50" <? if($list[$i]['wr_3'] == '50') echo " selected "; ?>>예약완료</option> <option value="10" <? if($list[$i]['wr_3'] == '10') echo " selected "; ?>>예약취소</option> <option value="70" <? if($list[$i]['wr_3'] == '70') echo " selected "; ?>>환불완료</option></select>
- ajax 처리 list_up.php 파일 -
<?phpinclude_once("경로에 맞는 설정/_common.php");$write_table = $g5['write_prefix'].$POST['bo_table'];$sql = " update ".$write_table." set wr_3 = '".$_POST['wr_3']."' where wr_id = '".$_POST['wr_id']."' ";sql_query($sql);$sql = "select wr_3 from ".$write_table." where wr_id = '".$POST['wr_id']."' ";$row = sql_fetch($sql);if($row['wr_3']) echo $row['wr_3'];else echo '';?>
답변에 대한 댓글 5개
ajax 부분에서 field 부분에
field : field ==> wr_3 : field
이렇게 바꾸시던지 아니면
list_up.php 에서
$_POST['wr_3'] ==> $_POST['field'] 로 바꾸세요
bo_table : test2
wr_num : 1
wr_id : 1
wr_3 : 50
이라는 값이 넘거가고 있습니다
list_up.php 페이지에서 틀린 부분이 있는지 확인을 해보셔야 할 듯 합니다
제가 적어드린 대로 복사 하셨다면
$sql = "select wr_3 from ".$write_table." where wr_id = '".$POST['wr_id']."' ";
이부분에서 $_POST 인데 $POST라고 적었군요 수정해보세요
<button id="list_select_<?php echo $i;?>">수정</button>
여기에 type="button"을 넣어 보세요.
답변에 대한 댓글 5개
"목록에서 항목을 선택하세요"라는 메세지는 뜨지 않네요.
하지만, 수정이 되지는 않습니다.
php 코드가 들어간 거 말구요 웹 페이지에서 렌더링이 끝난 화면요.
소스 보기로 해서 나오는 코드
아니면 저 코드가 있는 페이지 주소를 알려 주세요.
http://samsungedu.kr/sge/v2016/bbs/board.php?bo_table=test2
id : test
pw : 1234
입니다.
select 이렇게 바꿔 보세요.
<button class="form-control btn-submit" id="list_select_<?=$list[$i]['wr_id']?>" type="button">수정</button>
button 이렇게 바꾸시고.
아래 스크립트는 제일 밑으로 빼세요.
지금은 보니 for 안에 넣으셨네요.
[code]
$(function() {
$("button.btn-submit").on("click", function() {
var wrid = $(this).attr("id").split("_");
var value0 = $("#wr_3_" + wrid[2]).val();
$.ajax({
... 생략 ...
data : {
bo_table : bo_table,
wr_id : wrid[2],
wr_3 : value0
}
});
});
});
[/code]
list_up.php 파일의 위치가 <?php echo $board_skin_url?>이라면
list_up.php 파일에서 불러오는 _common.php 파일이 <?php echo $board_skin_url?> 이곳에 존재하나요?
아니면 root 폴더의 _common을 불러오나요?
일단은 경로를 확인해봐야 하겠네요
ajax넘겨지는 부분 파이어폭스나 크록 요소검사의 네트웍 부분에서 볼 수있습니다
답변에 대한 댓글 2개
감사합니다.
include_once("../../../common.php");
사용하던 스킨이있는데
참고해서 만들어보세요^^
비밀글을 등록하고 비밀글을 공개글로 전환하는 스킨을 만들어서 사용중이였습니다.
조금 응용하시면 가능하시리라 생각되네요
list.skin.php에 form안에 추가
<select id="wr_option[<?echo $i?>]" name="wr_option[<?echo $i?>]">
<option value="">노출</option>
<option value="secret" <?if($list[$i]['wr_option']=="secret") echo "selected"; ?>>비밀글</option>
</select>
<ul class="btn_bo_adm">
<li><input type="submit" name="btn_submit" value="선택삭제" onclick="document.pressed=this.value"></li>
<li><input type="submit" name="btn_submit" value="선택복사" onclick="document.pressed=this.value"></li>
<li><input type="submit" name="btn_submit" value="선택이동" onclick="document.pressed=this.value"></li>
<li><input type="submit" name="btn_submit" value="선택수정" onclick="document.pressed=this.value"></li>
</ul>
www/bbs/board_list_update.php에 추가
<?php
include_once('./_common.php');
$count = count($_POST['chk_wr_id']);
if(!$count) {
alert($_POST['btn_submit'].' 하실 항목을 하나 이상 선택하세요.');
}
if($_POST['btn_submit'] == '선택삭제') {
include './delete_all.php';
} else if($_POST['btn_submit'] == '선택복사') {
$sw = 'copy';
include './move.php';
} else if($_POST['btn_submit'] == '선택이동') {
$sw = 'move';
include './move.php';
}if($_POST['btn_submit'] == "선택수정"){//수정하기위해 추가코드
include './change.php';
} else {
alert('올바른 방법으로 이용해 주세요.');
}
?>
www/bbs/change.php 파일 생성
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
if(!$is_admin)
alert('접근 권한이 없습니다.', G5_URL);
for ($i=0; $i<count($_POST['chk_wr_id']); $i++){
$k = $_POST['chk_wr_id'][$i];
$j = $_POST['wr_option'][$i];
$sql = " update $write_table set wr_option='$j' where wr_id='$k' ";
$result = sql_query($sql);
}
goto_url('./board.php?bo_table='.$bo_table.'&page='.$page.$qstr);
?>
답변에 대한 댓글 1개
<?php if ($list_href || $is_checkbox || $write_href) { ?>
<?php if ($is_checkbox) { ?>
<form action="./board_list_update.php" method="post">
<select id="wr_1[<?echo $i?>]" name="wr_1[<?echo $i?>]">
<option value="">주문상태변경</option><option value="입고중" <?if($list[$i]['wr_1']=="입고중") echo "selected"; ?>>입고중</option>
</select>
<ul>
<li><input type="submit" name="btn_submit" value="선택수정" onclick="document.pressed=this.value"></li>
</ul>
</form>
</td>
<?php }}} ?>
이렇게 했더니 제일 상단에 값은 체크했을 때 넘어가는데
밑에 부터는 체크하라고 뜨네요 조언 좀 부탁드려도 될까요
답변을 작성하려면 로그인이 필요합니다.
적용해 보니 "변경실패"라는 메세지가 뜨면서 변경이 되지 않습니다. ;;