创建相册库

时间:2014-09-23 21:58:04

标签: php mysql

我已经创建了一个用户可以上传图片的照片库,但我正试图让用户可以创建相册来存储他们的图片。

这个过程就像这样。

  1. 用户首先创建一个相册(相册存储在这样的相册表中)
  2. enter image description here

    1. 然后用户将图像上传到相册中。 (图像存储 在这样的画廊表中)
    2. enter image description here

      我想要完成的是根据他们所在的专辑来加载图片。就像这样。

      enter image description here

      所以在“测试专辑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查询,我会很高兴。 任何解决方案都将不胜感激。

3 个答案:

答案 0 :(得分:1)

您需要在图库表中添加album_id

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

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

这假设你想要每张图片一张专辑。

答案 1 :(得分:0)

一些建议:

你需要决定

  • 是否所有图像仅存储在一个相册中。
  • 每张图片至少分配了一张专辑
  • 图片可以是&#34; orphan&#34; - 目前没有分配专辑
  • 专辑可能为空

设置类似

的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,否则以后很难重命名专辑。

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

答案 2 :(得分:0)

我会使用ID号来引用表格。 但是这个专辑标题应该可行。只是如果您允许用户稍后更改相册的名称,您必须更新所有图库行而不仅仅是该相册的相册标题.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顺序从高到低输出相应的图像。