Php 每次行值更改时插入其他HTML

Php 每次行值更改时插入其他HTML,php,sql,sql-server,Php,Sql,Sql Server,我想从一个SQL查询中打印出“多个表”。其逻辑是,每次使用与前一行不同的新值打印一行,以创建HTML格式的新表 也许是这样的 This stuff is Assigned to JOE ----------------------------------- Assigned to |Column1 |Column2 ----------------------------------- Joe |1 |A Joe |2 |B

我想从一个SQL查询中打印出“多个表”。其逻辑是,每次使用与前一行不同的新值打印一行,以创建HTML格式的新表

也许是这样的

This stuff is Assigned to JOE
-----------------------------------
Assigned to |Column1   |Column2  
-----------------------------------
Joe         |1         |A
Joe         |2         |B
Joe         |3         |C


This stuff is Assigned to Adam
-----------------------------------
Assigned to |Column1   |Column2  
-----------------------------------
Adam        |1         |A
Adam        |2         |B


This stuff is Assigned to Patrick
-----------------------------------
Assigned to |Column1   |Column2  
-----------------------------------
Patrick     |1         |A
Patrick     |2         |B
Patrick     |3         |C
我对我的代码进行了测试运行,这是一个基本的PHP If语句,它试图检测前一行的变量是否没有更改。如果有,那么插入一些代码

$tsql = "
SELECT 
    id
    AssignedTo
    Column1
    Column2
FROM somewhere
ORDER BY AssignedTo ASC";  

/* Execute the query. */  
$stmt = sqlsrv_query( $conn, $tsql);  

/* I will set this variable to whatever for now */ 
$AssignedTo = '';

while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_NUMERIC))  
{       

If ($AssignedTo != $row[1])
    {
    $AssignedTo = $row[1];
    echo "<h1>This is assigned to ".$AssignedTo."</h1>";
    echo "<table><tr>headings</tr>";
    }

echo "<tr>bla bla</tr>";

} 
我不明白为什么我的“This stuff is assigned to”循环在表的所有其他行之上,即使if语句while


谢谢

一旦开始,您从未关闭过您的桌子

while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_NUMERIC))
{

If ($AssignedTo != $row[1])
    {
    if ($AssignedTo != '') {
        echo '</table>';
    }
    $AssignedTo = $row[1];
    echo "<h1>This is assigned to ".$AssignedTo."</h1>";
    echo "<table><tr>headings</tr>";
    }

echo "<tr>bla bla</tr>";

}
while($row=sqlsrv\u fetch\u数组($stmt,sqlsrv\u fetch\u NUMERIC))
{
如果($AssignedTo!=$row[1])
{
如果($AssignedTo!=''){
回声';
}
$AssignedTo=$row[1];
echo“这是分配给“$AssignedTo.”;
呼应“标题”;
}
呼应“布拉布拉”;
}

在开始新的代码之前,没有
。在您的if中,查看
$AssignedTo
是否为空,如果不是空,请在开始下一个之前添加
。好主意!我会把这个加进去。仍然不能解决实际行在所有这些“分配给”人员循环之后的问题。关闭表应该可以解决这个问题。当你把一堆表叠起来而不关闭它们时,行的结尾是很不可预测的:)让我试试,我从来没有想到过这个!
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_NUMERIC))
{

If ($AssignedTo != $row[1])
    {
    if ($AssignedTo != '') {
        echo '</table>';
    }
    $AssignedTo = $row[1];
    echo "<h1>This is assigned to ".$AssignedTo."</h1>";
    echo "<table><tr>headings</tr>";
    }

echo "<tr>bla bla</tr>";

}