2016-09-30 5 views
0

wordpress 플러그인의 PHP 배열에서 csv 파일을 내보내는 중입니다.PHP 단순 csv 내보내기가 Wordpress Plugin의 배열과 호환되지 않습니다.

그러나 을 foreach 안에 넣으면 배열의 첫 번째 요소로 만든 CSV 파일을 만듭니다. 그렇지 않으면 CSV 파일이 생성되지 않습니다.

배열 :

Array 
(
    [0] => Array 
     (
      [fname] => test name 1 
      [lname] => lname 2 
     ) 
    [1] => Array 
     (
      [fname] => test name 2 
      [lname] => lname 
     ) 
) 

코드 :

header('Content-Type: text/csv; charset=utf-8'); 
    header('Content-Disposition: attachment; filename=loyalty.csv'); 

    $filename = "loyalty.csv"; 
    $handle = fopen('php://output', 'w'); 

    fputcsv($handle, array('First Name','last Name')); 
    foreach($loUsers as $row) { 
     fputcsv($handle, $row); 
    //die; 
    } 
    fclose($handle); 

die 아무것도 일어나지 않습니다하지만 넣어하지만 경우 CSV 파일의 첫 번째 요소로 만든 주석되지 않는 경우. 코드가 정확한 것으로 보이고 문제를 찾을 수 없습니다. 감사

+0

넣어 헤더가 잘못가는 뭐죠 왜 그냥 찾을 수는 foreach 루프 내에서 시도 캐치를 사용하여 오류를 쓰기 해달라고 –

+1

를 작성 파일을 완료? –

+0

@MichalHainc try catch하지만 아무 것도 시도하지 않았습니다. – Miuranga

답변

1

이 시도 :

header("Content-Type: text/csv"); 
     header("Content-Disposition: attachment; filename=User_Sample.csv"); 
     // Disable caching 
     header("Cache-Control: no-cache, no-store, must-revalidate"); // HTTP 1.1 
     header("Pragma: no-cache"); // HTTP 1.0 
     header("Expires: 0"); // Proxies 

     $data = array(
      array('User Type', 'User Name', 'Category', 'Mobile Number'), 
      array('I', 'Anuj Kumar', 'Building Construction', '8500000001'), 
      array('I', 'Arvind Kumar', 'Carpentary', '8500000002'), 
      array('I', 'Mridul Ohja', 'Civil Engineering', '8500000003'), 
      array('I', 'Naman Kumar', 'Electrical', '8500000004'), 
      array('I', 'Sumati', 'Faucets', '8500000005'), 
      array('I', 'Anjum', 'Flooring Tiles/Marbles', '8500000006'), 
      array('I', 'Rajat', 'Painting', '8500000007'), 
      array('C', 'Arvind', 'Plumbing', '8500000008'), 
      array('C', 'Rohit', 'Sanitaryware', '8500000009'), 
      array('C', 'Gaurav', 'Soil Test Analyst', '8500000010') 
     ); 

     $output = fopen("php://output", "w"); 
     foreach ($data as $row) { 
      fputcsv($output, $row); // here you can change delimiter/enclosure 
     } 
     fclose($output); 

그것은 나를 위해 작동합니다.

+0

난 그냥 당신의 코드를 복사하지만 동일한 문제가 거기에 시도하고 죽을 때 하나의 행과 CSV를 생성 복사 – Miuranga

1

확인이 밖으로 쉬운 : 후

<?php 
    session_start(); 
    include_once('includes/config.php'); 
    $filename = "testing-exports.csv"; 
    header("Content-type: text/csv"); 
    header("Content-Disposition: attachment; filename=$filename"); 
    header("Pragma: no-cache"); 
    header("Expires: 0"); 

    $insquery = "SELECT username FROM r_institution where status=1"; 
    //$exportstmt = $conn->query($insquery); 
    $insresults = $conn->query($insquery); 
    //$insresults = mysqli_fetch_assoc($exportstmt); 
    foreach ($insresults as $rs) { 
     $row = array(); 
     $row[] = stripslashes($rs["username"]); 
     $content[] = $row; 
    } 
    $content = array(); 
    $title = array("Institution Emails"); 
    foreach ($insresults as $rs) { 
     $row = array(); 
     $row[] = stripslashes($rs["username"]); 
     $content[] = $row; 
    } 
    $output = fopen('php://output', 'w'); 
    fputcsv($output, $title); 
    foreach ($content as $con) { 
     fputcsv($output, $con); 
    } 
?> 
관련 문제