我构建了一个文档上传管理屏幕,在那里我的客户可以浏览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
发布于 2010-11-03 22:49:13
如果这些仅仅是文档,那么您可以将它们存储在一个表中,但是有一个名为type的列来区分会议纪要和议程。这样,ID将是唯一的。
您还可以将types列扩展为types表的外键,这样将来就可以轻松地将其扩展为包括其他文档类型,如电子表格。
这也有助于前端显示,因为您只需要一个查询来获取批或时间范围内的文档,但将它们添加到不同的数组中。例如:
// 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>';
}
...发布于 2010-11-03 22:49:07
您说您遇到的问题是URL被复制。你有两个不同的选择来解决这个问题。
第一种方法是创建一个标识符,告诉您想要哪个表。您可以使用agenda.php和minutes.php,也可以使用clerk.php?ID=77&type=1和clerk.php?ID=77&type=2。
这将允许您知道您引用的是哪个表。这也是我推荐的方法。只要您知道需要哪个表,就没有理由在不同的表中避免重复的键。
第二种选择是将所有记录放入一个表中。然后,您可以添加一个type列,用于指定文档的类型。然后,您可以不使用clerk.php文件,但需要更改上载页面以填充type列。
如果只是将PDF存储在数据库中,则除了id、type和文档本身之外,不应该需要此表中的任何内容。
https://stackoverflow.com/questions/4088209
复制相似问题