#php #mysql #excel #cron
#php #mysql #excel #cron
Вопрос:
Итак, у меня есть этот код для экспорта данных из базы данных mysql в файл Excel, и я хочу, чтобы он выполнялся с помощью crobjob, проблема в том, что этот код не извлекает никаких значений, он просто выдает мне пустой scrren, я не знаю почему…
<?php
//export.php
$connect = mysqli_connect("localhost", "user", "pw", "bd");
$output = '';
if(isset($_POST["export"]))
{
$query = "SELECT * FROM PersonalData ";
$result = mysqli_query($connect, $query);
if(mysqli_num_rows($result) > 0)
{
$output .= '
<table class="table" bordered="1">
<tr align="center">
<th align="center">Family Name</th>
<th align="center">First Name</th>
</tr>';
while($row = mysqli_fetch_array($result))
{
$output .= '
<tr>
<td align="center">'.$row["FamilyName"].'</td>
<td align="center">'.$row["FirstName"].'</td>
</tr>';
}
$output .= '</table>';
header('Content-Type: application/xls');
header("Content-Type: application/force-download");
header('Content-Disposition: attachment; filename=assets_colaboradores.xls');
//
echo $output;
}
}
?>
Комментарии:
1. Если он выполняется через задание cron, как это дает вам «пустой экран»? Считаете ли вы, что одно из ваших условий не выполняется?
2. ^^^ Нечетко сформулированный мой вопрос
3. Это дает мне пустой экран, потому что, когда я печатаю
php export.php
, он выводит только пустую строку.4. Если вы хотите это в Excel, я бы посоветовал вам попробовать формат CSV, а не HTML, и дать ему
.csv
расширение, а не xls5. хорошо, мне удается что-то вывести, но … он выводит все, HTML-теги и т.д. и т.п. В виде обычного текста
Ответ №1:
Попробуйте вывести в CSV. Вот функция, которая преобразует ассоциативный массив в CSV, который я создал:
function array2CSV($fileName, $array, $headers = false) {
// Set file headers
header('Content-type: text/csv');
header('Content-Disposition: attachment; filename="' . $fileName . '"');
header('Pragma: no-cache');
header('Expires: 0');
// Open CSV to write
$file = fopen('php://output', 'w');
// Assign header names either from $headers or the array keys of $array
$headers = ($headers) ? $headers : array_keys($array[0]);
// Write the header row into the file
fputcsv($file, $headers);
foreach ($array as $row) {
// Write a row to the file
fputcsv($file, $row);
}
exit();
}