2011-10-25 44 views
5

Tôi đang cố gắng tạo một bảng động với PHP. Tôi có một trang hiển thị tất cả các hình ảnh từ một cơ sở dữ liệu. Tôi chỉ cần bảng có 5 cột. Nếu hơn 5 hình ảnh được trả lại, nó sẽ tạo ra một hàng mới và hiển thị phần còn lại của bức ảnh sẽ tiếp tục.Tạo một bảng động với PHP

Mọi người có thể giúp bạn không?

Codes đi ở đây: Mã trong trang chính: -

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

Các get_all_pics() chức năng:

$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; 

Mã này đang tạo ra một hàng duy nhất. Tôi không thể nghĩ làm thế nào tôi có thể nhận được nhiều hàng ... !!

+2

Chỉ cần thông báo - bạn đang bị giảm giá vì bạn không đăng bất kỳ mã nào. – Drew

+0

Nếu bạn có thể chỉnh sửa câu hỏi này để cung cấp các ví dụ mã có liên quan về những gì bạn đã thử, vui lòng gắn cờ cho sự chú ý của người kiểm duyệt để được xem xét. Để chỉnh sửa, chỉ cần nhấp vào liên kết 'chỉnh sửa' bên dưới câu hỏi của bạn. Để gắn cờ, hãy nhấp vào liên kết 'gắn cờ', chọn 'khác' và cho chúng tôi biết nó đã sẵn sàng để được xem xét. –

+0

@Tim Post: Tôi thực sự không đồng ý với hành động của bạn. Tôi nghĩ câu hỏi của anh ấy rất rõ ràng. Tôi đã nhìn thấy những câu hỏi tồi tệ hơn trên bảng này. – Jules

Trả lời

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>"; 

tôi đã không kiểm tra nó chưa nhưng tôi đoán hoang dã của tôi là một cái gì đó như thế. Chỉ cần chu kỳ thông qua tập dữ liệu của bạn với các hình ảnh và miễn là bạn không làm cho 5 <td> của chưa, thêm một. Khi bạn đạt đến 5, hãy đóng hàng và tạo một hàng mới.

Tập lệnh này được cho là cung cấp cho bạn một số thông tin như sau. Nó rõ ràng phụ thuộc vào bao nhiêu hình ảnh bạn có và tôi giả định rằng 5 (được định nghĩa trong $ maxcols) là số lượng tối đa hình ảnh bạn muốn hiển thị liên tiếp.

<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

Bạn đã định nghĩa 'i' bên ngoài của for, do đó, chỉ cần sử dụng nó để điền nó với' for (; $ i <5/* số ma thuật! Bad! * /; ++ $ i) {) {echo ""; } 'giữa kết thúc'} 'và' echo ""; '. Không cần phải phân chia hay gì cả. – RedX

+0

@RedX: Có bạn đã đúng. Đó là một cách dễ dàng hơn để làm điều đó. Sẽ chỉnh sửa câu trả lời của tôi cho phù hợp. – Jules

+0

@Jules: Cảm ơn! :-) Tôi sẽ dùng thử ... – 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

Cảm ơn @Tom. Tôi sẽ thử nó ... – maxxon15

+0

Cảm ơn người đàn ông ... Nó hoạt động! :) – maxxon15

Các vấn đề liên quan