리스트에서 특정 필드 수정하기에 대해서

리스트에서 특정 필드 수정하기에 대해서

QA

리스트에서 특정 필드 수정하기에 대해서

답변 4

본문

리스트 화면에서 특정 필드의 값을 수정하기 위해 아래와 같이 진행했습니다.

그런데, "수정" 버턴을 누르면 "목록에서 항목을 선택하세요"라는 메세지가 뜨면서 수정이 되지 않습니다.

어디가 잘못되었는지 모르겠습니다.

 

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

음.............

값을 넘겨줘야 하니까

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 파일 -

<?php
include_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 '';
?>

현재 http://samsungedu.kr/sge/v2016/bbs/board.php?bo_table=test2 이페이지에서 넘어가는 파라미터 값은
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라고 적었군요 수정해보세요

사용하던 스킨이있는데

참고해서 만들어보세요^^

비밀글을 등록하고 비밀글을 공개글로 전환하는 스킨을 만들어서 사용중이였습니다.

조금 응용하시면 가능하시리라 생각되네요

 

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

<?php if($is_admin) {?> <td>
<?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 }}} ?>


이렇게 했더니 제일 상단에 값은 체크했을 때 넘어가는데

밑에 부터는 체크하라고 뜨네요 조언 좀 부탁드려도 될까요

list_up.php 파일의 위치가 <?php echo $board_skin_url?>이라면

list_up.php 파일에서 불러오는 _common.php 파일이 <?php echo $board_skin_url?> 이곳에 존재하나요?

아니면 root 폴더의 _common을 불러오나요?

일단은 경로를 확인해봐야 하겠네요

ajax넘겨지는 부분 파이어폭스나 크록 요소검사의 네트웍 부분에서 볼 수있습니다 

<button id="list_select_<?php echo $i;?>">수정</button>

여기에 type="button"을 넣어 보세요. 

저 select가 있는 부분만 html로 보여 주셔도 됩니다.
php 코드가 들어간 거 말구요 웹 페이지에서 렌더링이 끝난 화면요.
소스 보기로 해서 나오는 코드
아니면 저 코드가 있는 페이지 주소를 알려 주세요.

<select name="wr_3" class="form-control input-sm" id="wr_3_<?=$list[$i]['wr_id']?>" required="">
select 이렇게 바꿔 보세요.

<button class="form-control btn-submit" id="list_select_<?=$list[$i]['wr_id']?>" type="button">수정</button>
button 이렇게 바꾸시고.

아래 스크립트는 제일 밑으로 빼세요.
지금은 보니 for 안에 넣으셨네요.


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

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