채택완료

implode 로 넘어온 문자열을 explode 로 처리 했는데

2021-10-31 (일) 00:48:33 1,730

1888875639_1635609201.5952.png

implode 로 넘어온 문자열을 explode 로 처리 한 후 for을 돌리는데

값이 안나오네요.. 사람들 이름이 출력이 되어야 하는데요

print_r 로 확인하면 값은 잘 넘어오더군요..

1888875639_1635609540.7676.png

엑셀로 다운 받고 있는데 $i 를 1부터 해야 하는데 이것도 문제네요..

이걸 1부터 해버리면 배열에서 0 번째 사람이 빠질텐데..

엑셀 다운 받으면 사람수 만큼 칸은 생성이 되는데 왜 이름이 안나올까요 ..

---넘기는 페이지---

Copy
<?php
    $excel_name = array();
    for ($i=0; $row=sql_fetch_array($result); $i++) {
        
        if($row['bar_name2']) { // 수령자가 있으면 수령자 이름으로
            $excel_name[] = $row['bar_name2'];
        } else { // 수령자가 없으면 주문자 이름으로
            $excel_name[] = $row['bar_name'];
        }
    } 
    $result_name = implode(',', $excel_name);
    ?>

    
    <h2>편지 출력</h2>
    <div class="container">
        <div class="box">
            <form name="frm_excel" id="frm_excel" action="./barcode_letter_paper_down.php" method="post">
            <textarea name="result_name" id="result_name" style=""><?php echo $result_name ?></textarea>

... 생략

---엑셀 출력 페이지---

Copy
// 내용 출력
$result_name = explode(',', $_POST["result_name"]);
for($i = 0; $i < count($result_name); $i++) {

    $barname = $result_name;
    
    $str = array("/프","/AS","/as",); 
    $barname = str_replace($str,'',$barname);
    $barname = preg_replace("/[^a-zA-Z가-힣ㄱ-ㅎㅏ-ㅣ*]/u", " ", $barname);
    $barname = rtrim($barname);
    
    $name_chk = preg_match("/[\xA1-\xFE][\xA1-\xFE\*]/", $barname);

    if($name_chk == 1) {
        $barname = $barname.'님';
    } else {
        $barname = $barname;
    }
    
    
    // 셀 병합
    $objPHPExcel->setActiveSheetIndex(0) ->mergeCells('A'.$i.':J'.$i) -> setCellValue('A'.$i, $barname);

    // 셀 크기
    $objPHPExcel->setActiveSheetIndex(0)->getRowDimension($i)->setRowHeight(195);

    // 폰트
    $objPHPExcel->getActiveSheet()->getStyle('A'.$i)->getFont()->setName('맑은 고딕')->setSize(18);

    // 폰트 정렬
    $objPHPExcel->setActiveSheetIndex(0)->getStyle('A'.$i)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);


}
|

답변 3개

채택된 답변
+20 포인트

$barname = $result_name; -> $barname = $result_name[$i];

2021-10-31 (일) 23:00:33

두 분 모두 감사합니다.^^

2021-10-31 (일) 09:05:41
$result_name = explode(',', $_POST["result_name"]);
for($i = 0; $i < count($result_name); $i++) {
    $barname = $result_name[ $i];

또는

$i=1;

foreach( $result_name as $barname) {
   // $barname = $result_name[ $i];

   ...

$i++;

}

답변을 작성하려면 로그인이 필요합니다.