2016-08-12 30 views
1

我已經成功地完成了連接到我的數據庫並返回所需數據的php腳本。但是我需要擴展這個腳本來插入一個變量,用一些計算(稅,免稅,保證金等)來顯示價格。如何使用WHILE獲取的行在MySQL查詢中使用PHP變量?

此腳本僅顯示所有提取的行中第一個數據庫行0.00的價格值,並且它不正確 - 對於第一個數據庫行是確定的,因爲產品具有0.0000價格,但其他行填充了正確的值。它似乎像while循環不喜歡我的$ styledprice變量。我無法確定如何在所有行中顯示正確的字段值。任何想法很多apprecciated?我是一名PHP初學者!

$pricequery = "SELECT rrp FROM my_products"; 
$b2bprice = mysql_query($pricequery); 
$rrps = mysql_fetch_array($b2bprice); 
$price = $rrps['rrp']; 
$styledprice = number_format($price, 2, '.', ''); 

$query = mysql_query(" 
SELECT 
CONCAT(' <td> ',p.id,' </td><td> ',p.manufacturer,' </td><td> ',p.reference,' </td><td> ',p.name,' </td><td> ',p.quantity,' <td> ','".$styledprice."',' </td> ') AS row 
FROM my_products p 
"); 

echo " 
<table> 
    <tr> 
     <td><h5>ID</h5></td> 
     <td><h5>Manufacturer</h5></td> 
     <td><h5>PN</h5></td> 
     <td><h5>Name</h5></td> 
     <td><h5>Quantity</h5></td> 
     <td><h5>Price</h5></td> 
    </tr>"; 

while($row=mysql_fetch_array($query)) 
    { 
     echo "<tr>".$row['row']."</tr>"; 
    } 

echo " 
</table>"; 

是的,我知道mysql_功能被棄用。

+1

這不是經常可以看到HTML混合進入SQL語句本身 – RamRaider

+1

我很驚訝地看到這樣的查詢中包含在html標記中。 –

+0

@RamRaider,但它的工作原理;) – PipBoy2000

回答

2

像這樣的東西應該會更好。 它分離數據庫的結果集和通過HTML輸出。

// Get the Result Set 
$result = mysql_query("SELECT p.id, p.manufacturer, p.reference, p.name, p.quantity FROM my_products p"); 

// Convert the rows and columns from the Result Set to a PHP Array 
$data = array(); // empty array 
while ($row = mysql_fetch_assoc($result)) { 
    $data[] = $row; 
} 

// Now you have access any row or column 
echo "<table>"; 
foreach($data as $row){ 

    // prepare the data 
    $formatttedQuantity = number_format($row['quantity'], 2, '.', ''); 

    // show each Table Row 

    echo "<tr>"; 
    echo "<td>" . $row['id'] . "</td>"; 
    echo "<td>" . $row['manufacturer'] . "</td>"; 
    echo "<td>" . $row['reference'] . "</td>"; 
    echo "<td>" . $row['name'] . "</td>"; 
    echo "<td>" . $formatttedQuantity . "</td>"; 
    echo "</tr>"; 
} 
echo "</table>"; 
+0

感謝您的努力@ Cagy79!我會在幾分鐘之內檢查它! – PipBoy2000

+1

頂尖!這正是我需要的,在這個我可以做出很多靈活的修改! +1和答案 – PipBoy2000

1

看起來你可以做到這一切在一個SQL命令,如:

<?php 

    $sql = "SELECT * FROM my_products"; 
    $result = mysql_query($sql); 

    echo " 
    <table> 
     <tr> 
      <td><h5>ID</h5></td> 
      <td><h5>Manufacturer</h5></td> 
      <td><h5>PN</h5></td> 
      <td><h5>Name</h5></td> 
      <td><h5>Quantity</h5></td> 
      <td><h5>Price</h5></td> 
     </tr>"; 

    while($row=mysql_fetch_array($result)){ 

     $price=$row['rrp']; 
     $styledprice = number_format($price, 2, '.', ''); 

     echo " 
      <tr> 
       <td>{$row['id']}</td> 
       <td>{$row['manufacturer']}</td> 
       <td>{$row['reference']}</td> 
       <td>{$row['name']}</td> 
       <td>{$row['quantity']}</td> 
       <td>{$styledprice}</td> 
      </tr>"; 
    } 

    echo " 
    </table>"; 

?> 
+0

謝謝@RamRaider!看起來很簡單!我會查一下! :) – PipBoy2000

相關問題