2012-03-08 7 views
0

물론이 문제를 숙고 한 지 몇 시간이 지난 후에도 제 질문에 대한 첫 번째 의견을 통해 즉시 해결할 수 있습니다.PHP fopen에 원하지 않는 내용이 포함되어 있습니다.

문제는 페이지의 맨 위에있는 고유 한 함수 내에이 코드를 포함하고 있었지만 특정 플래그가 $ _POST 배열에 설정된 경우에만이 코드를 호출했기 때문입니다. PHP 파일이 끝날 때까지는 플래그를 확인하지 않았습니다. 나는 함수 앞에 그 검사를 옮겼다. 내가 출력 PHP에서) (CSV 파일을 함수를하면 fopen을 사용하기 위해 노력하고있어


, 그것이 내가 원하는 데이터를 포함하고 있지만, 그것은 또한 전체를 포함

원래 질문은 다음과 같습니다 실제로 출력하려는 ​​내용 앞에 페이지의 HTML 구조는 물론 인라인 스타일 시트가 있습니다.

나는이 코드를 (here에서) 거의 변하지 않았습니다. 나는 PHP 스트리밍 및 출력에 매우 익숙하지 않은, 그래서 나는 확고한 기초이었다 무슨 희망에서 시작 :

$fileName = 'somefile.csv'; 

header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header('Content-Description: File Transfer'); 
header("Content-type: text/csv"); 
header("Content-Disposition: attachment; filename={$fileName}"); 
header("Expires: 0"); 
header("Pragma: public"); 

$fh = @fopen('php://output', 'w'); 

global $wpdb; 
$query = "SELECT * FROM `{$wpdb->prefix}my_table`"; 
$results = $wpdb->get_results($query, ARRAY_A); 

$headerDisplayed = false; 

foreach ($results as $data) { 
    // Add a header row if it hasn't been added yet 
    if (!$headerDisplayed) { 
     // Use the keys from $data as the titles 
     fputcsv($fh, array_keys($data)); 
     $headerDisplayed = true; 
    } 

    // Put the data into the stream 
    fputcsv($fh, $data); 
} 
// Close the file 
fclose($fh); 
// Make sure nothing else is sent, our file is done 
exit; 

내 가정이 예는 자신의 외부 PHP 파일에 포함되는 것이다, 그러나 때문에 된 것입니다 내가 처리하고있는 제약 조건에, 대신 인라인으로 포함하려고합니다. 출력 결과에 긍정적 인 결과가 전혀 없으므로 다소 혼란 스럽다.하지만 이것들에 대한 PHP 문서는 매우 드물기 때문에 아마도 필자가 빠진 것이있다.

+0

인라인 어떻게? 이 코드가 다른 코드에 어떻게 포함되어 있는지 보여 줄 수 있습니까? – webbiedave

+0

믿거 나 말거나, 귀하의 질문에 실제로 문제가 해결되었습니다 :) 문제는 내가이 코드를 페이지의 맨 위에있는 고유 한 함수 내에 포함하고 있었지만 특정 플래그가 설정된 경우에만이 코드를 호출했습니다. $ _POST 배열. PHP 파일이 끝날 때까지는 플래그를 확인하지 않았습니다. 나는 함수 앞에 그 검사를 옮겼다. 감사합니다. – Peter

답변

0

물론이 문제를 숙고 한 지 몇 시간이 지난 후에도 제 질문에 대한 첫 번째 의견을 통해 즉시 해결할 수 있습니다.

문제는 페이지의 맨 위에있는 고유 한 함수 내에이 코드를 포함하고 있었지만 특정 플래그가 $ _POST 배열에 설정된 경우에만이 코드를 호출했기 때문입니다. PHP 파일이 끝날 때까지는 플래그를 확인하지 않았습니다. 나는 함수 앞에 그 검사를 옮겼다.

0

문제는 동일한 PHP 파일 인 CSV 파일과 일부 HTML 콘텐츠에서 동시에 출력하려고하는 것 같습니다. 2 개의 서로 다른 URL을 갖기 위해 URL을 구분해야합니다.

PHP 코드가 HTML 코드 (및 CSS 인라인)로 둘러싸여 있다고 생각합니다. 당신은 할 수있어 무엇

은 다음과 같습니다

  • (물론 여는 PHP 태그 만 당신이 우리를 보여 코드를 포함)에만 CSV 내용을 출력하는 PHP 스크립트를
  • 에는 html 코드를 생성하는 다른 PHP 스크립트가 있으며 이전 스크립트 (예 :)에 대한 링크를 제공합니다.

+0

여러 대의 스크립트를 사용하기가 어려운 플랫폼에서 작업하면서이 작업을 피하려고했습니다. 고맙게도이 모든 것을 하나의 파일로 처리하는 방법을 알았습니다. 관심이 있다면 내가 한 일을 설명하기 위해 내 질문을 편집했습니다. – Peter

0

데이터 앞에 다른 모든 항목이 표시되는 이유는 '인라인 포함'이유와 맞습니다.

이 스크립트는 다른 스크립트에서 인라인으로 포함하는 대신 직접 호출되는 별도의 파일이어야합니다. 나는 당신이 다른 데이터베이스 연결을 가지고 있다는 것을 이해하고 그것을 먼저 설정해야합니다. 표준 페이지에서 추출한 페이지를이 페이지에 포함시켜야합니다.

관련 문제