Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
显示带有照片的相册(PHP)_Php_Sql_Codeigniter_Mysql - Fatal编程技术网

显示带有照片的相册(PHP)

显示带有照片的相册(PHP),php,sql,codeigniter,mysql,Php,Sql,Codeigniter,Mysql,首先,这实际上不是特定于CodeIgniter的。我很难理解一个想法,所以任何了解PHP/SQL(或者我的问题是什么)的人都可以加入 我有两张桌子,“照片”和“相册” Album columns : ID TITLE USER_ID CREATED MODIFIED Photo columns : ID ALBUM_ID TITLE LOC CREATED MODIFIED 我正在使用查询 $this->db->select('*'); $this-&g

首先,这实际上不是特定于CodeIgniter的。我很难理解一个想法,所以任何了解PHP/SQL(或者我的问题是什么)的人都可以加入

我有两张桌子,“照片”和“相册”

Album columns : ID  TITLE  USER_ID  CREATED  MODIFIED
Photo columns : ID  ALBUM_ID  TITLE  LOC  CREATED  MODIFIED
我正在使用查询

 $this->db->select('*');
    $this->db->from('album');
    $this->db->join('photo', 'album.id = photo.album_id');
    $this->db->limit(10);
    return $this->db->get();
我认为这可以转化为

SELECT * FROM album JOIN photo ON album.id = photo.album_id LIMIT 10;
无论如何,我不明白的是如何显示每个相册和相关的照片

所以有点像

<div class="album">
<img src="image1" />
<img src="image2" />
</div>
<div class="album">
<img src="image3" />
</div>

基本上,我如何“呼应”出正确的相册及其相关图像?据我所知,foreach循环只是写出每个图像,而不区分图像属于哪个相册

我应该使用连接查询吗

更新:


哇,好吧,蒂尔曼,你是职业选手。非常感谢你的帮助。对于引用此的任何其他人,请确保更改$array[$row['id']][]=$row中的'id';无论你的专辑id是什么。在我的例子中,它的album_id。我的最后一个join语句是用album_id覆盖id。

是的,连接两个表是正确的方法

  $query = $this->db->query('
      SELECT *
      FROM album a
      JOIN photo p ON a.id = p.album_id
      LIMIT 10
      ');

    foreach ($query->result_array() as $row) {
      $array[$row['id']][] = $row;
    }

    foreach ($array as $album) {
      echo '<div class="album">';
      foreach ($album as $photo) {
        echo '<img src="' . $photo['src'] . '"/>';
      }
      echo '</div>';
    }
$query=$this->db->query('
挑选*
来自专辑a
在a.id=p.album\u id上加入照片p
限制10
');
foreach($query->result\u array()作为$row){
$array[$row['id'][]=$row;
}
foreach($array as$album){
回声';
foreach($相册为$照片){
回声';
}
回声';
}
我破解了这段代码,希望对你有用。 我们从数据库中提取所有数据,将它们放入一个多嵌套数组中,按相册分组

然后迭代该数组并显示最终的html

可能不是最漂亮的解决方案,但应该完成工作;)

我正在使用Codeigniter的条令,它提供了这种开箱即用的功能,它被称为数组水合器。 可能想看看


如果您需要帮助进行设置,请告诉我。

手动在数据库上尝试该查询(例如,使用phpMyAdmin或Mysql查询浏览器(如果可用))并查看结果行的外观。这将给你一个关于如何在php循环中处理它们的好主意。这个查询在phpMyAdminI中运行得很好,我一定会看看条令。我明天醒来后会发回,到时候我会尝试你的解决方案和ci+理论测试。因为你对这方面比较陌生,我可以提醒你,如果我的问题对你有帮助的话,请将我的问题标记为可接受的答案吗?谢谢;)嗯,我还没有完全解决这个问题……但我想早点做标记不会有什么坏处