뷰페이지에서 여분필드를 다이렉트로 수정하기 정보
뷰페이지에서 여분필드를 다이렉트로 수정하기
본문
예전에 배포한 팁인데 영역을 확장하였습니다.
그누에는 회원 여분필드와 게시판 여분필드와 게시글(댓글 각각 포함) 여분필드의 3가지 종류가 있고 각기 기본으로 10개씩 내장되어 있습니다.
예제는 mb_1(회원 여분필드), bo_1(게시판 여분필드), wr_1(게시글 여분필드) 로 하였습니다.
기타 비회원에게 안 보이거나 관리자나 회원등급에 따라 보여지게 하려면 적당히 이프문을 넣어주세요.
따로 액션문서나 새로고침 필요없이 버튼 클릭시 그 자리에서 다이렉트로 적용이 됩니다.
----------
1. 회원 여분필드(mb_1)
<?php
if ($_POST['mb_1']) sql_query(" update {$g5['member_table']} set mb_1 = '{$_POST['mb_1']}' where mb_id = '{$member['mb_id']}' ");
?>
<script>
if (sessionStorage.reLoad) {
sessionStorage.clear();
location.href = "<?php echo $_SERVER['REQUEST_URI']; ?>";
}
</script>
<form method="post">
<input name="mb_1" value="<?php echo $member['mb_1']; ?>">
<button onclick="sessionStorage.reLoad=1">클릭</button>
</form>
----------
2. 게시판 여분필드(bo_1)
<?php
if ($_POST['bo_1']) sql_query(" update {$g5['board_table']} set bo_1 = '{$_POST['bo_1']}' where bo_table = '{$board['bo_table']}' ");
?>
<script>
if (sessionStorage.reLoad) {
sessionStorage.clear();
location.href = "<?php echo $_SERVER['REQUEST_URI']; ?>";
}
</script>
<form method="post">
<input name="bo_1" value="<?php echo $board['bo_1']; ?>">
<button onclick="sessionStorage.reLoad=1">클릭</button>
</form>
----------
3. 게시글 여분필드(wr_1)
<?php
if ($_POST['wr_1']) sql_query(" update $write_table set wr_1 = '{$_POST['wr_1']}' where wr_id = '$wr_id' ");
?>
<script>
if (sessionStorage.reLoad) {
sessionStorage.clear();
location.href = "<?php echo $_SERVER['REQUEST_URI']; ?>";
}
</script>
<form method="post">
<input name="wr_1" value="<?php echo $view['wr_1']; ?>">
<button onclick="sessionStorage.reLoad=1">클릭</button>
</form>
----------
4. 원래는 아래처럼 더 간명하게 할 수도 있지만 새로고침시 "양식다시제출확인" 이라는 메시지창이 뜨기 때문에 이를 우회하는 로직을 세션스토리지에 넣은 것입니다.
<?php
if ($_POST['wr_1']) sql_query(" update $write_table set wr_1 = '{$_POST['wr_1']}' where wr_id = '$wr_id' ");
$view['wr_1'] = $_POST['wr_1'] ? $_POST['wr_1'] : $view['wr_1'];
?>
<form method="post">
<input name="wr_1" value="<?php echo $view['wr_1']; ?>">
<button>클릭</button>
</form>
----------
5. 주의사항입니다.
가령 게시글 여분필드인 wr_1 을 쓸 경우 write.skin.php 에도 반드시 wr_1 이 존재해야 합니다.
그렇지 않으면 뷰페이지에서 바뀐 wr_1 여분필드가 글수정모드로 들어가게 되면 그 여분필드는 진공처리가 됩니다.
그러니 hidden 된 input 라도 글쓰기에서는 만들어 주어야 합니다.
<input type="hidden" name="wr_1" value="<?php echo $write['wr_1']; ?>">
9
댓글 17개









@오빠야 감사합니다

@삐돌이™ 감사합니다


도움 되셨다니 다행입니다.

@비타주리 너무 감사합니다. 이제 만들 수 있는게 많아졌습니다. ㅎㅎ

액션파일 하나 만들어서 아작스 처리하는걸 선호하는 분도 많습니다.
그래야 가령 게시글에 유튜브 등이 있다면 끊기지 않고 처음부터 재생되는 걸 막을 수 있으니까요.
개인적으로 저는 이 방식을 더 선호합니다.
전쳬가 딱 바뀌었다는 느낌이 전해지니까요.

안녕하세요 덕분에 너무 잘 활용했습니다! 제 경우 phpmyadmin에서 추가 필드생성 후 뷰페이지에서 이 코드를 적용했는데, 수정까지는 잘 적용됩니다. 근데 값을 지우고 저장시 적용이 안되고 기존값이 계속 입력되어있는데 어떤부분이 문제일까요ㅠ