2013-05-29 61 views
0

我有試圖遍歷在查詢返回的結果量的問題,我有一個數據庫表叫Cart具有以下字段:遍歷數據庫表中的值

ItemCode//Unique Code of Item

ItemDesc//Description/Name ofItem

ItemUnitPrice//Unit Price for Item

ItemCategory//Category of Item e.g. Books, CD, DVD etc...

數量//Quantity of Item(s) in cart

我要循環(在Cart表,簡單的打印所有數據)顯示在我的display.php的所有記錄,然後乘以ItemUnitPriceQuantity,並將其存儲在一個變量中,以存儲display.php中包含的所有內容的總價格。

我想是這樣的:

LOOP 
$Total= $ItemUnitPrice * $Quantity; 
END LOOP 

我使用的MySQL,我也不太清楚我應該如何循環得到總的爲每一個項目。

所以簡而言之,我想爲數據庫表中的每個項目找到總數(ItemUnitPrice * Quantity)並將其存儲在一個變量中。

編輯:

$query="SELECT * FROM Cart"; 
$result=mysql_query($query); 
$num=mysql_num_rows($result); 


$cartTotalPrice = 0; 

while($row = mysql_fetch_assoc($result)) 
{ 
$cartTotalPrice += ($row['itemUnitPrice']*$row['Quantity']); 

} 
$_SESSION['totalCost'] = $cartTotalPrice; 
mysql_close(); 
session_start(); 
echo "<b><center> Islamic Book Store - Your Shopping Cart </b><br/><br/>"; 

$i=0; 

echo "<table border=1><tr><th>Item Code</th><th>Item Desc,</th>"; 
echo "<th> Item Unit Price</th><th>Item Category</th><th>Quantity</th><th>Image</th> <th>Update Quantity</th></tr>"; 

while ($i < $num) 

{ 

$ItemCode = mysql_result($result,$i,"ItemCode"); 
$ItemDesc = mysql_result($result,$i,"ItemDesc"); 
$ItemUnitPrice = mysql_result($result,$i,"ItemUnitPrice"); 
$ItemCategory = mysql_result($result,$i,"ItemCategory"); 
$Quantity = mysql_result($result,$i,"Quantity"); 


echo "<tr><td align=center>$ItemCode</td><td align=center>$ItemDesc</td>"; 
echo "<td align=center>£$ItemUnitPrice</td>"; 
echo "<td align=center>$ItemCategory</td><td align=center>$Quantity</td>"; 

$i++; 

} 



echo "</table><center>"; 
echo "$num Item(s) found."; 

echo "<br/><br/><center><form action = 'clear.php'><input type='submit' value='Clear'> </form></center>"; 



?> 



<html> 
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_BLANK"> 
<input type="hidden" name="cmd" value="_xclick" /> 
<input type="hidden" name="business" value="[email protected]" /> 
<input type="hidden" name="item_name" value="<? echo $ItemDesc ?>" /> 
<input type="hidden" name="item_number" value="TEST ITEM NUMBER" /> 
<input type="hidden" name="amount" value="<? echo $cartTotalPrice ?>" /> 
<input type="hidden" name="currency_code" value="GBP" /> 
<input type="hidden" name="lc" value="GB" /> 
<input type="hidden" name="bn" value="PP-BuyNowBF" /> 
<input src="paypal/purchase.png" name="Submit" type="image" value="purchase" alt="Purchase" /> 
</form> 
</html> 
+0

你需要'ItemUnitPrice * Quantity'' –

+0

代碼中表 –

+0

中所有行的總和,在'$ _SESSION ['totalCost'] = ...之前放置'session_start()',並且在您的輸入值中使用'$ _SESSION ['totalCost']'if all代碼是在同一個文件中,你不必使用Session它應該以它的方式工作,除非有查詢結果問題嘗試'var_dump($ result);'來查看結果。 –

回答

1

首先,擺脫使用mysql_*功能的習慣!使用PDOmysqli

Why shouldn't I use mysql_* functions in PHP?

http://php.net/pdo

其次,我很傷心地告訴你,你的代碼是完全錯誤的!

session_start(); 

$query = "SELECT * FROM Cart"; 
$result = mysql_query($query); 
$num = mysql_num_rows($result); 

$cartTotalPrice = 0; 

while($row = mysql_fetch_assoc($result)) 
{ 
    $cartTotalPrice += ($row['itemUnitPrice']*$row['Quantity']); 

    echo "<tr><td align=center>{$row['itemCode']}</td><td align=center>{$row['ItemDesc']}</td>"; 
    echo "<td align=center>{$row['ItemUnitPrice']}</td>"; 
    echo "<td align=center>{$row['$ItemCategory']}</td><td align=center>{$row['$Quantity']}</td></tr>"; 
} 

$_SESSION['totalCost'] = $cartTotalPrice; 

// $_SESSION['totalCost'] is now available on every page (as long as you use start_session() before any output) 

mysql_close(); 
+0

嘿,謝謝你的補充,但我展示的PHP代碼並不是試圖去做我所要求的簡單的設置表中每個字段的變量,所以我可以稍後使用它們來顯示它。所以我的代碼並不完全錯誤,你只是把它誤認爲是別的東西 –

+0

當然可以。如果你的代碼在函數IE:'function someFunction(){/ *上面的代碼* /}'內,那麼'$ cartTotalPrice'值只在該函數中可用。但是,您可能希望將其存儲在會話對象中。我會更新我的答案和如何做到這一點。總之,是的。 –

+0

它仍然返回0作爲'$ _SESSION ['totalCost'] = $ cartTotalPrice;'正在拾取'$ cartTotalPrice'外循環首先初始化爲0,所以它給我回0的結果。 –

0

嘗試下面的代碼,我希望它的作品,我做了更正,並在評論中提到他們:按行或所有行的總和

$query="SELECT * FROM Cart"; 
$result=mysql_query($query); 
$num=mysql_num_rows($result); 


$cartTotalPrice = 0; 

while($row = mysql_fetch_assoc($result)) 
{ 
$cartTotalPrice += ($row['itemUnitPrice']*$row['Quantity']); 

} 


session_start(); 
$_SESSION['totalCost'] = $cartTotalPrice; 
    // mysql_close(); // here you are closing your mysql connection before using mysql_result refer to the example in http://php.net/manual/en/function.mysql-result.php 
    // session_start(); // session start should go above you dont need session if the whole script is in the same page. no need to save the variable to session 
echo "<b><center> Islamic Book Store - Your Shopping Cart </b><br/><br/>"; 

$i=0; 

echo "<table border=1><tr><th>Item Code</th><th>Item Desc,</th>"; 
echo "<th> Item Unit Price</th><th>Item Category</th><th>Quantity</th><th>Image</th> <th>Update Quantity</th></tr>"; 

while ($i < $num) 

{ 

$ItemCode = mysql_result($result,$i,"ItemCode"); 
$ItemDesc = mysql_result($result,$i,"ItemDesc"); 
$ItemUnitPrice = mysql_result($result,$i,"ItemUnitPrice"); 
$ItemCategory = mysql_result($result,$i,"ItemCategory"); 
$Quantity = mysql_result($result,$i,"Quantity"); 


echo "<tr><td align=center>$ItemCode</td><td align=center>$ItemDesc</td>"; 
echo "<td align=center>£$ItemUnitPrice</td>"; 
echo "<td align=center>$ItemCategory</td><td align=center>$Quantity</td>"; 

$i++; 

} 



echo "</table><center>"; 
echo "$num Item(s) found."; 

echo "<br/><br/><center><form action = 'clear.php'><input type='submit' value='Clear'> </form></center>"; 


mysql_close(); 
?> 



<html> 
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_BLANK"> 
<input type="hidden" name="cmd" value="_xclick" /> 
<input type="hidden" name="business" value="[email protected]" /> 
<input type="hidden" name="item_name" value="<? echo $ItemDesc ?>" /> 
<input type="hidden" name="item_number" value="TEST ITEM NUMBER" /> 
<input type="hidden" name="amount" value="<? echo $cartTotalPrice ?>" /> 
<input type="hidden" name="currency_code" value="GBP" /> 
<input type="hidden" name="lc" value="GB" /> 
<input type="hidden" name="bn" value="PP-BuyNowBF" /> 
<input src="paypal/purchase.png" name="Submit" type="image" value="purchase" alt="Purchase" /> 
</form> 
</html>