게시물 복사/이동시 게시물 뒤로 이동하기란 팁을 올린 적이 있습니다. 거기에 기능을 하나 더 첨가했습니다. http://www.nzeo.com/bbs/zboard.php?id=cgi_tip&page=1&sn1=&divpage=1&sn=on&ss=off&sc=off&keyword=다라나&select_arrange=headnum&desc=asc&no=3888 이전 기능은 위의 링크를 참조하시고, 여기서는 새로 첨가된 기능만 쓰겠습니다. 게시판 간에 게시물 복사/이동을 할 때 기존에 있는 게시물 맨 위로 옮겨집니다. 그리고 옮겨가는 게시판의 일반 카테고리로 보통 옮겨지죠.(정확히는 제일 작은 수의 카테고리 넘버) 그런데 카테고리를 서로 다르게 해야할 필요가 있는 게시물인데 수가 많다면 이게 골치가 아픈 수작업이 됩니다. 이번에는 게시물 뒤로 옮기는 것에 더하여 카테고리를 지정해서 옮기는 것을 구현해 보겠습니다. 기본 알고리즘은 PHPSchool의 아래 링크를 참조하십시오. http://www.phpschool.com/bbs2/inc_view.html?id=8353&code=tnt2&start=0&mode=search&field=name&operator=and&period=all&category_id=&s_que=%B0%C5%C4%A3%B8%B6%B7%E7 고칠 부분은 저번과 같이 파일 3개입니다. script/script_list.php ---------------------------------------------------------------------- 111 라인 근처에 보시면 window.open("select_list_all.php?id=<?=$id?>&selected="+document.list.selected.value,"게시물정리","width=260,height=220,toolbars=no,resize=no,scrollbars=no"); 에서 height=220(저번에 바꾼 값)을 height=270으로 바꿔주십시오. ---------------------------------------------------------------------- list_all.php ---------------------------------------------------------------------- 181 라인 근처에 보시면 $a_category=mysql_fetch_array(mysql_query("select min(no) from $t_category"."_$board_name",$connect)); $category=$a_category[0]; 이런 2줄이 보일겁니다. 이것을 아래와 같이 바꿔주십시오. if($category_no) { $category=$category_no; } else { $a_category=mysql_fetch_array(mysql_query("select min(no) from $t_category"."_$board_name",$connect)); $category=$a_category[0]; } ---------------------------------------------------------------------- select_list_all.php 이건 조금 고칠 게 많습니다. ---------------------------------------------------------------------- 1. function change_board_name 바로 위에 아래의 코드를 넣어주세요. <script id="dynamic"></script> 2. function change_board_name을 다음과 같이 바꿔주세요. function change_board_name(sel,target) { select.board_name.value=select.select_board_name.value; var trigger = sel.options[sel.selectedIndex].text; // 첫번째 selectbox의 선택된 텍스트 var form = sel.form.name; dynamic.src = "loadData.php?form=" + form + "&trigger=" + trigger + "&target=" + target; } 3. function change_board_name 함수 밑에 아래 함수를 추가합니다. //옮겨갈 게시판의 카테고리를 선택하는 부분 2003.5.03 function change_category_no() { select.category_no.value=select.select_board_category.value; } 4. 게시판 아이디를 구하는 셀렉트 박스에서 onChange 이벤트에 부르는 함수에 위 2번에 정한 것처럼 인자를 넣습니다. <select name=select_board_name onchange=change_board_name(this,'select_board_category') style=width:100%> 5. 게시판 아이디를 구하는 셀렉트 박스가 끝나는 다음에 아래의 코드를 추가합니다. 위의 자바스크립트 함수를 추가했다면 대략 120라인 근처입니다. <!--옮겨갈 게시판의 카테고리를 선택하는 부분 2003.5.03--> <tr> <td background=images/m_back.gif align=center> ↓카테고리를 선택하시오.(모르면 놔두시오) </td> </tr> <tr> <td background=images/m_back.gif align=center> <table border=0 width=240> <tr> <td><select name=select_board_category onchange=change_category_no() style=width:100%> <option> </option> </select></td> </tr> </table> </td> </tr> <!--여기까지 옮겨갈 게시판의 카테고리를 선택하는 부분 2003.5.03--> 6. 맨 밑으로 가셔서 다음 부분을 찾으세요. <input type=hidden name=board_name value="<?=$s_name?>"> 그리고 그 바로 밑에 아래 코드를 추가하세요. <input type=hidden name=category_no value=""> ---------------------------------------------------------------------- 그리고 첨부된 loadData.php 파일을 제로보드 디렉토리에다가 풀어주세요. 원리 설명 : 1. 첫번째 셀렉트 박스에서 게시판을 선택하면 change_board_name 함수가 불리고, 2. 그 함수에서는 선택된 게시판 아이디와 카테고리를 선택하는 두번째 셀렉트 박스를 인자로 해서 loadData.php로 넘겨줍니다. 3. loadData.php에서는 자바 스크립트를 이용하여 두번째 셀렉트 박스의 옵션 값들을 지정해줍니다. 중요한 것은 <script id="dynamic"></script>를 빼먹지 말라는 겁니다. 자세한 것은 PHPSchool의 링크를 보시면 잘 설명되어 있습니다. |