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

我的逻辑倒退了.... grr,数字我在寻求帮助后立即弄清楚了...

                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 回答