对PHP来说很新,所以这就是问题所在。我有一个SQL结果集,具有以下结构:
ItemID Desc
0 A
1 B
2 C
0 D
3 E
0 F
4 G
5 H
对于每个ItemID = 0,我想创建一个表。然后对于ItemID = 0下的每个ItemID,我想在新表中创建一行,直到我点击下一个ItemID = 0.重复直到结束。
期望的结果:
<table>
<tr>
<td>A</td>
</tr>
</table>
<table>
<tr>
<td>B</td>
</tr>
<tr>
<td>C</td>
</tr>
</table>
<table>
<tr>
<td>D</td>
</tr>
</table>
<table>
<tr>
<td>E</td>
</tr>
</table>
<table>
<tr>
<td>F</td>
</tr>
</table>
<table>
<tr>
<td>G</td>
</tr>
<tr>
<td>H</td>
</tr>
</table>
我可以在ItemID = 0时打印每个表,但是怀疑它是正确的方法。这是我到目前为止的PHP代码:
$legendSql="select ItemID, Desc from ...";
$getLegend=sqlsrv_query($conn, $legendSql);
while( $row = sqlsrv_fetch_array( $getLegend, SQLSRV_FETCH_ASSOC) ) {
if ($row['ItemID'] === '.00') { // when ItemID = 0 create table
print '<table>';
print '<tr>';
print '<td>';
print $row['Desc'];
print '</td>';
print '</tr>';
print '</table>';
}
// foreach( )?????
}
答案 0 :(得分:1)
这样的事情:
$first=1;
while( $row = sqlsrv_fetch_array( $getLegend, SQLSRV_FETCH_ASSOC) )
{
if ($row['ItemID'] === '.00') // when ItemID = 0 create table
{
if ($first==0)
{
print '</table>';
}
print '<table>';
print '<tr>';
print '<td>';
print $row['Desc'];
print '</td>';
print '</tr>';
print '</table>';
$first=1;
}
else
{
if ($first==1)
{
print '<table>';
$first=0
}
print '<tr>';
print '<td>';
print $row['Desc'];
print '</td>';
print '</tr>';
}
}
if ($first==0)
{
print '</table>';
}
答案 1 :(得分:0)
只需稍微更改您的if
声明:
if ($row['ItemID'] === '.00') { // when ItemID = 0 create table
print '<table>';
}
print '<tr>';
print '<td>';
print $row['Desc'];
print '</td>';
print '</tr>';
在while
循环之外,把它放在:
print '</table>';
整个循环结构变为:
while( $row = sqlsrv_fetch_array( $getLegend, SQLSRV_FETCH_ASSOC) ) {
if ($row['ItemID'] === '.00') {
print '<table>';
}
print '<tr>';
print '<td>';
print $row['Desc'];
print '</td>';
print '</tr>';
}
print '</table>';