нужно вывести посты на одной странице с учетом, что один пост состоит из двух таблиц, вот картинка для понимания того, что мне нужно вывести. 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");
Получается в итоге так
А как дальше уже вывести на страницу эти данные я не понимаю (возможно я изначально делаю все не так как надо). Но вообще предполагаю. что все это нужно выводить через массив, но не знаю как.
Вот тот запрос, что на скрине можно обработать следующим образом.
$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 запросов в БД не сильно страшно. Особенно, если делать это в методах класса, чтобы память очищалась.
Тож немного костыльно, но можно просто перебирая массив не выводить ненужное когда пост "тот же", а выводить только картинки:
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'].'">;
}
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости