繁体   English   中英

创建相册库

[英]creating a photo album gallery

我创建了一个相册,用户可以在其中上载图像,但是我正在尝试使其成为用户可以在其中创建相册来存储其图像的地方。

该过程是这样的。

  1. 用户从创建相册开始(相册像这样存储在相册表中)

在此处输入图片说明

  1. 然后,用户将图像上传到相册中。 (图像以这种方式存储在图库表中)

在此处输入图片说明

我要完成的工作是根据图像所在的相册来加载图像。

在此处输入图片说明

因此,在“测试相册1”上,我只希望加载该相册中的照片,并且与“测试相册2”相同。

我创建了一个album.php页面,希望根据它们所在的相册加载图像。对于图像中显示的两个链接,我这样称呼它们。 基于专辑表。

<a href="../gallery/album.php?=<?php echo escape ($ga->album_id);?>">

现在这里是我缺乏经验/知识的地方。 我需要将两个表连接在一起,但我不知道如何正确编写此查询。

我想查询相册表,album_id并将其与图库表连接。

这是我到目前为止所需要的查询。

  $gallery = DB::getInstance()->query("SELECT
albums.album_id,
gallery.id,
gallery.added,
gallery.album,
gallery.title,
gallery.description,
gallery.file_name
FROM
albums
LEFT JOIN gallery ON albums.album_id = gallery.id WHERE gallery.album = albums.album_id ORDER BY gallery.id DESC LIMIT $start, $limit");

然后我这样称呼我的图像。

foreach($gallery->results() as $g){
    ?>
    <li>
    <a class="fancybox" rel="<?php echo escape($g->album); ?>"
    href="../images/gallery/<?php echo escape($g->file_name); ?>">
    <img src="../images/gallery/<?php echo escape($g->file_name); ?>" class="max-img-border"></a>
    <div class="galleryh"><?php echo escape($g->title); ?></div>
    <div class="galleryp"><?php echo escape($g->description); ?></div>
</li>

    <?php
}
?>

如果我能弄清楚如何正确编写该JOIN查询,那我将很高兴。 任何解决方案将不胜感激。

您需要向gallery表添加一个album_id

该字段将是链接到相册表的外键。

这将允许您在没有JOIN的情况下查询表,同时为您提供数据完整性。

假设您要每个图像一张专辑。

一些建议:

你需要决定

  • 是否所有图像都只存储在一个相册中。
  • 每张图片至少分配了一个相册
  • 图片可以是“孤立的”-当前未分配相册
  • 相册可能是空的

设置一个RDS方案,例如

  album ---(1:n)---> image (where n = 0 - infinite)

要么

  album <---(n:n) ---> image

要么

  image ----(n:0) ----> album (!!)

下一个:

  • 您的加入比赛... WHERE gallery.album = albums.album_id ...

gallery.album包含专辑标题(varchar),而album.album_id包含ID(自动索引?)。 这是行不通的,也不是最佳实践:专辑和画廊图像之间的链接必须按专辑ID进行,否则以后很难重命名专辑。

我没有进一步检查,因为这些是首先要整理的基础知识。

我将使用ID号在各个表之间进行引用。 但是此专辑标题应该可以正常运行。 只是如果您允许用户以后更改相册的名称,则必须更新所有图库行,而不仅仅是更新该Album.id的相册标题。

尝试

SELECT
albums.album_title,
gallery.id,
gallery.added,
gallery.album,
gallery.title,
gallery.description,
gallery.file_name
FROM
albums
LEFT JOIN gallery ON albums.album_title = gallery.title ORDER BY gallery.id DESC LIMIT (you want here)

这将遍历所有相册,然后以画廊ID的顺序从高到低输出相应的图像。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM