如何创建已保存文件名列表?

时间:2011-11-24 00:28:24

标签: php arrays

我正在页面上,您可以为客户生成带有项目的Word文档。有一个名为“最新生成的文档”的选项卡。如何保存每个生成的文档名称并将其添加到列表?我应该使用数组吗?

要定义文件名,我正在使用此代码:

$filename = "".$name." ".$surname."_report.docx";

姓名和姓氏取决于我在创建文档时选择的客户。该文件保存到文件夹“documents”,但每次都用新文件覆盖。

1 个答案:

答案 0 :(得分:1)

如果你没有覆盖文件,你可以扫描你的目录并将每个找到的文件添加到一个数组中,另一种方法是将文件名存储在数据库中。

$data = scandir($path_to_directory);
foreach($data as $file) {
   // display filename
}

1)为您的用户创建文档

2)在数据库中插入文件名,也可能在文件创建/插入时插入

3)当您应该显示最新生成的文档时,您在数据库中查询按创建的DESC排序的这些文件名

like this for example:

$documents = array();
$query = "SELECT * FROM tbl_document ORDER BY doc_created DESC";
if(($result = mysql_query($query))) {
    while($row = mysql_fetch_array($result,MYSQL_ASSOC)) {
        $documents[] = $row;
     }
     mysql_free_result($result);
 }

现在您有一个包含可以向用户显示的最新文档的数组,我想您还希望根据doc_created的值从数据库中删除记录。

 // the following query will remove documents older than 1 hour from the database
 mysql_query("DELETE FROM tbl_document WHERE 
              UNIX_TIMESTAMP(doc_created) < ".(time()-(60*60)));

以上假设您创建了一个如下所示的表:

 CREATE TABLE tbl_document (
    doc_id int(11) unsigned NOT NULL PRIMARY_KEY AUTO_INCREMENT,
    doc_filename VARCHAR(260) NOT NULL,
    doc_created TIMESTAMP DEFAULT CURRENT_TIMESTAMP
 );