首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建相册画廊

创建相册画廊
EN

Stack Overflow用户
提问于 2014-09-23 21:58:03
回答 3查看 2.3K关注 0票数 1

我创建了一个图片库,用户可以在这里上传图片,但我正在尝试制作一个图片库,用户可以在其中创建相册来存储他们的图像。

这个过程是这样的。

  1. 用户首先创建一个相册(相册存储在相册表中,如下所示)

  1. 然后,用户将图像上传到相册中。(图像存储在图片库表中,如下所示)

我想要完成的是根据他们的相册来加载图像。就像这样。

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

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

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

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

我想查询相册表,album_id,并加入它与图库表。

下面是我现在需要帮助的查询。

代码语言:javascript
复制
  $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");

然后我就这样称呼我的形象。

代码语言:javascript
复制
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
}
?>

如果我能够知道如何正确地编写这个联接查询,我就可以继续了。如有任何解决办法,将不胜感激。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-09-24 02:33:49

您需要向图库表添加一个album_id

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

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

假设每个图像都需要一张相册。

票数 1
EN

Stack Overflow用户

发布于 2014-09-23 22:13:18

一些经济建议:

你得决定

  • 是否所有图像只存储在一个相册中。
  • 每个图像至少分配了一个相册。
  • 图像可以是“孤儿”--目前没有分配相册。
  • 专辑可能是空的

建立一个RDS计划,如

代码语言:javascript
复制
  album ---(1:n)---> image (where n = 0 - infinite)

代码语言:javascript
复制
  album <---(n:n) ---> image

代码语言:javascript
复制
  image ----(n:0) ----> album (!!)

下一步:

  • 您的连接与... WHERE gallery.album = albums.album_id ...匹配

gallery.album包含专辑标题(varchar)和album.album_id a id (自动索引?)。这将不起作用,也不是最佳实践:相册和画廊图像之间的链接必须是一个相册id,否则以后很难重命名一张专辑。

我还没有进一步检查,因为这些都是首先要解决的基本问题。

票数 0
EN

Stack Overflow用户

发布于 2014-09-23 22:25:11

我会使用ID号来跨表引用。但这张专辑的标题应该还行。只是如果允许用户稍后更改相册的名称,则必须更新所有图库行,而不仅仅是该album.id的相册标题。

试一试

代码语言:javascript
复制
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顺序。

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

https://stackoverflow.com/questions/26005380

复制
相关文章

相似问题

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