Структура текстового файла (таблицы) - PullRequest
2 голосов
/ 19 мая 2011

Хорошо, я знаю, что недавно мне очень помогли здесь написать запросы в php и вывести их в текстовый файл. Я наконец понял и узнал, как на самом деле это сделать (спасибо, ребята!). Код ниже показывает, что у меня есть:

Теперь я знаю, что структура таблицы (th / tr / td) не работает в текстовом файле. Мне было интересно, если кто-нибудь знает, как получить это в традиционном представлении "столбец", как:

id   ||   title   ||   keyword
================================
2    ||   bob     ||   jones
2    ||   bob     ||   jones
2    ||   bob     ||   jones
2    ||   bob     ||   jones

Мне не обязательно нужны границы или что-то еще, по крайней мере, легко читаемый формат. Этот выводимый файл будет использоваться продуктами Google для компании, в которой я работаю (и мне нужен простой для чтения формат, или, я полагаю, просто в формате таблицы. Я мог бы сделать CSV, но я знаю меньше о что тогда я делаю php. Еще раз спасибо.

Ответы [ 2 ]

3 голосов
/ 19 мая 2011

CSV тривиален с fputcsv:

$fh = fopen('output.csv', 'w') or die("can't open file");

// output header and first row
$row = mysql_fetch_assoc($result)
fputcsv($fh, array_keys($row));
fputcsv($fh, $row);

// output the remaining rows
while ($row = mysql_fetch_assoc($result)) {
    fputcsv($fh, $row);
}

fclose($fh);
2 голосов
/ 19 мая 2011

Хорошо, давайте посмотрим, как мы можем это сделать. Я просто сосредоточусь на печати соответствующих заголовков и отображении отформатированных результатов. Итак, в этом случае мы будем использовать fprintf , чтобы напечатать какой-нибудь необычный отформатированный текст в нашем файле здесь. Итак, вот в основном, как это сделать:

id   ||   title   ||   keyword

Во-первых, нам нужно сделать ширину для этих полей, чтобы все хорошо отображалось. Мы установим ширину 10 для каждого:

fprintf($fh, "%-10s || %-10s || %-10s\n", "id", "title", "keyword");

То, что делает %-10s, говорит нам, что нам нужна строка, отформатированная с шириной 10 символов, с пробелами, используемыми для заполнения, если длины недостаточно. Вы можете настроить 10 на любую ширину, которую хотите, чтобы получить лучший результат. В результате получается что-то вроде этого:

id         || title      || keyword

Затем мы распечатываем наш разделитель, который я немного подправил, пока он не получится таким же:

fprintf($fh, "===================================\n");

Затем мы проходим цикл и выводим наши значения:

while ($row = mysql_fetch_assoc($result)) {
  fwrite($fh, "%-10s || %-10s || %-10s\n" $row['card_id'], $row['title'],  $row['description']);
}

Что даст нам что-то вроде этого:

id         || title      || keyword   
===================================
2          || bob        || jones     
2          || bob        || jones     
2          || bob        || jones     
2          || bob        || jones   

И это все! Вот полный код для справки:

<?php
// Make a MySQL Connection
 mysql_connect("mysql4.host.net", "user", "pass") or die(mysql_error()); 
 mysql_select_db("amyadele_test") or die(mysql_error()); 

// Query the database for data
$query = "SELECT card_id,title,description FROM cards";
$result = mysql_query($query);

// Open file for writing
$myFile = "test.txt";
$fh = fopen($myFile, 'w') or die("can't open file");

// Loop through returned data and write (append) directly to file
fprintf($fh, "%-10s || %-10s || %-10s\n", "id", "title", "keyword");
fprintf($fh, "===================================\n");
while ($row = mysql_fetch_assoc($result)) {
  fprintf($fh, "%-10s || %-10s || %-10s\n", $row['card_id'], $row['title'], $row['description']);
}

// Close out the file
fclose($fh);
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...