자유게시판

pre로 css처럼 찍어서 내보내는 php를 엑셀로 출력해서, 브라우져로부터 저장하게끔 하는 것을 chat gpt와 같이 php코딩을 하려고 합니다.

작성자 정보

  • 삼둡 작성
  • 작성일

컨텐츠 정보

본문

pre로 css처럼 찍어서 내보내는 php를 엑셀로 출력해서, 브라우져로부터 저장하게끔 하는 것을 chat gpt와 같이 php코딩을 하려고 합니다.

 

원본은 아래와 같아요

 

보안을 위해 **를 이용해서 몇가지는 지웠습니다.

 

 

<?php

include_once("./_common.php");
$g4[title] = "****cted";
include_once("./lib.php");
include_once("$g4[path]/_head.php");
erp_connect();

*****l(5);
$new_date=date("Y-m-d", $newdate);

 

$tmp_array = array();
  $tmp_array = $_POST[chk_serial];

 

echo "<pre>";

for ($xi=count($chk_serial)-1; $xi>=0; $xi--)
{
$query = "select * from ****** where serial={$chk_serial[$xi]};";

//echo $query,"<br>\n";

  $rs = mysql_query($query);
  $array = mysql_fetch_array($rs) ;

//print_r ($array);

 

$branch=$array[branch];

   $sql="select lifemaru, address, phone from branch where branch_name = '$branch'";
   $rs=sql_q2($sql);
   $row=mysql_fetch_array($rs);
   $lifemaru_mode=$row[0];
       $address=$row[1];
       $phone =$row[2];

   if ($lifemaru_mode == 2 || $lifemaru_mode == 1)
   {
       $branch="******(".$branch.")";

       }
       else
       {
       if ($branch="***")

               {
               $branch="*****";
               }
               else
               {
               $branch=$branch."*****";
               }
                }
       }

if (!$array[serial])
               {alert("*******");}

if (!$address and !$lifemaru_mode)
       {
       $address="*********호";
       }

 


echo
"$array[pt_name] , $array[phone1]  , $array[phone2] , $array[address] , $branch, $phone, $address,\n";

 

} //for xi route

 

mysql_close();

?>
 

 

de0449b50c7472e0972141b2d2ab8db3347f73f2pxl6.png

 

<?php
include_once("./_common.php");
$g4['title'] = "송장출력 selected";
include_once("./lib.php");
include_once("$g4[path]/_head.php");
erp_connect();

rx_level(5);
$new_date = date("Y-m-d", $newdate);

$tmp_array = array();
$tmp_array = $_POST['chk_serial'];

$dataArray = array();

for ($xi = count($tmp_array) - 1; $xi >= 0; $xi--) {
   $query = "SELECT * FROM make_herb WHERE serial = {$tmp_array[$xi]};";
   $rs = mysql_query($query);
   $array = mysql_fetch_array($rs);

   $branch = $array['branch'];

   $sql = "SELECT lifemaru, address, phone FROM branch WHERE branch_name = '$branch'";
   $rs = sql_q2($sql);
   $row = mysql_fetch_array($rs);
   $lifemaru_mode = $row[0];
   $address = $row[1];
   $phone = $row[2];

   if ($lifemaru_mode == 2 || $lifemaru_mode == 1) {
       $branch = "생명마루(" . $branch . ")";
   } else {
       if ($branch == "청담") {
           $branch = "청담BS한의원";
       } else {
           $branch = $branch . "한의원";
       }
   }

   if (!$array['serial']) {
       alert("처방이 유효하지 않습니다");
   }

   if (!$address && !$lifemaru_mode) {
       $address = "안산 단원구 고잔2길 65, 경신프라자 406호";
   }

   $dataArray[] = array(
       $array['pt_name'],
       $array['phone1'],
       $array['phone2'],
       $array['address'],
       $branch,
       $phone,
       $address
   );
}

// 엑셀 파일로 변환
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename=address_book.xls');
header('Cache-Control: max-age=0');

$output = fopen('php://output', 'w');
foreach ($dataArray as $row) {
   fputcsv($output, $row, "\t");
}
fclose($output);

// logging
$ip = $REMOTE_ADDR;
$action = $g4['title'] . $sql;

// logging ($member['mb_id'], $member['mb_name'], $ip, $action);

include_once("erp_tail.php");

mysql_connect("localhost", "intra", "pre00296") or die(mysql_error());
mysql_select_db("intra");

include_once("$g4[path]/_tail.php");

mysql_close();
?>

 

네가 준 코드로 하면, 이쁜 화면은 출력이 안되고 파일 저장만 되게 할 것 같은데, 안내화면은 출력되고 새 창이 열리면서 엑셀을 저장할 수 있게 수정해주라

 

ChatGPT

ChatGPT

 

알겠습니다. 아래 코드는 엑셀 파일 다운로드를 위한 버튼을 추가하고, 클릭 시 해당 데이터를 엑셀 파일로 변환하여 브라우저에 다운로드되도록 수정한 코드입니다. 이 코드는 버튼을 클릭하면 엑셀 다운로드 창이 뜨는 방식으로 동작합니다.

 

<!-- 엑셀 다운로드 버튼 추가 -->
<button onclick="downloadExcel()">엑셀 다운로드</button>

<script>
function downloadExcel() {
   var dataArray = <?php echo json_encode($dataArray); ?>;

   var csvContent = "data:text/csv;charset=utf-8,\uFEFF"; // BOM 추가
   dataArray.forEach(function(rowArray) {
       var row = rowArray.join("\t");
       csvContent += row + "\r\n";
   });

   var encodedUri = encodeURI(csvContent);
   var link = document.createElement("a");
   link.setAttribute("href", encodedUri);
   link.setAttribute("download", "address_book.xls");
   document.body.appendChild(link);
   link.click();
}
</script>

 

위에거 한글 문제로 폐기

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

 

 

 

<a href="javascript:invoice_select();">
<span  style="background-color:#cc99cc;width:40px;text-align:center;">
<strong>송장css프린트</strong></span></a>
 

 

function invoice_select() {
   var f = document.fcategory;

   str = "송장css프린트";
   if (!check_confirm(str))
       return;
/*
   if (!confirm("선택한 항목에 "+str+"을 하시겠습니까?"))
       return;
*/
   f.action = "./invoice_css.php";
   f.submit();
}
 

 

preg_replace('/\r\n|\r|\n/',

 

아래 파일에서 버튼눌려지면 실행되어

csv출력을 시킵니다(다운로드 가능하게)

 

 

<?php
include_once("./_common.php");

$g4[title] = "송장출력 csv";
 

중간생략


$inputString= $array[address];


// '*'을 기준으로 문자열을 분할
$parts = explode('**', $inputString);

// '*' 이전의 문자열 추출 (str1)
$str1 = isset($parts[0]) ? $parts[0] : '';

// '*' 이후의 문자열 추출 (str2)
$str2 = isset($parts[1]) ? $parts[1] : '';

/*
echo
"$array[pt_name] ,$str1,  $array[phone1]  , $array[phone2] , 한약, ,  $branch, $phone, $address, $str2 , \n";
*/
   $dataArray[] = array(
       $array['pt_name'], $str1,
       $array['phone1'],
       $array['phone2'], '한약', '',
       $branch,
       $phone,
       $address, $str2 );

$pt_name = str_replace("," , ".", $array['pt_name']);
$str1 = str_replace(",",".", $str1);
$str1 = str_replace("\r"," ",$str1);
$phone1 = str_replace(",",".",$array['phone1']);
$phone2 = str_replace(",",".",$array['phone2']);
$branch = str_replace(",",".",$branch);
$phone = str_replace(",",".", $phone);
$address = str_replace(",",".",$address);
$str2 = str_replace(",",".",$str2);

$phone = str_replace("\n","", $phone);
$address = str_replace("\n","",$address);

$pt_name = preg_replace('/\r\n|\r|\n/','', $array['pt_name']);
$str1 = preg_replace('/\r\n|\r|\n/','',$str1);
$phone1 = preg_replace('/\r\n|\r|\n/','',$array['phone1']);
$phone2 = preg_replace('/\r\n|\r|\n/','',$array['phone2']);
$branch = preg_replace('/\r\n|\r|\n/','',$branch);
$phone = preg_replace('/\r\n|\r|\n/','', $phone);
$address = preg_replace('/\r\n|\r|\n/','',$address);
$str2 = preg_replace('/\r\n|\r|\n/','',$str2);

$phone = preg_replace('/\r\n|\r|\n/','', $phone);
$address = preg_replace('/\r\n|\r|\n/','',$address);
 

 

 

***콤마와 엔터때문에 추출하는 식이 많아지 ㅁ ㅜㅜ



$output =
       $array['pt_name'].",".
       $str1 .",".
       $array['phone1'].",".
       $array['phone2'].",".
       "한약,".
       " ,".
       $branch.",".
       $phone.",".
       $address.",". $str2 ."\r\n" ;

       print $output;
} //for xi route

 

 

 

mysql_close();

?>
 

관련자료

댓글 0
등록된 댓글이 없습니다.

인기검색어


최근글


새댓글