웹마스터 팁

<?php
//url 로 직접 불러오는것을 방지
 if(!strstr($_SERVER['HTTP_REFERER'],$_SERVER['SERVER_NAME'])&& !strstr($_SERVER['HTTP_REFERER'],'out_excel.php')) exit;
 
$servername = "localhost";
$username = "user ID";
$password = "DB_password";
$table = "xe_documents";
$database = "DB name";
$module_srl = "module srl"; // 숫자 입력

$con = new mysqli($servername,$username,$password,$database);

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$getcolumns = array("title"); //출력원하는 칼럼을 배열로 입력
 
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=doc_".date('Ymd').".xls");
 

?>
 
<!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

//제목 불러오기

$sql = "SHOW COLUMNS FROM $database.$table";
$dbcolumns = mysqli_query($con,$sql); //xe_documents에서 칼럼값 불러오기

// fetch associative array
while ($rowname = mysqli_fetch_row($dbcolumns)) {
    if( in_array($rowname[0], $getcolumns) ) echo "<th>".$rowname[0]."</th>";
}

//확장변수의 타이틀은 값이므로      
$result = mysqli_query($con, "select var_name from xe_document_extra_keys where module_srl = $module_srl");                 
while( $data = mysqli_fetch_array($result) ){                         
    echo "<th>".htmlspecialchars($data[var_name])."</th>";

 
echo"</tr>";

//데이터 불러오기
$result = mysqli_query($con, "select * from $table where module_srl=$module_srl");
while( $data = mysqli_fetch_assoc($result) ){
    echo"<tr>";
    foreach( $data as $key => $val ){
        if( in_array($key, $getcolumns) ){
            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=mysqli_query($con, "select eid from xe_document_extra_keys where module_srl = $module_srl");     
 while($extra_title=mysqli_fetch_array($query)){     
  echo"<td>";
  $egetFields = array("value","eid"); //확장변수 값을 불러와 eid값이 같은곳에 출력
  $extra_result = mysqli_query($con, "select * from xe_document_extra_vars where document_srl = $d_srl"); 
  while( $edata = mysqli_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>";
}
 
mysqli_close($con);

?>
</table>
</body>
</html>

------------------------------------------------------------------------------------------------------------------

https://www.xpressengine.com/index.php?mid=tip&search_target=title_content&search_keyword=%EC%97%91%EC%85%80&document_srl=22795784

글을 조금 수정해서 php7에서 사용할 수 있도록 했습니다.

만약, 오류가 나더라도 답변할 실력이 안됩니다.

centos 7, php7.2 에서 테스트 했습니다.

 

제목 글쓴이 날짜
게시판글 엑셀 파일 보내기 php7용 file 황금날개 2018.06.05
외부 페이지에서 회원 프로필 정보(확장변수) 나타내기 한꼬마 2015.10.14
[XE수정] 관리자페이지 회원리스트를 내맘대로 브레인630 2015.08.11
자신이 쓴 글에 특정유저 댓글을 차단 Ikoo 2015.06.20
확장변수 검색시 범위 설정해서 검색하는 팁. [2] 키다리아저씨2 2015.06.16
구글 웹폰트 부분으로 적용하기 착한동구 2015.06.05
리스트에 스크랩 버튼을 뺴는 코드입니다. [3] 착한악마 2015.04.30
확장변수에 시분초 추가하기 [1] file 해떨 2015.04.15
정렬을 사용자정의값으로 한 경우 저장이 안 되는 현상 수정 [1] sejin7940 2015.01.06
확장변수 정렬 방법 아름다운청년1 2014.12.31
파일첨부 된 글을 게시글 이동시, 사용자정의 값이 전부 삭제되는 버그 패치 [5] sejin7940 2014.11.20
게시판 글 엑셀로 출력하기(확장변수 포함) [15] 한이73 2014.07.17
관리자가 글 쓸때는 분류를 선택 안 해도 등록되도록 (공지글을 쓸때를 위해) 개선 [2] sejin7940 2014.06.21
마이피플봇을 이용한 마이피플 알리미 (푸시서비스) 이용하기 [4] garnecia 2014.06.01
게시판 글쓰기 폼은 없이 확장변수만 표시할 수 있는 게시판 만들기 (for sketchbook5 최신버전 기준) [2] 큰성565 2014.05.02
*LI-NA님의 큰 선물* SKETCHBOOK5 (최신버전)에서 특정 확장변수를 추천하는 사람에게만 공개하도록 하는 방법 [4] file 큰성565 2014.04.30
게시판에 대해 닉네임,이름 등의 정렬을 추가하는 방법 [1] sejin7940 2014.03.09
코어 수정 없이 스킨 수정만으로 게시판 목록에 유튜브,비메오 썸네일 출력 [2] foret 2014.02.23
게시판 목록에서 새창 띄워서 다른 형태 나오게 하기 [3] foret 2014.02.23
XE 1.7.4 새로운 우편번호 체계에서 나머지주소 관련 사용실수 방지방법입니다 [1] sejin7940 2014.02.07