2016-08-12 100 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