文本文件结构(表)

时间:2011-05-19 02:19:29

标签: php mysql text

好吧,我知道我最近在这里有很多帮助,在php中编写查询并将它们输出到文本文件中。我终于抓住并学会了如何做到这一点(谢谢你们!)。下面的代码显示了我的所作所为:

现在我知道表结构(th / tr / td)在文本文件中不起作用。我想知道是否有人知道如何将其变成传统的“列”视图,如:

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

我不一定需要边框或任何东西,至少是一种易于阅读的格式。这个输出的文件将被谷歌产品用于我工作的公司(他们需要一个易于阅读的格式,我相信,或者只是以表格形式设置的东西。我可以做一个CSV,但我知道的少一些然后我做了php。再次感谢。

2 个答案:

答案 0 :(得分:3)

使用fputcsv

时,CSV很简单
$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);

答案 1 :(得分:2)

好的,让我们看看我们如何做到这一点。我将专注于相关的标题打印和显示格式化的结果。那么,在这种情况下,我们将使用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);
?>