웹마스터 팁
게시판 글 엑셀로 출력하기(확장변수 포함)
2014.07.17 11:30
<?php
//url 로 직접 불러오는것을 방지
if(!strstr($_SERVER['HTTP_REFERER'],$_SERVER['SERVER_NAME'])&& !strstr($_SERVER['HTTP_REFERER'],'out_excel.php')) exit;
$info = array(
"host" => "localhost",
"user" => "db명",
"pass" => "db비번",
"db" => "xe테이블명",
"table" => "xe_documents",
"module_srl" => "출력할게시판slr",
);
$getFields = array("title","regdate","content"); //출력원하는 칼럼을 배열로 입력
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=doc_".date('Ymd').".xls");
$con = mysql_connect($info[host], $info[user], $info[pass]) || die(mysql_error());
mysql_query("set names utf8");
$con_db = mysql_select_db($info[db]) || die(mysql_error());
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="EN" dir="ltr" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv=Content-Type content=text/html; charset="utf-8">
</head>
<body>
<table border=1>
<tr align=center>
<?php
//제목 불러오기
$fields = mysql_list_fields("$info[db]", "$info[table]");
$columns = mysql_num_fields($fields);
for( $i=0 ; $i<$columns ; $i++ )
{
$field[$i]=mysql_field_name($fields, $i);
if( in_array($field[$i], $getFields) ) echo "<th>".$field[$i]."</th>";
}
//확장변수의 타이틀은 값이므로
$result = mysql_query("select var_name from xe_document_extra_keys where module_srl = $info[module_srl]");
while( $data = mysql_fetch_array($result) )
{
echo "<th>".htmlspecialchars($data[var_name])."</th>";
}
echo"</tr>";
//데이터 불러오기
$result = mysql_query("select * from $info[table] where module_srl = $info[module_srl]");
while( $data = mysql_fetch_assoc($result) )
{
echo"<tr>";
foreach( $data as $key => $val )
{
if( in_array($key, $getFields) )
{
if ($key == 'regdate') {
echo "<td style='mso-number-format:\"0_ \";' >".htmlspecialchars($val)."</td>";
}elseif ($key == 'content'){ //내용 출력할경우 태그가 그대로 출력됨
//echo "<td>".$val."</td>"; //셀이 두칸이상으로 늘어남
echo "<td >".htmlspecialchars(strip_tags(str_replace(" ","",$val)))."</td>";
}else {
echo "<td>".htmlspecialchars($val)."</td>";
}
}
if ($key == 'document_srl'){ //확장변수 불러올때 사용
$d_srl=$val;
}
}
//확장변수 출력 ////////////////////////////////////////////
//eid리스트를 불러온다
$query=mysql_query("select eid from xe_document_extra_keys where module_srl = $info[module_srl]");
while($extra_title=mysql_fetch_array($query))
{
echo"<td>";
$egetFields = array("value","eid");
//확장변수 값을 불러와 eid값이 같은곳에 출력
$extra_result = mysql_query("select * from xe_document_extra_vars where document_srl = $d_srl");
while( $edata = mysql_fetch_assoc($extra_result) )
{
$extra_str="";
foreach( $edata as $key => $val ){
if( in_array($key, $egetFields) ){
$extra_str = $val.",".$extra_str;
}
}
$extra_arr=explode(",",$extra_str);
if ($extra_title[eid]==$extra_arr[0]){
//전화번호값은 "|@|" 를 "-" 로 변경
if($extra_title[eid]=="mb_phone_Number"){
echo str_replace("|@|","-",htmlspecialchars($extra_arr[1]));
//기타 배열값들은 ',' 로 변경
}elseif($extra_title[eid]=="mb_incomplete"||$extra_title[eid]=="mb_cs"){
echo str_replace("|@|",",",htmlspecialchars($extra_arr[1]));
}else{
echo htmlspecialchars($extra_arr[1]);
}
}
}
echo"</td>"; //eid값이 없으면 빈칸입력
}
/////////////////////////////////////////////////////////////////////
echo"</tr>";
}
?>
</table>
</body>
</html>
확장변수 출력부분만 끼워넣었습니다.
url로 실행안되고 사이트내에서 링크로 불러오게 했고요
저 같은경우는 리스트 아래 검색버튼옆에 버튼방식으로 추가해서 사용중입니다.(루트에 위 php 파일이 있고)
<a cond="$grant->manager" class="btn" href="out_excel.php" title="엑셀 출력"> 엑셀출력</a>
전화번호출력과 기타배열들 출력부분은 해당 확장변수 eid값으로 변경해주시면됩니다.
댓글 15
-
파워뭉치
2014.08.13 16:47
-
파워뭉치
2014.08.13 17:35
다른 정보들은 위의 소스로 다 가져오던데 분류 이름은 저장이 안되네요..
아래와 같이 칼럼을 추가하니 분류번호로만 출력되네요.. 분류 이름으로 출력하는 방법이 없을까요?
$getFields
=array("category_srl","title","regdate","content");//출력원하는 칼럼을 배열로 입력 -
한이73
2014.08.19 11:41
xe_documents 테이블에는 카테고리 srl 만 저장이 되니
분류번호로 분류이름을 따로 매칭 시키면 될것 같네요 (많지 않다면)
분류가 많다면
xe_document_categories 테이블에서 찾아야 할텐데...복잡해지겠네요
-
dodosy
2016.07.04 13:03
아직 초보입니다~
그럼 이소스는 수정은 어디로 들어가서 수정해야하나요??
게시판생성후 내용 엑셀출력하면 정보 호환이 잘안되네요; 매번 게시판생성할때마다 엑셀수정해야하나요?
-
Paul
2014.08.15 05:16
먼저 좋은 정보 등록해주셔서 감사합니다. 한가지 궁금한게 있는데요. 위의 코드에서 database 정보 입력하는 곳에서 아래의 부분이 맞는건지 다시한번 확인 부탁드립니다.
"host" => "localhost" // 호스트네임 입력하는 곳.
"user" => "db명" // db명인가요? 아니면 db 유저네임?
"pass" => "db비번" // db 비밀번호 입력하는 곳.
"db" => "xe테이블명" // xe테이블명인가요? 아니면 db명?
"table" => "xe_documents" // 이곳은 table명을 입력하는 곳.
"module_srl => "출력할게시판slr" // 게시판 "모듈명"을 입력하는 것이 맞는지요?
확인부탁 드립니다. 감사합니다.
-
한이73
2014.08.19 11:45
user --> db ID
db --> db명
module_srl --> 게시판 번호 라고 해야겟네요
(ex:
자유게시판 => module_srl = 120
공지사항 => moduel_srl = 110
)
-
Paul
2014.08.19 12:04
감사합니다. 이제 잘 작동하네요. ^^ module_srl 이 게시판 번호였군요. 저는 게시판 모듈 이름인줄 알았었습니다. 감사합니다.
-
꿈틀잉
2015.07.09 11:30
익스플로러에서는 엑셀로 저장되는데 크롬에서는 그냥 php로 저장이 되는부분을 수정할려면
어떻게 해야되나여
-
Xe재미나게
2015.12.13 12:44
와우!! 정말 감사합니다. 잘 되네요. 짱짱!!! 복받으실겁니다.
저도 언젠간 도움이 되는 사람이 되어야 할텐데....
-
아기만세
2016.03.01 12:58
module_srl 은 DB 테이블을 직접 확인하시면 됩니다.
-
제민이아빠
2016.06.14 14:18
이파일을 링크를 걸어놓으려고 list.html 파일에 넣었는데 관리자만 보이는건 왜 그럴까요? ㅠ
-
아스
2016.06.17 11:08
관리자만 보이게 조건이 들어가 있어서 그렇습니다. cond="$grant->manager"를 빼면 다 보일겁니다.
-
아. 한다고 했는데, 정말 아무것도 모르겠습니다. ㅠㅠㅠ 도와주실분 계신가요. 정말 궁금합니다.
-
php 7.0에서는 이 팁이 안먹힐겁니다.
아직 공개된 팁도 없을겁니다.
-
디자인플렉스
2020.04.24 23:33
좋은정보 감사합니다.
| 제목 | 글쓴이 | 날짜 |
|---|---|---|
|
나만의 미니홈 만들기 ㅡ메뉴에 게시판 연결
[6]
| 예뜨락 | 2004.12.17 |
| 새로운 쪽지 유무에 따라 이미지 변경하는 법 [2] | 멀티비타민 | 2013.12.16 |
| 댓글 작성, 추천후 다운로드 받을수 있게 하기. [6] | socialskyo | 2013.09.06 |
| ZB게시판에 구글광고 달수 없나요? [2] | 손주사랑 | 2019.11.23 |
|
[공유]게시물 자동삭제 애드온 (Made by 송동우)
[12]
| 시릐우스 | 2012.09.11 |
|
XE 1.4에서 HTML5 에디터 사용하기 (Flash 없는)
[3]
| Toby | 2021.02.24 |
|
검색엔진 네이버 사이트 순위 SEO 검색엔진 최적화 작업해도 안 올라간다면..
[1]
| CJM | 2022.05.16 |
| 여러가지 프로토타이핑 툴 [1] | 드래그홈 | 2014.03.26 |
| 불법광고 댓글 | greentown | 2021.05.18 |
|
RSS를 활용한 HelloMaster 홈페이지 새글 알리미 설정하기
[3]
| 퍼니온 | 2009.08.16 |
| content 위젯에서 태그로 글 뽑기 | 날아올라 | 2021.02.07 |
| [PHP] 이름 및 연락처 마스킹 처리 [1] | ppumweb | 2018.05.21 |
|
Windows10 에서 IIS + mysql + PHP 설치
[10]
| HSJI | 2014.07.21 |
|
코드 이미지 생성해주는 사이트
[2]
| reactux | 2019.10.06 |
| XE를 다른디렉토리에 설치후 리다이렉트하기 | 디자인플렉스 | 2020.04.24 |
| 게시판 글 엑셀로 출력하기(확장변수 포함) [15] | 한이73 | 2014.07.17 |
|
관리자 아이디/비번을 잃어버렸을때, 관리자페이지 접속을 못할 때 TIP
[1]
| 플레이웹 | 2019.08.13 |
| 커뮤니션 쪽지 보내기 기능을 모바일 에서 실행시 로그인 풀림 현상 | 인천한량 | 2020.04.14 |
| nginx 에서 서브도메인 사용시 로그인유지방법 [3] | garnecia | 2014.02.26 |
|
IIS에서 HTTPS를 사용하기 위한 SSL설정 (letsencrypt 인증서 설치, 갱신)
| ehii | 2016.04.13 |
정말 필요했던건데 상세히 잘 설명해주셨네요..
좋은 정보 너무 감사드려요^^