Форматирование php-файла CSV (заголовки в верхнем ряду, данные во втором ряду) - PullRequest
0 голосов
/ 11 марта 2011

header("Content-type: application/octet-stream"); header("Content-Disposition: attachment; filename=\"yourfile.csv\"");

Я использую это для создания файла CSV;

В настоящее время он отображает данные как;

Заголовок, Данные, Заголовок 2, Данные2, заголовок 3, данные 3 ...

я хочу отобразить данные как;

заголовок, заголовок 2, заголовок 3данные 1, данные 2, данные 3

Как это будет сделано?

    <?php
$sql = "SELECT * FROM survey
        WHERE id = '".sql_escape($s)."'";
$row = fetch0ne($sql);

if(!empty($row)) {

    $int = array();

    $sql = "SELECT * FROM survey_interests
            WHERE survey = '".sql_escape($s)."'";
    $interests = fetchAll($sql);

    if(!empty($interests)) {
        foreach($interests as $item) {
            $int[] = getInterest($item['interest']);
        }
    }


header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"yourfile.csv\"");   
?>
Full Name, <?php echo $row['first_name']." ".$row['last_name']; ?>, Age, <?php echo $row['age']; ?>, Gender, <?php echo $row['gender'] == 'm' ? 'Male' : 'Female'; ?>, Country, <?php echo getCountry($row['country']); ?>, <?php if(!empty($int)) { ?><?php echo implode(", ",$int); ?><?php } ?>, Favorite colour, <?php echo getColour($row['colour']); ?>, Favorite search engine, <?php echo getSearchEngines($row['search_engine']); ?>

<?php

}
?>

Ответы [ 2 ]

1 голос
/ 15 марта 2011

Вы можете изменить свой код:

<?php
$sql = "SELECT * FROM survey
        WHERE id = '".sql_escape($s)."'";
$row = fetch0ne($sql);

if(!empty($row)) {

    $int = array();

    $sql = "SELECT * FROM survey_interests
            WHERE survey = '".sql_escape($s)."'";
    $interests = fetchAll($sql);

    if(!empty($interests)) {
        foreach($interests as $item) {
            $int[] = getInterest($item['interest']);
        }
    }


header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"yourfile.csv\"");   
?>
Full Name, Age, Gender, Country, Favorite colour, Favorite search engine
<?php echo $row['first_name']." ".$row['last_name']; ?>, <?php echo $row['age']; ?>, <?php echo $row['gender'] == 'm' ? 'Male' : 'Female'; ?>, <?php echo getCountry($row['country']); ?>, <?php echo getColour($row['colour']); ?>, <?php echo getSearchEngines($row['search_engine']); ?>

<?php

}
?>
0 голосов
/ 11 марта 2011

Я думаю, что ваши данные похожи на ниже -

$records = array(
               [0] = array(heading=>data 1, heading 2=>data 2, heading 3=>data 3),
               [1] = array(heading=>data 1, heading 2=>data 2, heading 3=>data 3),
               [2] = array(heading=>data 1, heading 2=>data 2, heading 3=>data 3),
               [3] = array(heading=>data 1, heading 2=>data 2, heading 3=>data 3)
           );

Вы можете следовать следующим понятиям -

$heading = implode(',', array_keys( array_pop($records) ) );

header("Content-type: application/octet-stream"); header("Content-Disposition: attachment; filename=\"yourfile.csv\"");

echo $heading."\n\r"; // HEADER IS BEING PLACED HERE

foreach($records as $row){ // CONTENTS IS BEING PLACED HERE
    echo implode(',', $row)."\n\r";
}
exit;
...