2017-08-24 35 views
0

我想讓我的代碼在使用while循環的HTML表格中顯示。但是,我無法讓我的桌子顯示。我試圖回顯表格的方式有什麼問題嗎?雖然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>"; 
+0

查看答案,他們指出你的語法問題..也會建議,不要做每個行的回聲 - 這是不需要的。或者使用heredoc。 – gview

回答

0

我沒有經歷過完整的代碼了,但我可以看到,同時

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; 

更新錯誤的語法: 仍然可以優化的代碼,我剛剛給樣品工作

+0

是的,但你沒有指出與試圖回顯查詢句柄的問題。 – gview

+1

'echo $ resultItemData;'對我很可疑。哪個結果* ..可捕獲的致命錯誤:類sqlsrv_result的對象無法轉換爲字符串* –

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; 
0

您應該指定數組$rowitemdata.

的指標例如:

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

有在起作用的問題組合:

  1. 首先,你用開放,但接近endwhile; - 雖然技術上不是問題,但並不一致 - 如果您打開{,最好的做法是使用}關閉。

  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>"; 
} 
+0

好的解釋@cale_b。 –

0

讓我們假設你的查詢實際上產生的結果,因爲你不檢查,它的作用:

$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)); 
}