Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

पोस्ट में इमेज एल्बम कैसे प्रदर्शित करें? [केवल PHP और MYSQL का उपयोग करके]

आपकी पहली SQL क्वेरी ठीक है, लेकिन दूसरे के लिए, आप केवल लूप के दौरान बाहरी पोस्ट (पंक्ति) के लिए छवियों का चयन करना चाहते हैं, इसलिए दूसरी SQL क्वेरी होनी चाहिए:

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

पोस्ट1 का केवल img3 दिखाने के लिए अपडेट:

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

मैंने दूसरी SQL क्वेरी को if स्टेटमेंट में रखा है, जो जांचता है कि क्या वर्तमान पोस्ट की आईडी 1 के बराबर है। यदि यह है, तो SQL क्वेरी केवल "img3" वाली पंक्ति का चयन करती है। (और अगर ऐसा नहीं है तो यह पिछली SQL क्वेरी को निष्पादित करता है जो सभी पंक्तियों का चयन करती है।)

बेशक यह केवल तभी काम करता है जब आप पोस्ट की आईडी और उस छवि का शीर्षक जानते हैं जिसे आप प्रदर्शित करना चाहते हैं। हमेशा पहली पोस्ट की केवल तीसरी छवि प्रदर्शित करने के लिए एक अधिक सामान्य समाधान कुछ इस तरह होगा:

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

यहां मैंने पहली SQL क्वेरी के पूरे परिणाम को एक सरणी में संग्रहीत किया है, क्योंकि तब सरणी की कुंजियाँ प्रत्येक पोस्ट की संख्या माइनस वन के साथ मेल खाती हैं। यदि $key =0, वर्तमान पंक्ति पहली पोस्ट है और फिर हम SQL क्वेरी का उपयोग करते हैं जो छवि तालिका से केवल तीसरी छवि का चयन करती है। यदि $key 0 नहीं है तो हम अन्य SQL क्वेरी का उपयोग करते हैं जो सभी छवियों का चयन करती है।

नई SQL क्वेरी में, LIMIT 1 का अर्थ है केवल 1 पंक्ति का चयन करें, और OFFSET 2 का अर्थ है पंक्ति 3 से प्रारंभ करें (गिनती 0 से शुरू होती है, इसलिए ऑफ़सेट 2 पंक्ति 3 लौटाती है)।

मैंने यह सुनिश्चित करने के लिए ORDER BY id_img जोड़ा है कि छवियों को हमेशा उसी क्रम में लौटाया जाता है, जिस क्रम में उन्हें डेटाबेस में जोड़ा गया था। (और मैंने पहली क्वेरी में id_post के साथ भी ऐसा ही किया है।)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ECONNREFUSED कनेक्ट करें - नोड जेएस, एसक्यूएल

  2. विंडोज़ पर mysqlclient पायथन पैकेज स्थापित करने में असमर्थ

  3. MySQL INSERT ... थोक डालने के लिए django 1.4 के साथ डुप्लीकेट कुंजी अद्यतन पर

  4. MySql 5.7 इंस्टॉलर वीएस 2013 पुनर्वितरण योग्य का पता लगाने में विफल रहता है

  5. php डॉकर छवि में पीडीओ ड्राइवर कैसे स्थापित करें?