리스트에서 특정 필드 수정하기에 대해서
본문
리스트 화면에서 특정 필드의 값을 수정하기 위해 아래와 같이 진행했습니다.
그런데, "수정" 버턴을 누르면 "목록에서 항목을 선택하세요"라는 메세지가 뜨면서 수정이 되지 않습니다.
어디가 잘못되었는지 모르겠습니다.
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 '';
?>
사용하던 스킨이있는데
참고해서 만들어보세요^^
비밀글을 등록하고 비밀글을 공개글로 전환하는 스킨을 만들어서 사용중이였습니다.
조금 응용하시면 가능하시리라 생각되네요
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);
?>
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"을 넣어 보세요.