Iterate over database table values

做~自己de王妃 提交于 2019-12-13 04:28:42

问题


I have a problem with trying to iterate over the amount of results returned in a query,I have a database table called Cart with the following fields:

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 //Quantity of Item(s) in cart

I want to loop over all the records displayed in my display.php (which simply prints all the data in the Cart table) and then multiply the ItemUnitPrice by the Quantity for every item and store it in a variable to store the total price for everything contained in display.php.

I want something like this:

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

I am using MySQL and I'm not too sure how I should loop to get the total for each and every item.

So in a nutshell I want to find the total (ItemUnitPrice * Quantity) for each and every item in the database table and store it in a variable.

EDIT:

$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@example.com" />
<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>

回答1:


First of all, get out of the habit of using mysql_* functions! Use PDO or mysqli.

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

http://php.net/pdo

Secondly, I'm sad to tell you, your code is completely wrong!

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();



回答2:


Try the below code I hope it works, I made the corrections and mentioned them in comments:

$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="info@asianweddingservices.org" />
<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>


来源:https://stackoverflow.com/questions/16823472/iterate-over-database-table-values

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!