view.skin.php 에서 여분필드 정보 업데이트 하기 질문입니다. 정보
view.skin.php 에서 여분필드 정보 업데이트 하기 질문입니다.본문
글읽기 상태에서 여분필드 정보를 업데이트 하려고 합니다.
처음 질문은 http://sir.co.kr/bbs/board.php?bo_table=g4_qa&wr_id=260046 이구요.
이 때는 업데이트 파일에 뭐가 잘못이 있는지 빈 화면만 나와서 균이님의 도움으로
어느 정도 문제가 수습?된 듯 한데요.
하려는 기능은 Q&A 게시판 글읽기 상태에서 작성자(질문자)분이 자신의 글 상태를
해결 또는 진행 상태로 바로 설정하는 것입니다. 여기서 여분필드 wr_12를 사용해요.
제가 그누보드 소스 이것 저것 참고해서 만들어 봤는데 막상 여분필드(wr_12) 정보는
업데이트 되지 않아 문의 드립니다.
view.skin.php에서 여분필드 wr_12의 정보를 업데이트 하려면 어떻게 해야 하나요?
view.skin.php
view_solved_update.php
view_solved_update.php 이 파일이 업데이트를 정상적으로 못하는건지... 제가 뭔가를 잘못한거 같은데
초보라서 잘 모르겠습니다. ^^;;;;
부디 도움 부탁드리겠습니다.
처음 질문은 http://sir.co.kr/bbs/board.php?bo_table=g4_qa&wr_id=260046 이구요.
이 때는 업데이트 파일에 뭐가 잘못이 있는지 빈 화면만 나와서 균이님의 도움으로
어느 정도 문제가 수습?된 듯 한데요.
하려는 기능은 Q&A 게시판 글읽기 상태에서 작성자(질문자)분이 자신의 글 상태를
해결 또는 진행 상태로 바로 설정하는 것입니다. 여기서 여분필드 wr_12를 사용해요.
제가 그누보드 소스 이것 저것 참고해서 만들어 봤는데 막상 여분필드(wr_12) 정보는
업데이트 되지 않아 문의 드립니다.
view.skin.php에서 여분필드 wr_12의 정보를 업데이트 하려면 어떻게 해야 하나요?
view.skin.php
<form id="s_status" name="s_status" method="post" action="<?php echo $board_skin_path; ?>/view_solved_update.php" enctype="multipart/form-data">
<input type="hidden" name="bo_table" value="<?php echo $bo_table; ?>" />
<input type="hidden" name="wr_id" value="<?php echo $view['wr_id']; ?>" />
<input type="hidden" name="wr_12" id="wr_12" value="" />
<fieldset class="qna_status ac">
<legend>문제해결상태</legend>
<label for="unsolved"><input type="radio" id="unsolved" name="s_status" value="unsolved"<?php if($view['wr_12'] == "unsolved") echo " checked=\"checked\""; ?> /> 진행중</label>
<label for="solved"><input type="radio" id="solved" name="s_status" value="solved"<?php if($view['wr_12'] == "solved") echo " checked=\"checked\""; ?> /> 해결됨</label>
<button type="submit" id="s_process" class="common_single_btn" />처리하기</button>
</fieldset>
</form>
<script type="text/javascript">
//<![CDATA[
$(function() {
$("input[type=radio]").on("click", function()
{
$("#wr_12").val($(this).val());
});
});
//]]>
</script>
view_solved_update.php
<?php
include_once("./_common.php");
if (!($bo_table && $wr_id))
die("값이 제대로 넘어오지 않았습니다.");
$ss_name = "ss_view_{$bo_table}_{$wr_id}";
if (!get_session($ss_name))
die("해당 게시물에서만 해결상태를 설정하실 수 있습니다.");
$row = sql_fetch(" select count(*) as cnt from {$g4[write_prefix]}{$bo_table} ", FALSE);
if (!$row[cnt])
die("존재하는 게시판이 아닙니다.");
if($write['mb_id'] != $member['mb_id'])
die("타회원의 글에는 해결상태를 설정하실 수 없습니다.");
if ($board['bo_19'] != "Y" && ($wr_12 == "solved" || $wr_12 == "unsolved"))
die("이 게시판은 해결상태설정 기능을 사용하지 않습니다.");
if ($wr_12 == "solved")
$status = "해결됨";
else
$status = "진행중";
alert("이 글을 [$status] 으로 설정하셨습니다.");
if($wr_12 != "")
{
sql_query(" update {$g4[write_prefix]}{$bo_table} set wr_12 = '$wr_12' where wr_id = '$wr[wr_id]' ");
}
else
{
sql_query(" insert into {$g4[write_prefix]}{$bo_table} set wr_12 = '$wr_12' ");
}
goto_url("./board.php?bo_table=$bo_table&wr_id=$wr_id");
?>
view_solved_update.php 이 파일이 업데이트를 정상적으로 못하는건지... 제가 뭔가를 잘못한거 같은데
초보라서 잘 모르겠습니다. ^^;;;;
부디 도움 부탁드리겠습니다.
댓글 전체
근데 세션이 어디서 생성되는 건가요 ?
세션 생성은 없고 검사만 있는거 같은데 말이죠 ?
세션 생성은 없고 검사만 있는거 같은데 말이죠 ?
커피막심님 ^^ 그러고 보니 세션생성이 없어서 필요없는 부분이었나봐요. ^^;;
view.skin.php
if($view['wr_12'] == "sloved")
=> if($view['wr_12'] == "solved")
view_solved_update.php
if($view['wr_12'] != "")
=> if($wr_12 != "")
if($view['wr_12'] == "sloved")
=> if($view['wr_12'] == "solved")
view_solved_update.php
if($view['wr_12'] != "")
=> if($wr_12 != "")
슈와이님 답변 고맙습니다. ^^
지적해 주신 오타부분과 if 부분을 수정했으나 역시 필드정보가 업데이트 되지 않는거 같아요.
뭔가 제가 놓치고 있는게 있는지 모르겠습니다. ㅠ ㅠ
지적해 주신 오타부분과 if 부분을 수정했으나 역시 필드정보가 업데이트 되지 않는거 같아요.
뭔가 제가 놓치고 있는게 있는지 모르겠습니다. ㅠ ㅠ
view.skin.php
$("input[type=radio]").click( function()
view_solved_update.php
update {$g4[write_prefix]}{$bo_table} set wr_12 = '$wr_12' where wr_id = '$wr_id'
$("input[type=radio]").click( function()
view_solved_update.php
update {$g4[write_prefix]}{$bo_table} set wr_12 = '$wr_12' where wr_id = '$wr_id'
슈와이님 ^^ 와 빠른 답변 감사합니다.
jQuery 부분과 쿼리 부분은 변경해 봤습니다.
jQuery 부분은 수정전이나 수정후나 모두 정상적으로 작동합니다.
(<input type="hidden" name="wr_12" id="wr_12" value="" /> 의 밸류값이 변함)
그런데 역시나 필드정보가 업데이트 되지 않습니다. ㅠ ㅠ
쿼리 업데이트 부분에 문제가 없는 것 같은데...
jQuery 부분과 쿼리 부분은 변경해 봤습니다.
jQuery 부분은 수정전이나 수정후나 모두 정상적으로 작동합니다.
(<input type="hidden" name="wr_12" id="wr_12" value="" /> 의 밸류값이 변함)
그런데 역시나 필드정보가 업데이트 되지 않습니다. ㅠ ㅠ
쿼리 업데이트 부분에 문제가 없는 것 같은데...
<?php
include_once("./_common.php");
if (!($bo_table && $wr_id))
die("값이 제대로 넘어오지 않았습니다.");
// 세션 처리 삭제
// 게시판 유무 삭제 - 보기 페이지이니 이미 존재 하는 게시판
if($write['mb_id'] != $member['mb_id'])
die("타회원의 글에는 해결상태를 설정하실 수 없습니다.");
// 이 부분은 bo_19 존재 하는지 추가 점검 후 아래조건 수정 - 유지해 둠
if ($board['bo_19'] != "Y" && ($wr_12 == "solved" || $wr_12 == "unsolved"))
die("이 게시판은 해결상태설정 기능을 사용하지 않습니다.");
if ($wr_12 == "solved")
$status = "해결됨";
else
$status = "진행중";
if($wr_12) {
sql_query(" update {$g4[write_prefix]}{$bo_table} set wr_12 = '$wr_12' where wr_id = '$wr_id' "); // '$wr[wr_id]' "); -> $wr_id 로 수정 ★★
} // insert 조건 삭제
alert("이 글을 [$status] 으로 설정하셨습니다."); // 알림 메시지 처리 위치 이동 ★★
goto_url("./board.php?bo_table=$bo_table&wr_id=$wr_id");
?>
include_once("./_common.php");
if (!($bo_table && $wr_id))
die("값이 제대로 넘어오지 않았습니다.");
// 세션 처리 삭제
// 게시판 유무 삭제 - 보기 페이지이니 이미 존재 하는 게시판
if($write['mb_id'] != $member['mb_id'])
die("타회원의 글에는 해결상태를 설정하실 수 없습니다.");
// 이 부분은 bo_19 존재 하는지 추가 점검 후 아래조건 수정 - 유지해 둠
if ($board['bo_19'] != "Y" && ($wr_12 == "solved" || $wr_12 == "unsolved"))
die("이 게시판은 해결상태설정 기능을 사용하지 않습니다.");
if ($wr_12 == "solved")
$status = "해결됨";
else
$status = "진행중";
if($wr_12) {
sql_query(" update {$g4[write_prefix]}{$bo_table} set wr_12 = '$wr_12' where wr_id = '$wr_id' "); // '$wr[wr_id]' "); -> $wr_id 로 수정 ★★
} // insert 조건 삭제
alert("이 글을 [$status] 으로 설정하셨습니다."); // 알림 메시지 처리 위치 이동 ★★
goto_url("./board.php?bo_table=$bo_table&wr_id=$wr_id");
?>
사노라가노라님 ^^ 답변 고맙습니다.
일단 세션부분은 이미 삭제했구요.(댓글이 3개 이상 달려서 수정이 안된 상태)
알림메시지는 옮겨서 해 봤습니다.
쿼리 부분은 슈와이님께서 지적해 주셔서 $wr_id 로 수정된 상태입니다.
그런데도 안되는 상태에요...
현재 수정된 내용(view_solved_update.php)
<?php
include_once("./_common.php");
if (!($bo_table && $wr_id))
die("값이 제대로 넘어오지 않았습니다.");
$row = sql_fetch(" select count(*) as cnt from {$g4[write_prefix]}{$bo_table} ", FALSE);
if (!$row[cnt])
die("존재하는 게시판이 아닙니다.");
if($write['mb_id'] != $member['mb_id'])
die("타회원의 글에는 해결상태를 설정하실 수 없습니다.");
if ($board['bo_19'] != "Y" && ($wr_12 == "solved" || $wr_12 == "unsolved"))
die("이 게시판은 해결상태설정 기능을 사용하지 않습니다.");
if ($wr_12 == "solved")
$status = "해결됨";
else
$status = "진행중";
if($wr_12)
{
sql_query(" update {$g4[write_prefix]}{$bo_table} set wr_12 = '$wr_12' where wr_id = '$wr_id' ");
}
else
{
sql_query(" insert into {$g4[write_prefix]}{$bo_table} set wr_12 = '$wr_12' ");
}
alert("이 글을 [$status] 으로 설정하셨습니다.");
goto_url("./board.php?bo_table=$bo_table&wr_id=$wr_id");
?>
쿼리도 어느 정도 맞는 것 같은데...
이제 의심이 가는건 혹시 글쓰기 상태가 아니라 글읽기 상태라 자신의 글에 대한
디비 수정 권한이 없어서 그런거 아닐까 싶기도 하네요. write_updata.php를 보면
쿼리 업데이트 할 때 패스워드 부분이 들어가 있더라구요.
bbs/write_update.php 이걸 참고해 보면...
$sql_password = $wr_password ? " , wr_password = '".sql_password($wr_password)."' " : "";
$sql_ip = "";
if (!$is_admin)
$sql_ip = " , wr_ip = '$_SERVER[REMOTE_ADDR]' ";
$sql = " update $write_table
set ca_name = '$ca_name',
wr_option = '$html,$secret,$mail',
... 생략
wr_11 = '$wr_11',
... 생략
$sql_ip
$sql_password <---- 이 것...
where wr_id = '$wr[wr_id]' ";
sql_query($sql);
일단 세션부분은 이미 삭제했구요.(댓글이 3개 이상 달려서 수정이 안된 상태)
알림메시지는 옮겨서 해 봤습니다.
쿼리 부분은 슈와이님께서 지적해 주셔서 $wr_id 로 수정된 상태입니다.
그런데도 안되는 상태에요...
현재 수정된 내용(view_solved_update.php)
<?php
include_once("./_common.php");
if (!($bo_table && $wr_id))
die("값이 제대로 넘어오지 않았습니다.");
$row = sql_fetch(" select count(*) as cnt from {$g4[write_prefix]}{$bo_table} ", FALSE);
if (!$row[cnt])
die("존재하는 게시판이 아닙니다.");
if($write['mb_id'] != $member['mb_id'])
die("타회원의 글에는 해결상태를 설정하실 수 없습니다.");
if ($board['bo_19'] != "Y" && ($wr_12 == "solved" || $wr_12 == "unsolved"))
die("이 게시판은 해결상태설정 기능을 사용하지 않습니다.");
if ($wr_12 == "solved")
$status = "해결됨";
else
$status = "진행중";
if($wr_12)
{
sql_query(" update {$g4[write_prefix]}{$bo_table} set wr_12 = '$wr_12' where wr_id = '$wr_id' ");
}
else
{
sql_query(" insert into {$g4[write_prefix]}{$bo_table} set wr_12 = '$wr_12' ");
}
alert("이 글을 [$status] 으로 설정하셨습니다.");
goto_url("./board.php?bo_table=$bo_table&wr_id=$wr_id");
?>
쿼리도 어느 정도 맞는 것 같은데...
이제 의심이 가는건 혹시 글쓰기 상태가 아니라 글읽기 상태라 자신의 글에 대한
디비 수정 권한이 없어서 그런거 아닐까 싶기도 하네요. write_updata.php를 보면
쿼리 업데이트 할 때 패스워드 부분이 들어가 있더라구요.
bbs/write_update.php 이걸 참고해 보면...
$sql_password = $wr_password ? " , wr_password = '".sql_password($wr_password)."' " : "";
$sql_ip = "";
if (!$is_admin)
$sql_ip = " , wr_ip = '$_SERVER[REMOTE_ADDR]' ";
$sql = " update $write_table
set ca_name = '$ca_name',
wr_option = '$html,$secret,$mail',
... 생략
wr_11 = '$wr_11',
... 생략
$sql_ip
$sql_password <---- 이 것...
where wr_id = '$wr[wr_id]' ";
sql_query($sql);
테스트 해 보니 익스10은 on 오류 나던데요.. (click으로 변경)
맨 아래 $_POST 추가참고 ★ register_globals 설정 차이 ★
<form id="s_status" name="s_status" method="post" action="<?php echo $board_skin_path; ?>/view_solved_update.php" enctype="multipart/form-data">
<input type="hidden" name="bo_table" value="<?php echo $bo_table; ?>" />
<input type="hidden" name="wr_id" value="<?php echo $view['wr_id']; ?>" />
<input type="hidden" name="wr_12" id="wr_12" value="" />
<fieldset class="qna_status ac">
<legend>문제해결상태</legend>
<label for="unsolved"><input type="radio" id="unsolved" name="s_status" value="unsolved"<?php if($view['wr_12'] == "unsolved") echo " checked="checked""; ?> /> 진행중</label>
<label for="solved"><input type="radio" id="solved" name="s_status" value="solved"<?php if($view['wr_12'] == "solved") echo " checked="checked""; ?> /> 해결됨</label>
<button type="submit" id="s_process" class="common_single_btn" />처리하기</button>
</fieldset>
</form>
<script type="text/javascript">
//<![CDATA[
$(document).ready(function(){
$("input[type=radio]").click( function()
{
$("#wr_12").val($(this).val());
});
});
//]]>
</script>
<?php
include_once("./_common.php");
if (!($bo_table && $wr_id))
die("값이 제대로 넘어오지 않았습니다.");
if ($wr_12 == "solved")
$status = "해결됨";
else
$status = "진행중";
if($wr_12) {
sql_query(" update {$g4[write_prefix]}{$bo_table} set wr_12 = '$wr_12' where wr_id = '$wr_id' ");
}
alert("이 글을 [$status] 으로 설정하셨습니다.");
goto_url("./board.php?bo_table=$bo_table&wr_id=$wr_id");
?>
위 내용만으로 테스트 해 보신 후 update 페이지 필요한 소스는 결과 체크 후 추가.보완 해 보세요.
# 아래 처럼 두 줄 주석 처리하고 실제 값 넘어오는지 찍어 보세요.
echo $wr_10;
//alert("이 글을 [$status] 으로 설정하셨습니다.");
//goto_url("./board.php?bo_table=$bo_table&wr_id=$wr_id");
결과가 안 찍히면
<?
include_once("./_common.php");
$wr_12 = $_POST[wr_12]; // 추가 후 테스트
맨 아래 $_POST 추가참고 ★ register_globals 설정 차이 ★
<form id="s_status" name="s_status" method="post" action="<?php echo $board_skin_path; ?>/view_solved_update.php" enctype="multipart/form-data">
<input type="hidden" name="bo_table" value="<?php echo $bo_table; ?>" />
<input type="hidden" name="wr_id" value="<?php echo $view['wr_id']; ?>" />
<input type="hidden" name="wr_12" id="wr_12" value="" />
<fieldset class="qna_status ac">
<legend>문제해결상태</legend>
<label for="unsolved"><input type="radio" id="unsolved" name="s_status" value="unsolved"<?php if($view['wr_12'] == "unsolved") echo " checked="checked""; ?> /> 진행중</label>
<label for="solved"><input type="radio" id="solved" name="s_status" value="solved"<?php if($view['wr_12'] == "solved") echo " checked="checked""; ?> /> 해결됨</label>
<button type="submit" id="s_process" class="common_single_btn" />처리하기</button>
</fieldset>
</form>
<script type="text/javascript">
//<![CDATA[
$(document).ready(function(){
$("input[type=radio]").click( function()
{
$("#wr_12").val($(this).val());
});
});
//]]>
</script>
<?php
include_once("./_common.php");
if (!($bo_table && $wr_id))
die("값이 제대로 넘어오지 않았습니다.");
if ($wr_12 == "solved")
$status = "해결됨";
else
$status = "진행중";
if($wr_12) {
sql_query(" update {$g4[write_prefix]}{$bo_table} set wr_12 = '$wr_12' where wr_id = '$wr_id' ");
}
alert("이 글을 [$status] 으로 설정하셨습니다.");
goto_url("./board.php?bo_table=$bo_table&wr_id=$wr_id");
?>
위 내용만으로 테스트 해 보신 후 update 페이지 필요한 소스는 결과 체크 후 추가.보완 해 보세요.
# 아래 처럼 두 줄 주석 처리하고 실제 값 넘어오는지 찍어 보세요.
echo $wr_10;
//alert("이 글을 [$status] 으로 설정하셨습니다.");
//goto_url("./board.php?bo_table=$bo_table&wr_id=$wr_id");
결과가 안 찍히면
<?
include_once("./_common.php");
$wr_12 = $_POST[wr_12]; // 추가 후 테스트
사노라가노라님 ^^ 필드업데이트는 되는 것을 확인했습니다.
$wr_12 = $_POST[wr_12]; // 추가 후 테스트 <-- 이 부분은 넣지 않았습니다.
결과값은(wr_12)은 정상적으로 view_solved_update.php로 넘어 오고 있네요.
그런데 정확한 이유는 모르겠으나
goto_url("./board.php?bo_table=$bo_table&wr_id=$wr_id"); 이걸로 다시 글읽기로
돌아가 페이지 리로드 상태가 되면 설정전 상태로 라디오 버튼이 체크되어 있습니다.
소스를 보면 input hidden wr_12 의 값도 설정 이전값이구요.
그래서 페이지를 수동으로 리로드 하면 정상적으로 보이네요. 브라우저 캐쉬 문제인거
같은데... 결과적으로 일단 필드는 업데이트가 정상적으로 됩니다.
설정 후 다시 읽기 페이지로 가면 왜 수정된 설정상태가 안되는지는 해결해야 할 부분이네요.
도움 주셔서 정말 고맙습니다. ^^
ps : php alert을 사용하지 않고 스크립트 alert을 사용하니까 정상적으로 보이네요. ^^
$wr_12 = $_POST[wr_12]; // 추가 후 테스트 <-- 이 부분은 넣지 않았습니다.
결과값은(wr_12)은 정상적으로 view_solved_update.php로 넘어 오고 있네요.
그런데 정확한 이유는 모르겠으나
goto_url("./board.php?bo_table=$bo_table&wr_id=$wr_id"); 이걸로 다시 글읽기로
돌아가 페이지 리로드 상태가 되면 설정전 상태로 라디오 버튼이 체크되어 있습니다.
소스를 보면 input hidden wr_12 의 값도 설정 이전값이구요.
그래서 페이지를 수동으로 리로드 하면 정상적으로 보이네요. 브라우저 캐쉬 문제인거
같은데... 결과적으로 일단 필드는 업데이트가 정상적으로 됩니다.
설정 후 다시 읽기 페이지로 가면 왜 수정된 설정상태가 안되는지는 해결해야 할 부분이네요.
도움 주셔서 정말 고맙습니다. ^^
ps : php alert을 사용하지 않고 스크립트 alert을 사용하니까 정상적으로 보이네요. ^^