每次行值更改时插入额外的 HTML
Posted
技术标签:
【中文标题】每次行值更改时插入额外的 HTML【英文标题】:Insert Additional HTML every time row value changes 【发布时间】:2018-08-16 18:10:12 【问题描述】:我想从一个 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 JOE
--------------------------------
This stuff is Assigned to Adam
--------------------------------
This stuff is Assigned to Patrick
--------------------------------
//Rest of the Rows down here after
我不明白为什么我的“This stuff is assigned to”在所有其余表行之上循环,即使 if 语句 在 while 内>.
谢谢
【问题讨论】:
在你开始一个新的之前没有</table>
。在您的 if 中查看 $AssignedTo
是否不为空,如果不为空,请在开始下一个之前添加 </table>
。
好主意!将添加它。仍然不能解决实际行在所有这些“分配给”人员循环之后的事实。
关闭表应该可以解决它。当您堆叠一堆表格而不关闭它们时,行最终是非常不可预测的:)
让我试一试,我从来没有想过这个!
【参考方案1】:
一旦你开始你的桌子,你就永远不会关闭它们。
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>";
【讨论】:
以上是关于每次行值更改时插入额外的 HTML的主要内容,如果未能解决你的问题,请参考以下文章
使用 easylogging++ 记录 QString 时插入的额外空间