Intereting Posts
FB Messenger Bot: обновления Webhook не доставляются В PHP, как я могу получить доступ к массиву «: private» в объекте? Как вы получаете идентификатор респондента из опроса Monkey Survey? Проблемы с iPhone с сеансами PHP Почему сеанс PHP удален при перезагрузке страницы? Производительность MySQL – несколько запросов или один неэффективный запрос? Подключение к FTP-серверу с PHP cakephp сохраняет данные обновления из старого значения данных + новое значение Реализация OpenID с PHP Отправлять данные в базу данных при нажатии ссылки без обновления страницы. Ошибка привязки вложенного массива в подготовленный оператор mysql Не удалось включить файлы контроллера codeigniter во внешний скрипт php "Phpinfo (): Нельзя полагаться на настройки часового пояса системы …" Никогда не запускайте «композиторское обновление» в производстве, почему? Избегание неоднозначных ошибок столбцов при использовании JOIN в MySQL

Просмотр альбома с фотографиями (PHP)

Для начала это действительно не специфично для CodeIgniter. У меня возникли проблемы с пониманием идеи, поэтому любой, кто знает PHP / SQL (или что бы то ни было, моя проблема), может перепрыгнуть.

У меня есть 2 стола, «Фото» и «Альбом».

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 просто собирается выписать каждое изображение без различия между тем, к какому альбому принадлежит изображение.

Должен ли я использовать JOIN-запрос?

ОБНОВИТЬ:

Вау, ок тилман, ты про. Большое спасибо за помощь. Для других, ссылающихся на это, убедитесь, что вы изменили «id» в $ array [$ row ['id']] [] = $ row; независимо от вашего идентификатора альбома. В моем случае его album_id. Мое заключительное заявление о соединении было переписыванием id с помощью album_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>'; } 

Я взломал этот кусок кода, надеюсь, это сработает для вас. Мы извлекаем все данные из db, помещаем их в многопоточный массив, сгруппированный по альбомам.

Затем переберите этот массив и покажите окончательный html.

Наверное, это не самое красивое решение, но нужно выполнить эту работу;)

Я использую Doctrine с Codeigniter, который предоставляет эту функциональность из коробки, она называется гидратором массива. Можете взглянуть на него.

Дайте мне знать, если вам нужна помощь в настройке.