웹마스터 팁

<?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 에서 테스트 했습니다.

 

제목 글쓴이 날짜
게시판 글 엑셀로 출력하기(확장변수 포함) [15] 한이73 2014.07.17
확장변수값 계산하여 게시판 리스트에 출력하기(총계 게시판) [1] file klaist 2009.11.30
게시판글 엑셀 파일 보내기 php7용 file 황금날개 2018.06.05
게시글 확장변수 순으로 정렬하기 (2010.01.18 13:18 수정) [24] June Oh 2010.01.11
확장변수 출력 방법 초 심플하게 적어봅니다. [15] 라르게덴 2009.03.16
게시판 하단 검색대상의 순서,노출항목 들 제어하는 방법 [1] sejin7940 2013.10.15
외부 페이지에서 회원 프로필 정보(확장변수) 나타내기 한꼬마 2015.10.14
[XE수정] 관리자페이지 회원리스트를 내맘대로 브레인630 2015.08.11
XE 1.5 에서 확장변수 검색이 안 되시는 경우 해결책 [5] sejin7940 2012.01.24
확장변수 검색시 범위 설정해서 검색하는 팁. [2] 키다리아저씨2 2015.06.16
리스트에 스크랩 버튼을 뺴는 코드입니다. [3] 착한악마 2015.04.30
자신이 쓴 글에 특정유저 댓글을 차단 Ikoo 2015.06.20
구글 웹폰트 부분으로 적용하기 착한동구 2015.06.05
확장변수(textarea)에서 html 사용하기 [3] 하늘종 2010.11.01
정렬을 사용자정의값으로 한 경우 저장이 안 되는 현상 수정 [1] sejin7940 2015.01.06
확장변수에 시분초 추가하기 [1] file 해떨 2015.04.15
게시판 최초 정렬을 사용자정의(확장변수) 기준으로 설정 가능하게 하는 방법 [8] sejin7940 2014.01.20
확장변수 정렬 방법 아름다운청년1 2014.12.31
파일첨부 된 글을 게시글 이동시, 사용자정의 값이 전부 삭제되는 버그 패치 [5] sejin7940 2014.11.20
게시판 목록에서 새창 띄워서 다른 형태 나오게 하기 [3] foret 2014.02.23