Генерация таблицы для записей базы данных - PullRequest
0 голосов
/ 21 января 2012

Следующий код будет генерировать <tr></tr> на каждом $product->title

<table>
    <?php foreach ($products as $product) {
            echo '<tr>
                      <td>'.$product->title.'</td>
                  </tr>';
    }?>
</table>

Но я хочу сгенерировать строку после каждых трех столбцов как вывод кода выше.

<table>
    <tr>
            <td>$product->title/td>
            <td>$product->title/td>
            <td>$product->title</td>
    </tr>
            <td>$product->title</td>
            <td>$product->title</td>
            <td>$product->title</td>
    </tr>
</table>

Ответы [ 3 ]

1 голос
/ 21 января 2012

Я так часто использую эту форму, что она посвящена памяти типов.

<table>
<?php
    $count = 0;  // we gotta count them lines
    foreach ($products as $product)
    {
        if ( ($count % 3) == 0 )  // every 3 lines
        {
            if ($count > 0)  // not at first line
                echo '</tr>';  // close previous row
            echo '<tr>';  // open new row
         }
         ++$count;  // better count this one now.

         echo '<td>'.$product->title.'</td>;
    }
    if ($count > 0) 
        echo '</tr>';  // close last row
?>
</table>
0 голосов
/ 21 января 2012

Возможно, что-то вроде этого:

<table>
<?php
   $count = count($products); 
   foreach ($products as $key => $product) {
        // print on first row and third row
        if($key % 3 == 0) {
            echo '<tr>';
        }
        echo '<td>'.$product->title.'</td>';
        // print on third row or on last element
        if((($key + 1) % 3 == 0 && $key > 0) || $key == $count-1) {
            echo '</tr>';
        }
   }
?>
</table>

Если ваш массив не проиндексирован от 0 и выше, вам придется использовать счетчик для переменной $key.

0 голосов
/ 21 января 2012
    $i=1;
    <table>
        <?php foreach ($products as $product) {
           if ( $i<= 3 ) {
               if($i==1) {
                 echo '<tr>';
               }    
               echo '<td>'.$product->title.'</td>';
               $i++;
           }
           else {
               echo'</tr>';
               $i=1;
           }
        }?>
    </table>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...