1

現時点では、以下のコードを使用すると、次のようなデータが表示されます。

http://img27.imageshack.us/img27/8083/29769986.jpg

しかし、私はそれを次のように表示したい:

http://img259.imageshack.us/img259/3233/24033830.jpg

最初の画像にあるように、表示されているデータのコードは次のとおりです。

<div id="content">
  <?php foreach ($categories as $category) { ?>
  <div class="manufacturer-list">
    <div class="manufacturer-heading"><?php echo $category['name']; ?><a id="<?php echo $category['name']; ?>"></a></div>
    <div class="manufacturer-content">
      <?php if ($category['manufacturer']) { ?>
      <?php for ($i = 0; $i < count($category['manufacturer']);) { ?>
      <ul>
        <?php $j = $i + ceil(count($category['manufacturer']) / 4); ?>
        <?php for (; $i < $j; $i++) { ?>
        <?php if (isset($category['manufacturer'][$i])) { ?>
        <li><a href="<?php echo $category['manufacturer'][$i]['href']; ?>"><?php echo $category['manufacturer'][$i]['name']; ?></a></li>
        <?php } ?>
        <?php } ?>
      </ul>
      <?php } ?>
      <?php } ?>
    </div>
  </div>
  <?php } ?>
</div>

「HTC」テキストの下に「Hewlett-Packard」テキストを取得するように命令し、「/ 4」を「/ 1」に変更しましたが、データを 3 列に表示する方法がわかりません ( 2番目の写真のように)、現在のように(最初の写真に示されているように)1つの代わりに。

前もって感謝します。

編集:私が実際に必要としているのは、このコードを数えて計算することです:

<?php foreach ($categories as $category) { ?>
.
.
.
<?php } ?>

したがって、カテゴリの数を数え、計算を行い、その間のコードを 3 つの列に表示する必要があります。

4

3 に答える 3

1

これを試してみてください。

<div id="content">
<div class="content-column">
  <?php 
    $cols = 3; // Change to columns needed.
    $catcount = count($categories);
    $catpercol = ceil($catcount / $cols);
    $c = 0;
    foreach ($categories as $category) { 
      if ( $c == $catpercol ) {
        $c = 0;
        print "</div><div class='content-column'>";
      }
 ?>
  <div class="manufacturer-list">
    <div class="manufacturer-heading"><?php echo $category['name']; ?><a id="<?php echo $category['name']; ?>"></a></div>
    <div class="manufacturer-content">
      <?php if ($category['manufacturer']) { ?>
      <?php for ($i = 0; $i < count($category['manufacturer']);) { ?>
      <ul>
        <?php $j = $i + ceil(count($category['manufacturer']) / 4); ?>
        <?php for (; $i < $j; $i++) { ?>
        <?php if (isset($category['manufacturer'][$i])) { ?>
        <li><a href="<?php echo $category['manufacturer'][$i]['href']; ?>"><?php echo $category['manufacturer'][$i]['name']; ?></a></li>
        <?php } ?>
        <?php } ?>
      </ul>
      <?php } ?>
      <?php } ?>
    </div>
  </div>
  <?php $c++; } ?>
</div>
</div>

.content-column { float: left; width: 33.33333%; }CSSに追加します。

詳細: $cols = 3;必要な列数を設定できます (注: それに応じて CSS を変更する必要がある場合があります)。

$catcount = count($categories);レンダリングしようとしているカテゴリの総数を示します。

$catpercol = ceil($catcount / $cols);その合計数を必要な数の列に均等に分割し、最後の列は最終的に他の列よりも項目が少なくなります。

$c = 0;あなたのカウンターです。外側の foreach ループの最後で増加します。

ループ内で、番号と$c一致するかどうかがチェックされ、一致する$catpercol場合は、現在の親 div が閉じられ、新しい div が作成されます。必要な列の数だけ親 div が作成されます。適切な CSS を追加して、それらを互いに並べて表示するだけです。

于 2012-04-25T11:52:10.470 に答える
0

PHP コードを変更せずに、html/css を介して 3 列のレイアウトを作成することは可能だと思います。を使用するだけfloat:left; width: 33%です。マージンとボーダーがあるため、 width プロパティに絶対値を使用することもできます。

于 2012-04-25T11:37:09.203 に答える
0

次のコードを理解してください。要件に応じて、コードは、指定されたスクリーンショットに従って目的を達成するためのヒントを提供するだけです http://img259.imageshack.us/img259/3233/24033830.jpg

echo "<table>";
echo "<tr>";

$i = 1;

do{

  // column range
  $range = 3;

  echo "<td>" . $i;

  if( $i % $range == 0 ){
  echo "</tr>";
  echo "<tr>";
  }

  echo "</td>";

  $i++;

}while( $i <= 10 );

echo "</tr>";
echo "</table>";

これがあなたを助けることを願っています

于 2012-04-25T11:38:04.847 に答える