Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana cara menampilkan album gambar di postingan? [hanya menggunakan PHP dan MYSQL]

Permintaan SQL pertama Anda baik-baik saja, tetapi untuk yang kedua, Anda hanya ingin memilih gambar untuk posting saat ini (baris) di loop sementara luar, jadi kueri SQL kedua harus:

"SELECT img_file, img_title FROM images WHERE post_id = $row[id_post]"

Pembaruan untuk hanya menampilkan img3 dari pos1:

<!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>

Saya telah menempatkan kueri SQL kedua dalam pernyataan if, yang memeriksa apakah id dari posting saat ini sama dengan 1. Jika ya, maka kueri SQL hanya memilih baris dengan "img3" di dalamnya. (Dan jika tidak, itu akan mengeksekusi kueri SQL sebelumnya yang memilih semua baris.)

Tentu saja ini hanya berfungsi jika Anda mengetahui id posting dan judul gambar yang ingin Anda tampilkan. Solusi yang lebih umum untuk selalu menampilkan hanya gambar ketiga dari kiriman pertama adalah seperti ini:

<!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>

Di sini saya telah menyimpan seluruh hasil query SQL pertama dalam sebuah array, karena kemudian kunci dari array tersebut sesuai dengan jumlah setiap posting dikurangi satu. Jika $key =0, baris saat ini adalah posting pertama dan kemudian kami menggunakan kueri SQL yang hanya memilih gambar ketiga dari tabel gambar. Jika $key bukan 0, kami menggunakan kueri SQL lain yang memilih semua gambar.

Dalam kueri SQL baru, LIMIT 1 berarti pilih 1 baris saja, dan OFFSET 2 berarti mulai dengan baris 3 (penghitungan dimulai dari 0, jadi offset 2 mengembalikan baris 3).

Saya telah menambahkan ORDER BY id_img untuk memastikan gambar selalu dikembalikan dalam urutan yang sama, urutan penambahannya ke database. (Dan saya telah melakukan hal yang sama dengan id_post di kueri pertama.)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perubahan Format Tanggal dalam Kueri

  2. Bagaimana cara menggabungkan beberapa baris di MySQL?

  3. Mengambil perubahan dari tabel dengan sungai ElasticSearch JDBC

  4. Apakah saya menggunakan Java PooledConnections dengan benar?

  5. Stempel waktu Unix vs waktu tanggal