2012-10-09 46 views
0

此PHP代碼顯示我的目錄在我的網站上的內容:動態表(冒號依賴於該表的內容)

<?php 
$dir = opendir(getcwd()); 
?> 
<body> 
<table> 
    <tbody> 
     <tr> 
<?php 
    while (($file = readdir($dir)) !== false) { 
     { 
      echo "<td>". $file ."</td>"; 
    }  
    } 
    closedir($dir); 
?> 
     </tr> 
    </tbody> 
</table> 
</body> 

它把結果放在一個table。 問題是PHP代碼會生成一個<td>標記並將結果存儲在其中。所以最後的table有一個<tr>和儘可能多的<td>標籤,因爲有結果。

我想要的是一個table與每列(tr標籤)3列(3 td)。

有沒有一種方法,使動態表和每個第三<td>標籤變成是一個<tr>標籤 這樣的結果是這樣的:(click here)

而不是尋找這樣的:(click here)

+0

使用punctuaction請... – czachor

回答

4

試這樣的:

<?php 
$dir = opendir(getcwd()); 
?> 
<body> 
<table> 
    <tbody> 

<?php 
    $n = 0; 
    while (($file = readdir($dir)) !== false) { 
     { 
      if($n%3 == 0){echo "<tr>";} 
      echo "<td>". $file ."</td>"; 
      $n++; 
    }  
    } 
    closedir($dir); 
?> 

</tbody> 

+0

這是不行的。當第一個循環運行時,帶有文件名的,1​​將被寫出並且已經1關閉。所以沒有三列。 –

+0

酷!我不確定這個新的設置。 $ n將始終爲$ n,並且由於您檢查寫出開始與寫出末尾的檢查有所不同,因此理論上有可能表格行永遠不會關閉。 我總是使用我在答案中描述的設置,永遠不會讓我失敗... –

+0

非常感謝你的工作 你給我的確切代碼 我已經看到了結果的源代碼 並且沒有結束標籤這樣 但瀏覽器關閉自動..在HTML 和所有其他打開的標籤。(我讀過之前) 謝謝你的任何方式,先生 –

1

您可以使用modulus來跟蹤您在循環中的位置。 然後,當你已經打了3個乘法,重新啓動錶行:

<?php 
    $dir = opendir(getcwd()); 
?> 
<body> 

    <table> 
     <tbody> 
      <tr> 
      <?php 
       $counter = 0; 
       while (($file = readdir($dir)) !== false) { 
        { 
         if($counter % 3 == 0 && $counter != 0) echo "</tr><tr>"; 
         echo "<td>". $file ."</td>"; 
         $counter++; 
        }  
       } 
       closedir($dir); 
      ?> 
      </tr> 
     </tbody> 
    </table> 

</body> 
+0

我認爲你的代碼與前面的回答相同 你把另一個變量$ counter放置在$ n 的地方,但是如果你想讓它工作,你的代碼需要兩件事:第一個是像這樣添加 如果($ counter%3 == 0 && $ counter!= 0){echo「」;} 第二種是加 $ counter ++;爲增量 ,但謝謝你的答案 –

+0

你是正確的增量,我已經添加它。 對於像這樣的單個if語句,您不需要那些大括號。 –