0

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( )?????
   }
4

2 回答 2

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>';
}
于 2013-03-06T17:02:15.760 回答
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>';
于 2013-03-06T16:59:48.550 回答