Вывод двух таблиц из базы

267
21 мая 2018, 06:00

нужно вывести посты на одной странице с учетом, что один пост состоит из двух таблиц, вот картинка для понимания того, что мне нужно вывести. Nо, что выделено красным содержится в одной таблице, что синим в другой

ну и соответственно как выглядят две таблицы

А здесь уже конкретно мой пример, для начала я объединяю две таблицы

$res_post = mysql_query("SELECT post_id, date, author, content, name_image FROM post_en LEFT JOIN image_post ON post_id=id_post_en");

Получается в итоге так

А как дальше уже вывести на страницу эти данные я не понимаю (возможно я изначально делаю все не так как надо). Но вообще предполагаю. что все это нужно выводить через массив, но не знаю как.

Answer 1

Вот тот запрос, что на скрине можно обработать следующим образом.

$posts = $imgs = [];
foreach($rows as $row){
    $imgs[$row['post_id']][] = $row['name_image'];
    $row['images'] = $imgs[$row['post_id']];
    $posts[$row['post_id']] = $row;
}
// на странице разобрать массив $posts

Есть еще вариант вывести все посты на страницу без картинок, а после отрисовки страницы с помощью js собрать айдишники постов, отправить на сервер и получить картинки, сформировать списки картинок для каждого поста, вернуть на клиент и добавить эти картинки соответствующему посту.

Вариант с запросом на получение картинок для каждого поста в цикле не самый хороший, но если на странице всего 10 постов, то +10 запросов в БД не сильно страшно. Особенно, если делать это в методах класса, чтобы память очищалась.

Answer 2

Тож немного костыльно, но можно просто перебирая массив не выводить ненужное когда пост "тот же", а выводить только картинки:

   foreach ($rows as $row ){
      if( $row['post_id'] != $last_id ){
          echo $row['date'];
          echo $row['title'];
          echo $row['text'];
          $last_id = $row['post_id'];
      }
      echo '<img src="'.$row['pic'].'">;
    }
READ ALSO
Как прочитатать данные cookie в Node

Как прочитатать данные cookie в Node

Сохраняю Id юзера на PHP в кукиКак я могу прочитать эту куки из Node используя модуль express?

249
Метки gridview при пустом списке

Метки gridview при пустом списке

Я использую стандартный GridView для вывода табличкиПри пустом списке элементов выводится надпись задаваемая параметром emptyText

222