每次行值更改时插入额外的 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 内>.

谢谢

【问题讨论】:

在你开始一个新的之前没有&lt;/table&gt;。在您的 if 中查看 $AssignedTo 是否不为空,如果不为空,请在开始下一个之前添加 &lt;/table&gt; 好主意!将添加它。仍然不能解决实际行在所有这些“分配给”人员循环之后的事实。 关闭表应该可以解决它。当您堆叠一堆表格而不关闭它们时,行最终是非常不可预测的:) 让我试一试,我从来没有想过这个! 【参考方案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的主要内容,如果未能解决你的问题,请参考以下文章

使用 Jade 呈现的 HTML 值中的额外空格

使用 easylogging++ 记录 QString 时插入的额外空间

将 Spring Boot 应用程序的库放在额外的 lib 目录中

算法可视化:实现没有循环但每次调用函数时增量可变的插入排序

扩展 log4net - 向每个日志添加额外数据

IE 对哈希更改发出额外的 GET 请求