PHP查询SQL输出表格时如何让相同ITEMNO行紧贴不同ITEMNO行留空行
问题原因
- 原代码中的判断
if ($ITEMNO = $ITEMNO)是赋值操作而非等值判断,永远返回真,会导致每次循环都输出空行 - 没有记录上一条数据的ITEMNO,无法区分是否是同物料分组
- 每次循环都重复创建table、输出表头,HTML结构不规范,也会导致物料基础信息重复展示
实现思路
新增变量存储上一条记录的ITEMNO,循环时对比当前ITEMNO与上一次存储的值:
- 若两者不同且不是第一条数据,输出空行分隔不同物料
- 同物料下仅首次输出物料基础信息(ITEMNO、DESC、STOCKUNIT),后续仅输出库存位置行,无需空行
修正后代码
$table = "SELECT * FROM [TestDB].[dbo].[ICILOC] INNER JOIN [TestDB].[dbo].[ICITEM] ON [TestDB].[dbo].[ICILOC].[ITEMNO]=[TestDB].[dbo].[ICITEM].[ITEMNO] WHERE [QTYONHAND] <> '0' ORDER BY [ICILOC].[ITEMNO] DESC "; $RS = odbc_exec($connection, $table); // 存储上一次的ITEMNO,初始为null $prevItemNo = null; while (odbc_fetch_row($RS)) { $ITEMNO = odbc_result($RS, "ITEMNO"); $DESC = odbc_result($RS, "DESC"); $STOCKUNIT = odbc_result($RS, "STOCKUNIT"); $UNITWGT = odbc_result($RS, "UNITWGT"); $LOCATION = odbc_result($RS, "LOCATION"); $QTYONHAND = odbc_result($RS, "QTYONHAND"); $QTYONORDER = odbc_result($RS, "QTYONORDER"); $QTYSALORDR = odbc_result($RS, "QTYSALORDR"); // 判断是否是新的ITEMNO if ($ITEMNO != $prevItemNo) { // 不是第一条数据的话,先输出空行分隔上一个物料 if ($prevItemNo !== null) { echo "<br><br>"; } // 输出当前物料的基础信息表头和内容 echo "<center><table>"; echo "<tr><th>ITEMNO</th><th>DESC</th><th>STOCKUNIT</th></tr>"; echo "<tr><td>$ITEMNO</td><td>$DESC</td><td>$STOCKUNIT</td></tr>"; // 输出库存信息表头 echo "<tr><th>LOCATION</th><th>QTYONHAND</th><th>QTYONORDER</th><th>QTYSALORDR</th></tr>"; } // 不管是不是同物料,都输出当前库存行 echo "<tr><td>$LOCATION</td><td>$QTYONHAND</td><td>$QTYONORDER</td><td>$QTYSALORDR</td></tr>"; // 更新上一次的ITEMNO为当前值 $prevItemNo = $ITEMNO; } // 最后闭合table和center标签 echo "</table></center>"; odbc_close($connection);
内容的提问来源于stack exchange,提问作者Tachin
相关产品推荐
相关产品推荐

