Добавление серийного номера в первый столбец при экспорте mysql как excel через php - PullRequest
0 голосов
/ 05 августа 2020
• 1000

Итак, я хочу добавить серийный номер в первый столбец для записей из mysql. Что для этого можно добавить в приведенный ниже код?

Ваша помощь приветствуется.

мой текущий код выглядит следующим образом:

<?php
include("db.php");

$file_name = "My-Records-" . date('d-F-Y-H-i-s') . ".xls";

function cleanData(&$str){
    $str = preg_replace("/\t/", "\\t", $str);
    $str = preg_replace("/\r?\n/", "\\n", $str);
     if(strstr($str, '"')) $str = '"' . str_replace('"', '""', $str) . '"';
}
function modify($str) {
    return ucwords(str_replace("_", " ", $str));
}

# Header information
header("Content-Disposition: attachment; filename=\"$file_name\"");
header("Content-Type: application/vnd.ms-excel");

$flag = false;
$result = $database->get_results("SELECT lname, fname, mobile, email, form_date FROM myTable") or die('Connection failed!');
foreach($result as $row){
    if(!$flag){
      // display field/column names as first row
       $old_states1 = array_keys($row);
       $old_states2 = array_map("modify", $old_states1);
       $states = implode("\t", $old_states2 ) . "\r\n";

       print $states;
      $flag = true;
    }
     array_walk($row, 'cleanData');
    print implode("\t",  array_values($row)) . "\r\n";
}
exit;
?>

1 Ответ

0 голосов
/ 21 августа 2020

Немного измените свой код, чтобы получить то, что вы хотите:

// ...

// NEW CODE HERE
$row_index = 0;

foreach ($result as $row) {
    // NEW CODE HERE
    $row = array_merge(['id' => ++$row_index], $row);
       
    if (!$flag) {
       // display field/column names as first row
       $old_states1 = array_keys($row);
       $old_states2 = array_map("modify", $old_states1);
       $states = implode("\t", $old_states2 ) . "\r\n";

       print $states;
       $flag = true;
    }
    
    array_walk($row, 'cleanData');
    
    print implode("\t",  array_values($row)) . "\r\n";
}

Полный демонстрационный код

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...