Váš první dotaz SQL je v pořádku, ale pro druhý chcete vybrat pouze obrázky pro aktuální příspěvek (řádek) ve vnější smyčce while, takže druhý dotaz SQL by měl být:
"SELECT img_file, img_title FROM images WHERE post_id = $row[id_post]"
Aktualizace pro zobrazení pouze obrázku 3 z příspěvku 1:
<!DOCTYPE html>
<html>
<body>
<?php
$db = mysqli_connect("localhost", "root", "", "post_images");
$result = mysqli_query($db, "SELECT * FROM posts");
while ($row = mysqli_fetch_array($result)) {
echo "<div class=\"post_container\">";
echo $row['post_title'];
echo "<div class=\"image_container\">";
if ($row['id_post'] == 1) {
$resultx = mysqli_query($db, "SELECT img_file, img_title FROM images WHERE post_id = " .$row['id_post']. " AND img_title = 'img3'");
} else {
$resultx = mysqli_query($db, "SELECT img_file, img_title FROM images WHERE post_id = " .$row['id_post']);
}
if(mysqli_num_rows($resultx) > 0) {
while ($rowx = mysqli_fetch_array($resultx)) {
echo "<img src='../folder_image_uploads/".$rowx['img_file']."' >";
echo $rowx['img_title'];
}
}
echo "</div>";
echo "</div>";
}
?>
</body
</html>
Druhý dotaz SQL jsem umístil do příkazu if, který kontroluje, zda se id aktuálního příspěvku rovná 1. Pokud ano, dotaz SQL vybere pouze řádek s "img3". (A pokud tomu tak není, provede předchozí SQL dotaz, který vybere všechny řádky.)
Samozřejmě to funguje pouze v případě, že znáte ID příspěvku a název obrázku, který chcete zobrazit. Obecnější řešení pro vždy zobrazení pouze třetího obrázku prvního příspěvku by bylo něco takového:
<!DOCTYPE html>
<html>
<body>
<?php
$db = mysqli_connect("localhost", "root", "", "post_images");
$result = mysqli_query($db, "SELECT * FROM posts ORDER BY id_post");
$rows = mysqli_fetch_all($result,MYSQLI_ASSOC);
foreach ($rows as $key => $value)
echo "<div class=\"post_container\">";
echo $row['post_title'];
echo "<div class=\"image_container\">";
if ($key == 0) {
$resultx = mysqli_query($db, "SELECT img_file, img_title FROM images WHERE post_id = " .$row['id_post']. " ORDER BY id_img LIMIT 1 OFFSET 2");
} else {
$resultx = mysqli_query($db, "SELECT img_file, img_title FROM images WHERE post_id = " .$row['id_post']);
}
if(mysqli_num_rows($resultx) > 0) {
while ($rowx = mysqli_fetch_array($resultx)) {
echo "<img src='../folder_image_uploads/".$rowx['img_file']."' >";
echo $rowx['img_title'];
}
}
echo "</div>";
echo "</div>";
}
?>
</body
</html>
Zde jsem uložil celý výsledek prvního SQL dotazu do pole, protože pak klíče pole odpovídají číslu každého příspěvku mínus jedna. Pokud $key =0, aktuální řádek je první příspěvek a poté použijeme SQL dotaz, který vybere pouze třetí obrázek z tabulky obrázků. Pokud $key není 0, použijeme druhý SQL dotaz, který vybere všechny obrázky.
V novém SQL dotazu LIMIT 1 znamená vybrat pouze 1 řádek a OFFSET 2 znamená začít od řádku 3 (počítání začíná od 0, takže offset 2 vrací řádek 3).
Přidal jsem ORDER BY id_img, abych zajistil, že obrázky budou vždy vráceny ve stejném pořadí, v pořadí, ve kterém byly přidány do databáze. (A totéž jsem udělal s id_post v prvním dotazu.)