그누보드4 리스트 엑셀 출력할때 체크박스 항목만 출력되게 하려면 어디를 손을 봐야 할까요 ㅠ
본문
먼저 막장코더님과 해피정님 감사합니다.
이 두분이 이전에 만들어 놓으신 코딩으로 원하는 형태로는 만들었는데 문제는 엑셀 출력을 하면
해당 게시판 전체 글이 다 출력이 되어 버립니다. 하는수 없이 엑셀 작업과 매크로를 이용하여 가공의 가공을 거치고 있는데 그누보드에 검색 기능이 있는데 굳이 이럴필요 없을거 같아서 체크박스 체크된 항목만
엑셀 출력이 되게끔 하려고 여러 가지 엑셀 출력 코딩들을 살펴봐도 각기 방식이 들이 달라서 그런지
서로 잘 안먹히더라고요 ㅠㅠ 어떤건 post 어떤건 get 형식 아무튼 아직까지 일천한 저의 재주라 그렇겠지만
아래의 list.skin.php에 추가되는 코드의 적절한 위치와 추가 코딩 부분이 있어야 한다면 좀 알려 주셨으면 합니다. 언제나 챙겨봐주시는 고수님들 항상 감사합니다. ^^
1. 그누보드 / skin / board / basic / list.skin.php 적절한 위치에 아래 코드 추가
<? if ($admin_href) { ?><a href='<?=$board_skin_path?>/excel.php?bo_table=<?=$bo_table?>' target='_blank'>Excel</a><? } ?>
2. 그누보드 / skin / board / basic / excel.php 파일 생성
<?
$excel_down = "g4_write_" . $_GET['bo_table']; //엑셀 다운로드 테이블
$wr_id = $id = $_GET['wr_id'];
include "../../../dbconfig.php";
$db_conn = mysql_connect($mysql_host, $mysql_user, $mysql_password) or die('서버에 접속하지 못했습니다.');
mysql_select_db($mysql_db, $db_conn);
//@mysql_query("SET CHARACTER SET utf8"); // 한글깨지면 주석해지
if ($ms =="excel"){
$g4[title] = "엑셀 문서 다운로드";
header( "Content-type: application/vnd.ms-excel" );
header( "Content-Disposition: attachment; filename=상품구매.xls" );
//header( "Content-Description: PHP4 Generated Data" );
} else if ($ms =="power"){
$g4[title] = "파워포인트 문서 다운로드";
header( "Content-type: application/vnd.ms-powerpoint" );
header( "Content-Disposition: attachment; filename=상품구매.ppt" );
// header( "Content-Description: PHP4 Generated Data" );
} else if ($ms =="word"){
$g4[title] = "워드 문서 다운로드";
header( "Content-type: application/vnd.ms-word" );
header( "Content-Disposition: attachment; filename=상품구매.doc" );
//header( "Content-Description: PHP4 Generated Data" );
} else if ($ms =="memo"){
$g4[title] = "메모 문서 다운로드";
header( "Content-type: application/vnd.ms-notepad" );
header( "Content-Disposition: attachment; filename=상품구매.txt" );
} else {
header( "Content-type: application/vnd.ms-excel" );
header( "Content-Disposition: attachment; filename=상품구매.xls" );
}
header( "Content-Description: PHP4 Generated Data" );
// 원글 + 코멘트 다운로드
$temp=mysql_fetch_array(mysql_query("select count(*) from $excel_down "));
$result=@mysql_query("select * from $excel_down order by wr_datetime desc");
// 원글만 다운로드 (코멘트 제외) , 2013-10-21 추가
//$temp=mysql_fetch_array(mysql_query("select count(*) from $excel_down where wr_is_comment = '0' and wr_content = '$wr_id' "));
//$result=@mysql_query("select * from $excel_down where wr_is_comment = '0' and wr_content = '$wr_id' order by wr_datetime desc");
$number=$temp[0];
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
.txt {mso-number-format:'\@'}
</style>
</head>
<body>
<table>
<tr>
<td>번호</td>
<td>제목</td>
<td>아이디</td>
<td>이름</td>
<td>작성일</td>
<td>필드1</td>
<td>필드2</td>
<td>필드3</td>
<td>필드4</td>
<td>필드5</td>
<td>필드6</td>
<td>필드7</td>
<td>필드8</td>
<td>필드9</td>
<td>필드10</td>
</tr>
<?
while($data=mysql_fetch_array($result)) {
echo "
<tr>
<td>$number</td>
<td>$data[wr_subject]</td>
<td>$data[mb_id]</td>
<td>$data[wr_name]</td>
<td class='txt'>$data[wr_datetime]</td>
<td class='txt'>$data[wr_1]</td>
<td class='txt'>$data[wr_2]</td>
<td class='txt'>$data[wr_3]</td>
<td class='txt'>$data[wr_4]</td>
<td class='txt'>$data[wr_5]</td>
<td class='txt'>$data[wr_6]</td>
<td class='txt'>$data[wr_7]</td>
<td class='txt'>$data[wr_8]</td>
<td class='txt'>$data[wr_9]</td>
<td class='txt'>$data[wr_10]</td>
</tr>
";
$number--;
}
?>
</table>
</body>
</html>
답변 3
for ($i=0; $i<count($_POST['chk']); $i++)
{
// 실제 번호를 넘김
$k = $_POST['chk'][$i];
$wr_id = $_POST['wr_id'][$k]
$result=@mysql_query("select * from $excel_down where wr_is_comment = '0'
and wr_content = '$wr_id' order by wr_datetime desc");
.
.
.
}
제가 도움이 될수 있는 소스를 만들어봤습니다.
checkbox 에서 받아온 chk순서로 wr_id값을 알아온 다음
체크 한 순서만큼 쿼리 돌서 뿌리면 간단이 해결됩니다.
baisc 계시판을 보시거나 관리자쪽 부분을 보시면 이와 비슷한 내용이 언급되어있습니다.
선택한 내용만 뿌려서 엑셀로 내려주면 끝~~~ ^^
!-->
아래와 같이 하면 됩니다
1. list.skin.php 하단 관리자일때만 보이는 버튼에 액셀저장 버튼 추가
<a href="javascript:excel_save();">선택액셀저장</a>
2. 하단 자바스크립트 부분에 추가
function excel_save(){
var f = document.fboardlist;
str = "액셀로 저장";
if (!check_confirm(str)) return;
f.action = "./excel_save.php";
f.submit();
}
2. bbs폴더에 excel_save.php생성
<?
include_once("_common.php");
$wridStr = implode(',',$_POST[chk_wr_id]);
//원글 + 코멘트 추출
$result=sql_query("select * from $write_table where wr_parent IN ($wridStr) order by wr_num, wr_id");
header( "Content-type: application/vnd.ms-excel" );
header( "Content-Disposition: attachment; filename=상품구매.xls" );
header( "Content-Description: PHP Generated Data" );
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
.txt {mso-number-format:'\@'}
</style>
</head>
<body>
<table>
<tr>
<td>번호</td>
<td>제목</td>
<td>아이디</td>
<td>이름</td>
<td>작성일</td>
<td>필드1</td>
<td>필드2</td>
<td>필드3</td>
<td>필드4</td>
<td>필드5</td>
<td>필드6</td>
<td>필드7</td>
<td>필드8</td>
<td>필드9</td>
<td>필드10</td>
</tr>
<?
$nn=0;
while($data=sql_fetch_array($result)) {
if(!$data[wr_is_comment]){ $nn++; $tag=$nn;}
else $tag = '코';
echo "<tr>
<td>$tag</td>
<td>$data[wr_subject]</td>
<td>$data[mb_id]</td>
<td>$data[wr_name]</td>
<td class='txt'>$data[wr_datetime]</td>
<td class='txt'>$data[wr_1]</td>
<td class='txt'>$data[wr_2]</td>
<td class='txt'>$data[wr_3]</td>
<td class='txt'>$data[wr_4]</td>
<td class='txt'>$data[wr_5]</td>
<td class='txt'>$data[wr_6]</td>
<td class='txt'>$data[wr_7]</td>
<td class='txt'>$data[wr_8]</td>
<td class='txt'>$data[wr_9]</td>
<td class='txt'>$data[wr_10]</td>
</tr> ";
}
?>
</table>
</body>
</html>
$result=@mysql_query("select * from $excel_down where wr_is_comment = '0' and wr_id = '$wr_id'" );
이런식으로 한번해보세요~
무조건 똑같이 하시지마시구요..참고 하셔서 응용을 하셔야합니다!