1

私は mysql データベースから情報を引き出すための php ページを作成しています。

複数の行を返す MySql クエリがあります。これにより、while ループを使用して簡単にループでき、相対的な「一致する」データがある場所を明らかにループします。

引き出される各行には、行ごとに異なる 1 ~ 16 列のデータを含めることができます。現在、有効な情報を抽出する方法は、入力された情報のみが表示されるように、各列の「if」コマンドをハードコーディングすることです。 、例:

if($column1 != ""){
    $output .= "<div style='float: left;'>Column 1 Stuff</div>";
    }
if($column2 != ""){
    $output .= "<div style='float: left;'>Column 2 Stuff</div>";
    }

これは問題なく動作しますが、あまり動的ではなく、Mysql データベース テーブルが拡張された場合はコードを更新する必要があります。私が本当にやりたいことは、データが含まれるすべての列に対して同じ手順を実行し、空白のセルを無視する while ループのような単一ビットのコードを使用することです。誰もが知っているこれを効率的に達成する良い方法はありますか?

また、問題が発生した場合に備えて、私の「div」はすべて左に配置されているため、囲んでいる div の最後に到達すると、自動的に次の行にきちんと折り返されます。したがって、9 つの結果があった場合は 3 行になります。 3つの「div」ボックス。これは、この種の結果を達成するための有効な方法ですか? この投稿のように「break」コマンドを使用して回答することを検討していました-> PHPで水平ループを実行する方法 、しかし、IE9以前のタグとの互換性の問題が非常に多いため、可能な限り実装を避けています.

できれば、事前にあなたの助けに感謝します! ジョー

4

1 に答える 1

8

何かのようなもの:

$result = mysql_query(...);
while($row = mysql_fetch_assoc($result)) {
   foreach ($row as $key => $val) {
       if (!empty($val)) {
            echo ...
       }
   }
}

結果セット内の任意の数の列を処理します。

于 2012-07-31T14:49:59.923 に答える