0

わかりましたので、次のようなパーツのリストが表示されます。

PartID    CatID    PartName
0             1           Part 1
1             2           Part 2
2             1           Part 3
3             3           Part 4
4             2           Part 5
5             2           Part 6

PHPを使用してプルしています。複数のループを実行することなく、CatID の変更ごとにテキストの宣伝文を挿入するにはどうすればよいですか?

ページ上では、次のように表示できます。

"BLURB OF TEXT"
Part 1
Part 3
"BLURB OF TEXT"
Part 2
Part 5
Part 6
"BLURB OF TEXT"
Part 4

ここまでのコードです。= $row["CatID"] への割り当てを入れて、変数 == CatID かどうかを確認することを考えましたが、常に == でした...

while($row = sqlsrv_fetch_array($qry, SQLSRV_FETCH_ASSOC)) {
    echo $row["PartName"]
}
4

2 に答える 2

2

ループの外にある変数に ID を入れます。そうすれば、以前の ID と現在の ID を確認できます。現在のものが最後のものと同じでない場合は、テキストをエコーし​​ます。

$LastID = 0;
while($row = sqlsrv_fetch_array($qry, SQLSRV_FETCH_ASSOC)) {
    echo $row["PartName"];
    if($row["CatID"] > $LastID)
    {
        // ID changed!
        echo "Insert Text!";
    }
    $LastID = $row["CatID"];
}

もちろん、これは、必要な結果が表示されているように、データが昇順でソートされていることを前提としてCatIDいます。

于 2012-09-06T16:31:14.323 に答える
1

私は自分の論理が逆だった.... うーん、私が助けを求めた直後にそれを理解した数字...

                if($cCat == $row["catID"]){
                    //echo 'nothing here';
                }else{
                    echo '<a name="' . $row["PartCategory"] . '"></a>';
                    echo $this->GetPartCategories();
                    $cCat = $row["catID"];
                }

が機能し、while ステートメントの上にあるのは $cCat = ''; です。

やってみた

                if(!$cCat == $row["catID"]){
                    echo '<a name="' . $row["PartCategory"] . '"></a>';
                    echo $this->GetPartCategories();
                    $cCat = $row["catID"];
                }

何らかの理由で機能しませんでした。

ps私のクエリにはすでに注文があります。catID、partSortOrder、partName の順で並べ替えます

于 2012-09-06T16:43:18.997 に答える