묻고답하기

코어 1.8.15 / 보드스킨 스케치북 최신버전

게시판에 내용(확장변수)을 엑셀로 가지고 오려고 합니다.

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

 

위팁으로 적용했는데.... 확장변수는 가지고 오지만 확장변수 값을 가지고 오지를 않아서요.

그래서 xe_documents 대신 xe_document_vars 로 변경하니 확장변수 값을 잘 가지고 옵니다.

(저는 타이틀,컨텐츠 보단 확장변수값이 중요해서요.)

 

근데 문제가.....

1. 확장변수값을 잘 가지고 오는데 중복해서 가지고 옵니다.

확장변수가 총20개이고 입력한 값(확장변수)이 15개라면 똑같은 내용을 15개 가지고 옵니다.

아래 테스트 그림입니다.

sample1.jpg

위 그림에서 홍길동은 30개 확장변수 중 25개를 입력하니까 홍길동이 25번 나오고

김*영은 30개 확장변수 중 24개를 입력하니까 24번이 나옵니다.

한번만 나오게 할 순 없을까요?

2. 휴대폰번호..... 팁소스에서 "|@|" -> "-" 변경된다고 나오는데 전 그대로 - 대신 |@| 로 나옵니다.

3. 삭제한 글도 엑셀 출력시 나옵니다. ㅜㅜ

 

아래 제가 등록한 소스입니다.

<?php
//url 로 직접 불러오는것을 방지
if(!strstr($_SERVER['HTTP_REFERER'],$_SERVER['SERVER_NAME'])&& !strstr($_SERVER['HTTP_REFERER'],'out_excel.php')) exit;
 
$info = array(
"host" => "localhost",
"user" => "입력",
"pass" => "입력",
"db" => "입력",
"table" => "xe_document_extra_vars",
"module_srl" => "240",
);
$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());
$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>

 

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

즐거운 주말되시고 

고수님들 조언 좀 부탁드립니다. ^^;

글쓴이 제목 최종 글
XE 공지 글 쓰기,삭제 운영방식 변경 공지 [16] 2019.03.05 by 남기남
아린 이미지 자동출력 애드온이 필요합니다. ㅠㅠ  
Tala 사이트 접속에 문제가 생겼습니다  
괴적인격 메뉴링크를 걸었는데요 [4] file 2016.01.10 by 괴적인격
집에가는길 방법 아시면 알려주세요ㅠㅠ file  
옆집옵하 게시판 엑셀로 변환 문의드립니다. [2] file 2016.01.10 by 옆집옵하
lark007 나눔바른고딕체 익스플로러(ie)에서는 적용이 안되요ㅠ  
피카 스케치북 웹진 목록의 요약의 줄바꿈이 안됩니다. 며칠째 삽질중입니다. [4] file 2016.01.09 by 피카
saramjh 멀티미디어 섬네일 애드온을 스케치북5에 사용  
saramjh 스케치북5 유튜브 섬네일 이상현상 [3] file 2016.01.09 by saramjh
LadyJEn3cdfd 페이지 전환에 관해서 여쭤봅니다. [10] 2016.01.09 by LadyJEn3cdfd
greenCode 서브 도메인별로 다른 xe 레이아웃을 불러 오고 싶습니다. [3] 2016.01.09 by greenCode
paraduxx DB 마이그레이션시 특정아이디가 쓴 글을 못가져옵니다 [2] 2016.01.09 by sejin7940
paraduxx 마이그레이션때 2G 이상 파일 인식 불가 [6] 2016.01.09 by paraduxx
flflflfkfl 관리자 로그인 및 홈페이지 문제  
집에가는길 session 모듈 업데이트 문제  
솔파도 네이버아이디로 로그인에 대해 설명좀 해주세요! [3] 2016.01.09 by 솔파도
여덟 최고의 웹사이트와 홈페이지를 저렵하게 구축해 드립니다.  
A양 레이아웃의 가로 너비? 폭? 을 조정하는 방법.  
qkrcjfgus33 캐시 자동정리코딩을 해봤는데 의견 나눠요(?)  
송선생님 스케치북 모바일 글쓰기시 <p></p> 가 붙습니다.  
화려한마법사 비밀번호 변경 팝업창에 스킵 버튼 넣는 방법 file  
maroni 1.8.15업데이트 이후 썸네일 복구가 안됩니다 [7] 2016.01.08 by maroni
마키1 수정비용지불드릴께요 제발 도와주세요 페이지들 센터 맞추기 [9] file 2016.01.08 by 마키1
야울쫑 엔진업데이트? file  
thdwjdtjr 배경음악이 끊어지지않고 게시판을 옮겨도 이어서 나오게 [2] 2016.01.08 by 퍼니엑스이
luvXE 새 회원가입시 관리자 이메일로 통보 받는 방법 [2] 2016.01.08 by 은혜물가
khsskyblue 회원가입시 관리자메일로 통보하는 기능 좀 알려주세요? [2] 2016.01.08 by 은혜물가
곽도영 관리페이지 오류 [3] file 2016.01.07 by HowtoXE
스파모 홈페이지 메인을 바꾸고 싶은데 궁금한점이 있습니다 [2] 2016.01.07 by HowtoXE
응ㅇ어ㅏ너 XE 1.7버전 php 7.0 호환여부 [2] 2016.01.07 by Luatic™