Я пытался сделать страницу WordPress, которая будет экспортировать файл .csv с данными из моей таблицы «статистика». Этот скрипт ниже отлично работает на localhost, если я поместил его в файл .php.
Но в WordPress это не работает по-моему. Я поместил этот скрипт на отдельной странице, используя плагин для вставки PHP. Он загружает файл .csv, когда я захожу на эту страницу, но данные внутри не являются данными из таблицы. Это дает данные, с тегами div и ошибками. Я пробовал также другой скрипт из Exchange, и снова, он возвращает этот странный файл, так что, очевидно, проблема в WordPress и моем понимании того же.
КОДЯ поставил этот скрипт на www.mydomain.com/export (это WordPress страница).
[insert_php]
global $wpdb;
$result = $wpdb->get_results('SELECT * FROM statistics', ARRAY_A);
header('Content-Type: text/csv');
$date = date("Y-m-d H:i:s");
header('Content-Disposition: attachment;filename=EXPORT_' . $date . '.csv');
foreach ($result as $row) {
if ($row) {
exportCsv(array_keys($row));
}}
while ($row) {
foreach ($result as $row) {
exportCsv($row);
}}
function exportCsv($rows) {
$separator = '';
foreach ($rows as $row) {
echo $separator . $row;
$separator = ',';
}
echo "\r\n";
}
[/insert_php]
Что мне не хватает? Как это сделать? Я хочу сделать экспорт одной таблицы в MySQL, которая будет экспортировать ее в хорошо отформатированном виде в файл .csv, чтобы пользователи могли загрузить ее на компьютер.
Экспортируйте таблицу базы данных в csv, используя страницу WordPress и php.
Я серьезно сомневаюсь, что код может работать: что while ($row)
всегда верно (бесконечный цикл).
Я немного изменился:
$result = $wpdb->get_results('SELECT * FROM statistics', ARRAY_A);
if ($wpdb->num_rows) {
exportCsv(array_keys(current($result)));
foreach ( $result as $row )
exportCsv($row);
}
function exportCsv($fields) {
echo implode(',', $fields) . "\r\n";
}
Может быть, этот код может делать то, что вы хотите?
https://gist.github.com/umairidrees/8952054#file-php-save-db-table-as-csv