2011-11-18 10 views
5

क्या मैं एक विशिष्ट कॉलम के लिए 1 सीमित कर सकता हूं लेकिन शेष नहीं? मेरे पास दो टेबल हैं जानकारी के साथ एक और छवियों के साथ एक। वहां कई छवियों के लिए, कई जानकारी प्रश्न चल रहे हैं। तो, यह एक ही शीर्षक के 5 छवियों और 5 होगा। मैं 1 शीर्षक, और LIMIT 3 छवियों को कैसे सीमित कर सकता हूं?एक प्रश्न के लिए क्वेरी, LIMIT 1 चुनें, लेकिन शेष

$query = mysql_query(" 
        SELECT `$category`.title AS title, 
        page_images.image_loc AS images 
        FROM `$category`, page_images 
        WHERE `$category`.title = page_images.title 
        "); 

      while($fetch = mysql_fetch_assoc($query)) { 

       $title = $fetch['title'];    
       $images = $fetch['images']; 

       echo '<b>'.$title.'</b><br />'; 
       echo '<a href="http://localhost/'.$images.'"> 
         <img src="http://localhost/'.$images.'" height="80" width="80" /> 
         </a>'; 

       } 
+0

आप और अधिक विस्तार, अपने भ्रामक में यह कृपया समझा जा सकता है। – Zohaib

उत्तर

5

आप शीर्षक द्वारा समूह कर सकते हैं और GROUP_CONCAT का उपयोग करके छवि स्थान एकत्र कर सकते हैं। और फिर आप एकत्रित स्थानों को एक सरणी में विस्फोट कर सकते हैं। और सभी छवियों को मुद्रित करें।

यहाँ

मैं क्या मतलब

$query = mysql_query(" 
SELECT 
    title AS title 
    ,GROUP_CONCAT(i.image_loc) AS images 
FROM 
    `$category` c 
    JOIN page_images i USING(title) 
GROUP BY 
    title 
"); 

while($fetch = mysql_fetch_assoc($query)) { 
    $title = $fetch[ 'title' ];    
    $images = explode(',', $fetch[ 'images' ]); 

    echo '<b>' . $title . '</b><br />'; 
    foreach($images as $image) { 
     echo '<a href="http://localhost/'.$image.'"> 
      <img src="http://localhost/'.$image.'" height="80" width="80" /> 
     </a>'; 
    } 
} 
+0

भयानक है! क्या मैं संख्या छवियों को नियंत्रित कर सकता हूं? यह सहेजी गई सभी छवियों को आउटपुट करता है जो जानकारी से मेल खाते हैं। – Graham

+0

मैंने छवियों को सीमित करने के लिए foreach कथन में एक ब्रेक संशोधित किया। – Graham

+2

हाँ आप छवियों को सीमित कर सकते हैं। इसे हासिल करने के दो तरीके हैं। सबसे पहले, php में आप foreach के बजाय उपयोग कर सकते हैं। दूसरा तरीका, एसक्यूएल में, वर्कअराउंड के रूप में, आप SUBSTRING_INDEX फ़ंक्शन का उपयोग करके संग्रह को सीमित कर सकते हैं, जैसे: SUBSTRING_INDEX (GROUP_CONCAT (i.image_loc), ',', 10) जिसका अर्थ है स्ट्रिंग को शुरुआत से 10 वीं कॉमा तक प्राप्त करें। – ncank

1

क्या कोई समूह यहां काम करेगा?

SELECT `$category`.title AS title, 
    page_images.image_loc AS images 
FROM `$category`, page_images 
WHERE `$category`.title = page_images.title 
GROUP BY title, images 
LIMIT 3 
+0

जो एक ही पृष्ठ के 3 छवियों को सीमित करता है। यह प्रत्येक के लिए शीर्षक को भी डुप्लिकेट करता है। '$ Category'.title LIMIT द्वारा ग्रुप काम करता है, लेकिन केवल एक छवि आउटपुट करता है। मैं उस प्रभाव को पाने की कोशिश कर रहा हूं, लेकिन 3 या अधिक छवियों के साथ। – Graham

+0

मुझे लगता है कि इस मामले में एक संग्रहीत दिनचर्या बनाने के लिए चलाने के लिए समझ में आता है ... और mysqli की बहु-क्वेरी का उपयोग करें। इसके अलावा, आपका परिणाम कितना बड़ा है? – ansiart

+0

कहीं भी 3 से 20 छवियों से। मैंने उन पर शोध नहीं किया है। हालांकि मैं उसमें देखता हूं। – Graham

संबंधित मुद्दे