2012-01-25 17 views
7

Tôi đang tạo một diễn đàn bằng PHP. Tôi phải hiển thị tất cả các loại diễn đàn trong một bảng, và để làm như vậy, tôi đã sử dụng một vòng lặp while. Tuy nhiên, tôi muốn chỉ có 3 td trong mỗi hàng của bảng. Để lặp qua các loại, tôi đang sử dụng một vòng lặp while với truy vấn, vì vậy tôi không nghĩ rằng tôi có thể sử dụng mô-đun ở đây.Chèn tr sau mỗi vòng lặp thứ ba

+0

cho chúng ta thấy mã của bạn –

+0

Bạn có thể sử dụng toán tử modulus '%' bằng cách đơn giản tạo một biến gia tăng '$ i = 0' trước vòng lặp và tăng nó' ++ $ i' trong mỗi lần lặp của vòng lặp while. – rdlowrey

Trả lời

13

Tại sao bạn không thể sử dụng mô-đun? Chỉ cần thêm một bộ đếm ở đâu đó và nếu nó chạm vào số % 3 == 0 hãy đặt lại bộ đếm và thực hiện công cụ của bạn.

Bạn có thể cần phải làm thêm một số nếu là cho đầu tiên và cuối cùng và các công cụ như thế, nhưng không có lý do gì để không sử dụng một modulo trong một thời gian.

$i=0; 
while(guard()){ 
    if($i % 3 == 0){ 
     //ploing 
    } 
$i++ 
} 
+0

Ah, rực rỡ! Tôi phải lấy cái móc của mô đun này. – user1169875

+7

+1 cho hiệu ứng âm thanh tuyệt vời ... – squarecandy

2

tôi đã không kiểm tra mã, nhưng logic nên làm việc:

<Table> 
<?php 
$i = 0; 
while($row = mysql_fetch_array($result)){ 
    if($i == 0){ 
     echo"<TR>"; 
    } 
    echo"<td>".$row[0]."<TD>"; 
    $i++; 
    if($i == 3) 
    { 
     $i = 0; 
     echo"</tr>" 
    } 
} 
if($i ==1){ 
    echo "<td></td><td></td></tr>"; 
} 
if($i ==2) 
{ 
    echo "<td></td></tr>"; 
} 
?> 
<table> 
11

Mã này sẽ đóng bất kỳ hàng thêm:

<table> 
<?php 
$i = 0; 
while($row = mysql_fetch_array($result)){ 
    $i++; 
    //if this is first value in row, create new row 
    if ($i % 3 == 1) { 
     echo "<tr>"; 
    } 
    echo "<td>".$row[0]."</td>"; 
    //if this is third value in row, end row 
    if ($i % 3 == 0) { 
     echo "</tr>"; 
    } 
} 
//if the counter is not divisible by 3, we have an open row 
$spacercells = 3 - ($i % 3); 
if ($spacercells < 3) { 
    for ($j=1; $j<=$spacercells; $j++) { 
     echo "<td></td>"; 
    } 
    echo "</tr>"; 
} 
?> 
</table> 
+0

Cảm ơn bạn! Cộng đồng này hoàn toàn hữu ích nhất mà tôi đã gặp! – user1169875