PHP

2011-10-25 24 views
5

के साथ एक गतिशील तालिका बनाना मैं PHP के साथ एक गतिशील तालिका बनाने की कोशिश कर रहा हूं। मेरे पास एक पृष्ठ है जो डेटाबेस से सभी चित्र प्रदर्शित करता है। मुझे तालिका केवल 5 कॉलम होने की आवश्यकता है। यदि 5 से अधिक चित्र लौटाए जाते हैं, तो इसे एक नई पंक्ति बनाना चाहिए और शेष चित्रों को प्रदर्शित करना जारी रहेगा।PHP

क्या कोई मदद कर सकता है? मुख्य पृष्ठ में कोड::

संहिताओं यहाँ जाना -

<table> 
    <?php 
     $all_pics_rs=get_all_pics(); 
     while($pic_info=mysql_fetch_array($all_pics_rs)){ 
     echo "<td><img src='".$pic_info['picture']."' height='300px' width='400px' /></td>"; 
      } 
?> 
</table> 

get_all_pics() फ़ंक्शन:

$all_pics_q="SELECT * FROM pics"; 
     $all_pics_rs=mysql_query($all_pics_q,$connection1); 
     if(!$all_pics_rs){ 
      die("Database query failed: ".mysql_error()); 
     } 
     return $all_pics_rs; 

इस कोड को एक ही पंक्ति पैदा कर रही है। मैं नहीं सोच सकता कि मैं कई पंक्तियां कैसे प्राप्त कर सकता हूं ... !!

+2

बस एफवाईआई - आपको डाउनवॉट किया जा रहा है क्योंकि आपने कोई कोड पोस्ट नहीं किया है। – Drew

+0

यदि आप इस प्रश्न को संपादित करने के लिए प्रासंगिक कोड उदाहरण प्रदान करने के लिए संपादित कर सकते हैं, तो समीक्षा के लिए कृपया इसे मॉडरेटर ध्यान के लिए ध्वजांकित करें। संपादित करने के लिए, बस अपने प्रश्न के तहत 'संपादित करें' लिंक पर क्लिक करें। इसे ध्वजांकित करने के लिए, 'ध्वज' लिंक पर क्लिक करें, 'अन्य' चुनें और हमें बताएं कि इसकी समीक्षा करने के लिए तैयार है। –

+0

@ टिम पोस्ट: मैं वास्तव में आपकी कार्रवाई पर सहमत नहीं हूं। मुझे लगता है कि उनका सवाल वास्तव में स्पष्ट है। मैंने इस बोर्ड पर रास्ता खराब तरीके से देखा है। – Jules

उत्तर

12
$maxcols = 5; 
$i = 0; 

//Open the table and its first row 
echo "<table>"; 
echo "<tr>"; 
while ($image = mysql_fetch_assoc($images_rs)) { 

    if ($i == $maxcols) { 
     $i = 0; 
     echo "</tr><tr>"; 
    } 

    echo "<td><img src=\"" . $image['src'] . "\" /></td>"; 

    $i++; 

} 

//Add empty <td>'s to even up the amount of cells in a row: 
while ($i <= $maxcols) { 
    echo "<td>&nbsp;</td>"; 
    $i++; 
} 

//Close the table row and the table 
echo "</tr>"; 
echo "</table>"; 

मैं अभी तक यह परीक्षण नहीं किया, लेकिन मेरी जंगली अनुमान है कि जैसे कुछ है। बस छवियों के साथ अपने डेटासेट के माध्यम से चक्र और जब तक आपने 5 <td> अभी तक नहीं बनाया है, तो एक जोड़ें। एक बार पहुंचने के बाद, पंक्ति को बंद करें और एक नई पंक्ति बनाएं।

यह स्क्रिप्ट आपको निम्न की तरह कुछ देना है। यह स्पष्ट रूप से इस पर निर्भर करता है कि आपके पास कितनी छवियां हैं और मैंने माना है कि 5 (इसे $ maxcols में परिभाषित किया गया था) छवियों की अधिकतम संख्या आप पंक्ति में प्रदर्शित करना चाहते थे।

<table> 
    <tr> 
     <td><img src="image1.jpg" /></td> 
     <td><img src="image1.jpg" /></td> 
     <td><img src="image1.jpg" /></td> 
     <td><img src="image1.jpg" /></td> 
     <td><img src="image1.jpg" /></td> 
    </tr> 
    <tr> 
     <td><img src="image1.jpg" /></td> 
     <td><img src="image1.jpg" /></td> 
     <td>&nbsp;</td> 
     <td>&nbsp;</td> 
     <td>&nbsp;<td> 
    </tr> 
</table> 
+1

आपने 'i' के लिए बाहर परिभाषित किया है, इसलिए इसे' (i $ i <5/* जादू संख्या! बुरा! * /; ++ $ i) {) {echo 'के साथ भरने के लिए इसका उपयोग करें ""; } 'बंद करने के बीच'} 'और' echo ""; '। विभाजित करने या कुछ भी करने की जरूरत नहीं है। – RedX

+0

@RedX: हाँ आप सही हैं। यह करने का यह एक आसान तरीका है। तदनुसार मेरा जवाब संपादित करने जा रहा है। – Jules

+0

@ जुल्स: धन्यवाद! :-) मैं इसे आज़माउंगा ... – maxxon15

2
$max_per_row = 5; 
$item_count = 0; 

echo "<table>"; 
echo "<tr>"; 
foreach ($images as $image) 
{ 
    if ($item_count == $max_per_row) 
    { 
     echo "</tr><tr>"; 
     $item_count = 0; 
    } 
    echo "<td><img src='" . $image . "' /></td>"; 
    $item_count++; 
} 
echo "</tr>"; 
echo "</table>"; 
+0

धन्यवाद @ टॉम। मैं इसे आज़माउंगा ... – maxxon15

+0

धन्यवाद आदमी ... यह काम करता है! :) – maxxon15