0

PHPを使用してクエリ結果をチャンクに分割しようとしていますが、クエリまたはループを定式化して結果を4つのバッチに分割し、それらの4行を特定のHTML要素で囲む方法を理解できないようです.

コンテンツは具体的には写真のポートフォリオであり、写真を行ごとに表示しようとしていますが、スタイルを設定する必要がある方法では、基本的に各行を個別の情報セットにする必要があります。

これは私がこれまでに取り組んでいるコードです:

<ul class="no-bullet">
<?php

require("connect.php");
$query = "SELECT * FROM dv_photo_work LIMIT 4";

$result = mysql_query($query, $link);
while ($row = mysql_fetch_array($result)) {
  print('
     <li><img alt="'.$row["img_title"].'" src="'.$row["img_slug"].'></li>');
}


?>
</ul>

ただし、そのリストには4つの画像のみが必要です。そして、別のリストの別の 4 つ。 ループが 4 つのレコードを返し、別のリストにある次の 4 つのレコードの新しいクエリを開始するようにループを再構成するのを手伝ってくれませんか? これを取得するデータベースには約 100 のレコードがあるため、テーブル全体が一覧表示されるまで続行できる必要があります。

これはページネーションのプロセスに似ていると思いますが、それは私がよく知らない別の手法です。クエリとマークアップの単純な調整だと思いますが、単純な修正よりもコードの創造性が少し必要なものであることは理解できました。

どうもありがとう、

ジョシー

4

4 に答える 4

1

これを試して

<ul class="no-bullet">
<?php
require("connect.php");
$query = "SELECT * FROM dv_photo_work";
$result = mysql_query($query, $link);
$i =1;
while($row = mysql_fetch_array($result)) {
   print('<li><img alt="'.$row["img_title"].'" src="'.$row["img_slug"].'></li>');
   if ($i%4 == 0) echo "</ul><ul class='no-bullet'>";
   $i++;
}
?>
</ul>
于 2013-06-27T02:08:00.803 に答える
0

すべての結果を取得し、それらを多次元配列に読み取り、array_chunk() でグループに分割します。

$query = mysql_query("SELECT * FROM dv_photo_work",$link);
$results = array();
while($line = mysql_fetch_array($query, MYSQL_ASSOC)){
    $results[] = $line;
}
$lists = array_chunk($results,4);
foreach ($lists as $list) {
    echo '<ul>';
    foreach ($list as $result) {
        echo '<li><img alt="'.$result["img_title"].'" src="'.$result["img_slug"].'></li>'
    }
    echo '</ul>';
}
于 2013-06-27T02:10:28.457 に答える
0

初め!そのロジックを html から遠くに移動すると、問題をより明確に確認できます。2番!クエリ結果の長さ n のリストを表すクラス A の 2 つのクラスについてはどうでしょうか。クラス A は、クラス B が結果の任意の長さのチャンクを取得し、適切なサイズの結果オブジェクトを返すことができるように、反復子である必要があります。サイズが制限された結果をインスタンスが表す 3 番目のクラスがあるかもしれません。したがって、3 つのクラスすべてで、A は結果の完全なリストを表し、B は a に作用し、サイズが制限された結果チャンクを表す C のインスタンスを返します。

これはもともとコメントでしたが、長すぎたので、回答にしなければなりませんでした(あまりにも「人に釣りを教える」場合は申し訳ありません。私はPHPを書きたくないだけです...)

于 2013-06-27T02:01:54.097 に答える
0

モジュラス演算子 (%) を使用して 4 レコードごとに HTML を変更する、関連するロジックの概要を次に示します。

$i = 0;

// within your current while-loop:
    if ($i % 4 == 0) {
        // $i is a multiple of 4 (including 0, the first record)
        if ($i > 0) {
            // finish the previous ul-tag
        }
        // start a new block of HTML (the ul)
    }
    // output the li
    $i += 1;

// after the loop, close the last ul
于 2013-06-27T02:14:42.520 に答える