1

私は運が悪いので、しばらくの間抱えている問題を解決しようとしています...

$photosこれらを配置するための html テーブルを作成する必要がある SQL テーブル ( ) がありますが、テーブルの幅は 4 行のみです。

-----------------------------------------
| image 1 | image 2 | image 3 | image 4 |
-----------------------------------------
| image 5 | image 6 | image 7 | image 8 |
-----------------------------------------

SQL結果セットがあり、列名は次のとおりです$photo_id->主キー$linkUri->ページに基づく画像の場所(つまり/images/image1.gif)

誰かが私にいくつかの指針やこれを行う方法の例を教えてもらえますか?

limit を使用するとうまくいきますか?

どんな助けでも役に立ちます:)

4

1 に答える 1

-1

モジュラス演算子を使用すると、結果の数に基づいてテーブルのブレークポイントを簡単に設定できます。基本的に、現在のキーを列幅で割った値が 0 に等しいかどうかを確認してから、現在のテーブル行を終了して新しい行を開始します。

注意が必要なのは、9 つ​​の要素があり、すべての行に 4 つを表示している場合にどうなるかを管理することです。この場合、マークアップが引き続き有効になるように、最後のテーブル行に空のデータを埋め込む必要があります。なんらかの意味で、私は役に立つがスパゲッティ コードの小さな断片を書きました。以下をビューに追加し、必要に応じて変数を置き換えてください。

<?php $columnWidth = 4;?>
<table>
    <tbody>
        <tr>

        <?php foreach ($images as $key => $image):?>
            <?php if ($key % $columnWidth === 0 && $key !== 0):?>
                </tr><tr>
            <?php endif;?>

            <td><?php echo img($image->linkUri);?></td>
        <?php endforeach;?>

        <?php
            $elementsStillLeftToPad = $columnWidth - 1 - ($key % $columnWidth);

            if ($elementsStillLeftToPad !== 0) {
                for ($element = 0; $element < $elementsStillLeftToPad; $element++):?>
                <td>&nbsp;</td>
                <?php endfor;
            }
        ?>

        </tr>
    </tbody>
</table>

上記のコードをヘルパーに移動することを検討してください。そうすれば、よりクリーンで DRY になります。このタスクを大幅に軽減するテンプレート エンジンの使用を検討することもできます。

于 2013-10-21T01:15:05.113 に答える