首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php mysql -文档检索和显示

php mysql -文档检索和显示
EN

Stack Overflow用户
提问于 2010-11-03 22:42:43
回答 2查看 147关注 0票数 0

我构建了一个文档上传管理屏幕,在那里我的客户可以浏览pdf文档并将其上传到mysql dbase。

我有两张不同的日程表,一张是会议记录。两者都有单独的表名"upload“和"upload_mins”。

在index.php页面上,我让页面获取数据库的每一行,并在“下载”页面上显示所有有效文档。

我遇到了一个问题。

每个dbase都设置为递增ID。现在有两个数据库,它们将使用相同的ID。

因此,我将从议事日程中抽出:

http://www.example.com/clerk.php?ID=77

我也从会议记录列表中抽出:

http://www.example.com/clerk.php?ID=77

它们恰好具有相同的增量ID。

有什么方法可以避免这种情况吗?是否可以在分钟中添加一个字段参数,以确保它们在拉取文档时不具有相同的URL?

创建一个整型字段,还是txt字段?

http://www.example.com/clerk.php?ID=77&min=yes

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-03 22:49:13

如果这些仅仅是文档,那么您可以将它们存储在一个表中,但是有一个名为type的列来区分会议纪要和议程。这样,ID将是唯一的。

您还可以将types列扩展为types表的外键,这样将来就可以轻松地将其扩展为包括其他文档类型,如电子表格。

这也有助于前端显示,因为您只需要一个查询来获取批或时间范围内的文档,但将它们添加到不同的数组中。例如:

代码语言:javascript
复制
// get the last 20 uploaded documents
$sql = "SELECT * FROM documents ORDER BY created DESC LIMIT 0,20";
$res = mysql_query($sql);
while ($doc = mysql_fetch_object($res)) {
    $type = $doc->type;
    if (!isset($docs[$type]) || !is_array($docs[$type])) {
        $docs[$type] = array();
    }
    $docs[$type][] = $doc;
}

// loop over agendas
foreach ($docs['agendas'] as $agenda) {
    echo '<a href="download.php?id=' . $agenda->id . '">' . $agenda->title . '</a>';
}

// loop over minutes
foreach ($docs['minutes'] as $minutes) {
    echo '<a href="download.php?id=' . $minutes->id . '">' . $minutes->title . '</a>';
}

...
票数 2
EN

Stack Overflow用户

发布于 2010-11-03 22:49:07

您说您遇到的问题是URL被复制。你有两个不同的选择来解决这个问题。

第一种方法是创建一个标识符,告诉您想要哪个表。您可以使用agenda.phpminutes.php,也可以使用clerk.php?ID=77&type=1clerk.php?ID=77&type=2

这将允许您知道您引用的是哪个表。这也是我推荐的方法。只要您知道需要哪个表,就没有理由在不同的表中避免重复的键。

第二种选择是将所有记录放入一个表中。然后,您可以添加一个type列,用于指定文档的类型。然后,您可以不使用clerk.php文件,但需要更改上载页面以填充type列。

如果只是将PDF存储在数据库中,则除了idtype和文档本身之外,不应该需要此表中的任何内容。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4088209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档