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

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
리스트에서 특정 필드 수정하기에 대해서

QA

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

본문

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

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

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

 

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

아 위에 틀렸네요
ajax 부분에서 field 부분에
field : field ==> wr_3 : field

이렇게 바꾸시던지 아니면
list_up.php 에서
$_POST['wr_3'] ==> $_POST['field'] 로 바꾸세요

현재 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 코드가 들어간 거 말구요 웹 페이지에서 렌더링이 끝난 화면요.
소스 보기로 해서 나오는 코드
아니면 저 코드가 있는 페이지 주소를 알려 주세요.

권한 문제가 있어 답변이 늦었습니다. 임시적으로 만들어서 링크해 드립니다.

http://samsungedu.kr/sge/v2016/bbs/board.php?bo_table=test2

id : test
pw : 1234
입니다.

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

답변을 작성하시기 전에 로그인 해주세요.
전체 299
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT