【问题标题】:How to create a HTML table of file names from mySQL database and their corresponding files(hyperlink) in PHP如何在 PHP 中从 mySQL 数据库及其相应文件(超链接)创建文件名 HTML 表
【发布时间】:2019-10-06 04:02:21
【问题描述】:

我有一个表单,可以在 uploads 文件夹中向服务器提交文件,并将文件名(存储在服务器中)以及其他文件详细信息保存在我的数据库中。 现在我要做的是创建一个 HTML 表格,显示文件详细信息以及相应的文件(当然是超链接)。

有什么办法吗?我的一个想法是将文件名链接到我的 uploads/ 目录中的相应文件,但我不知道如何实现。

这是我的表格uploaded_content,表单数据存储在我的数据库中

================================================
id |Description | filename                     |
------------------------------------------------
1  |Information | 3223-2323-4334-32-slajjjq.txt|
2  |Users       | 3223-2323-4344-33-slik.txt   |
================================================

下面是我的uploads/ 目录的示例(注意他们的名字保存在我的数据库中)

3223-2323-4334-32-slajjjq.txt
3223-2323-4344-33-slik.txt

所以现在我想创建一个包含以下列的 HTML 表格

id |Description | filename  |File   

【问题讨论】:

  • 欢迎来到stackoverflow。您的上传目录是否可供公众访问?
  • 谢谢。是的,它对公众开放
  • 是 SQL 数据库吗?
  • 您可以使用锚标记下载。我必须警告你,如果你在上传时没有在服务器端验证文件类型,黑客可能会上传一个 php 文件并在你的服务器上执行一些命令。
  • @Valentino 有一个标签 mysqli。

标签: php html mysqli html-table


【解决方案1】:

这不是最好的方法,但我只是想告诉你如何做到这一点。

第 1 步 - 创建 mysql 数据库。

CREATE TABLE `uploaded_content` (
  `id` int(11) NOT NULL,
  `description` text NOT NULL,
  `filename` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

第 2 步 - 将数据插入此数据库。

INSERT INTO `uploaded_content` (`id`, `description`, `filename`) VALUES
(1, 'Information', '3223-2323-4334-32-slajjjq.txt'),
(2, 'Users', '3223-2323-4344-33-slik.txt');

第 3 步 - 制作 config.php:

<?php
    $conn = new PDO('mysql:host=localhost;dbname=stack', 'root', '');
    $q = $conn->query("SELECT * FROM uploaded_content WHERE id");
    $f = $q->fetchAll();
?>

第 4 步 - 使用此代码创建 index.php:

<?php
include('config.php');
?>

<table>
    <tr>
      <th>ID</th>
      <th>Description</th> 
      <th>File</th>
      <th>Download link</th>
    </tr>
<?php 
foreach ($f as $g) :?>
  <tr>
    <td> <?php echo $g['id']; ?></td>
    <td> <?php echo $g['description']; ?></td>
    <td> <?php echo $g['filename']; ?></td>
    <td><a href="https://example.com/uploads/<?php echo $g['filename']; ?>">Download</a></td>
  </tr>
<?php endforeach;?>
</table>

当你完成之后,你会得到这样的 html 页面:

<table>
    <tr>
      <th>Id</th>
      <th>Description</th> 
      <th>File</th>
      <th>Download link</th>
    </tr>
    <tr>
      <td>1</td>
      <td>Information</td>
      <td>3223-2323-4334-32-slajjjq.txt</td>
      <td><a href="https://example.com/uploads/3223-2323-4334-32-slajjjq.txt">Download</a></td>
    </tr>
    <tr>
      <td>2</td>
      <td>Users</td>
      <td>3223-2323-4344-33-slik.txt</td>
      <td><a href="https://example.com/uploads/3223-2323-4344-33-slik.txt">Download</a></td>
    </tr>
</table>

【讨论】:

  • 我想说的,比你好多了,效果很好!
【解决方案2】:
  1. 执行查询以从数据库中获取列表。
  2. 使用该列表构建您的 HTML 表格。

表:

CREATE TABLE `a_files` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `Description` varchar(255) DEFAULT NULL,
  `filename` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

数据:

INSERT INTO `a_files` (`id`, `Description`, `filename`)
VALUES
    (1, 'Information', 'some-file-000-111-222.txt'),
    (2, 'Users', 'some-file-000-111-223.txt');

代码:

 class FileLister {
    const UPLOAD_DIR = '/uploads';
    public function makeList()
    {
        $db = [
            'host' => '127.0.0.1',
            'user' => 'app',
            'password' => 'aaaa',
            'database' => 'sss',
        ];
        $dsn = "mysql:dbname={$db['database']};host={$db['host']}";

        try {
            $pdo = new PDO($dsn, $db['user'], $db['password']); 
            $sql = "SELECT * FROM `a_files`";
            $rs = $pdo->query($sql);
            foreach($rs as $row) {
                // echo print_r($row, true) . PHP_EOL;
                echo sprintf("<A href=\"https://sample.com%s/%s\">%s</A>\n",
                    self::UPLOAD_DIR,
                    $row['filename'],
                    $row['Description']);
            }
        } catch (PDOException $e) {
            echo $e->getMessage() . "\n";
            exit();
        }
    }
}
$lister = new FileLister;
$lister->makeList();

输出:

<A href="https://sample.com/uploads/some-file-000-111-222.txt">Information</A>
<A href="https://sample.com/uploads/some-file-000-111-223.txt">Users</A>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-03
    • 2015-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-28
    相关资源
    最近更新 更多