【问题标题】:PHP While HTML TablePHP While HTML 表格
【发布时间】:2018-02-02 12:20:26
【问题描述】:

我正在尝试使用 while 循环让我的代码显示在 HTML 表格中。但是,我无法显示我的表格。我试图呼应表格的方式有问题吗?

 <?php


 #-----call includes-----# include('E:/includes/database.php'); 
 include('E:/includes/sendmail.php');

 ini_set('error_reporting', E_ALL ^ E_NOTICE); 
 ini_set('display_errors','on');


 $do = $_REQUEST['do']; 


$queryOrders = "select t2.SlpName As 'Seller', t1.SWW As 'Vendor', t0.DocDate As 'Date',t0.DocTotal As 'Total'
                from twh.dbo.OINV t0
                  inner join twh.dbo.inv1 t1  on t0.DocEntry = t1.DocEntry

         inner join twh.dbo.OSLP t2 on t1.SlpCode = t2.SlpCode
                where t0.DocDate > DATEADD (month, -2, getdate())
                  order by t0.DocTotal desc";

$resultItemData = sqlsrv_query($con, $queryOrders);


    echo "<table border=\"1\" align=\"center\">";
    echo "<tr><th>Seller</th>";
    echo "<th>Vendor</th>";
    echo "<th>Date</th>";
    echo "<th>Total</th></tr>"
    while($rowItemData = sqlsrv_fetch_array($resultItemData)){
        echo "<tr><td>";
        echo "$resultItemData";
        echo "</td></tr>";
    endwhile;

    }
    echo"</table>";

【问题讨论】:

  • 查看他们指出您的语法问题的答案.. 还建议不要对每一行都进行 echo --- 这不是必需的。或者使用heredoc。

标签: php html sql while-loop html-table


【解决方案1】:

稍作修改。检查这个:

while($rowItemData = sqlsrv_fetch_array($resultItemData)) :
    echo "<tr><td>";
    echo $rowItemData[ColumnValue]; //In your code, didn't access the column value earlier 
    echo "</td></tr>";
endwhile;

【讨论】:

    【解决方案2】:

    有一系列问题在起作用:

    1. 首先,您使用 { 打开 while,但使用 endwhile; 关闭 - 虽然从技术上讲不是问题,但不一致 - 如果您使用 { 打开,最好使用 @987654324 关闭@.

    2. 其次,您尝试回显整个数组,这将无法正常工作。

    3. 第三,无需将值放在引号内:echo "$resultItemData"; 可以简单地为 echo $resultItemData

    4. 第四,您尝试回显$resultItemData,这是一种资源,而不是行数据。你想回显$rowItemData 值。

    5. 最后,您可能希望结果是关联数组,而不是数字索引数组,因此您可以考虑使用sqlsrv_fetch_array( $resultItemData, SQLSRV_FETCH_ASSOC)

    以下是您的代码,经过修改后可以工作,并遵循更好的做法:

    // columns: 'Seller',Vendor, 'Date', 'Total'
    while( $rowItemData = sqlsrv_fetch_array( $resultItemData, SQLSRV_FETCH_ASSOC ) ) {
        echo "<tr><td>";
        echo "<td>$rowItemData['Seller']</td>";
        echo "<td>$rowItemData['Vendor']</td>";
        echo "<td>$rowItemData['Date']</td>";
        echo "<td>$rowItemData['Total']</td>";
        echo "</tr>";
    }
    

    【讨论】:

    • 很好的解释@cale_b。
    【解决方案3】:

    你应该指定数组$rowitemdata.的索引

    例如:

    echo"<tr><td>".$rowitemdata['Vendor']." 
    

    【讨论】:

      【解决方案4】:

      我还没有浏览你的完整代码,但是我可以看到 while 语法错误

      while($rowItemData = sqlsrv_fetch_array($resultItemData)){
          echo "<tr>";
          echo "<td>".$resultItemData['Seller']."</td>";
          echo "<td>".$resultItemData['Vendor']."</td>";
          echo "<td>".$resultItemData['Date']."</td>";
          echo "<td>".$resultItemData['Total']."</td>";
          echo "</tr>";
      }
      

      while($rowItemData = sqlsrv_fetch_array($resultItemData)) :
          echo "<tr>";
          echo "<td>".$resultItemData['Seller']."</td>";
          echo "<td>".$resultItemData['Vendor']."</td>";
          echo "<td>".$resultItemData['Date']."</td>";
          echo "<td>".$resultItemData['Total']."</td>";
          echo "</tr>";
      endwhile;
      

      更新: 你仍然可以优化代码,我只是给出了示例工作

      【讨论】:

      • 是的,但您没有指出尝试回显查询句柄的问题。
      • echo $resultItemData; 对我来说很可疑。结果 ..可捕获的致命错误:sqlsrv_result 类的对象无法转换为字符串
      【解决方案5】:

      假设您的查询确实产生了结果,因为您没有检查它是否确实产生了结果:

      $resultItemData = sqlsrv_query($con, $queryOrders);
      
      $header = <<<HEREDOC
      <table border="1" align="center">
      <tr>
        <th>Seller</th>
        <th>Vendor</th>
        <th>Date</th>
        <th>Total</th>
      </tr>
      HEREDOC;
      
      echo $header;
      
      while($rowItemData = sqlsrv_fetch_array($resultItemData)) {
          echo "<tr>
                  <td>{$rowItemData['Seller']}</td>
                  <td>{$rowItemData['Vendor']}</td>
                  <td>{$rowItemData['Date']}</td>
                  <td>{$rowItemData['Total']}</td>
                </tr>";
      }
      echo '</table>';
      

      要实际检查查询是否有效,您可能需要这样做。这只是为了调试/说明查询执行的错误检查。您不想将错误输出到屏幕,而是将其记录下来。您可能只想输出表格页眉/页脚并完全跳过 while/循环。

      $resultItemData = sqlsrv_query($con, $queryOrders);
      if (resultItemData === false) {
          die(print_r(sqlsrv_errors(), true));
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-02
        • 2013-03-28
        • 2012-04-18
        • 1970-01-01
        • 1970-01-01
        • 2012-12-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多