如何将foreach循环与while循环合并以构建html表?

时间:2017-06-21 02:29:47

标签: php sql foreach

我有两个数组$ _SESSION [' fff']有数量,另一个是$ result,它是从mysql数据库中提取的,包括产品名称,价格和重量,我需要建立一个表,其中包含数据库中的数据和会话变量数组中包含的数量

$wherein = implode(",", $_SESSION['cart']);
$sql = "select id, item_name, Price, Weight from items where id IN 
($wherein)";
$result= mysqli_query($conn, $sql);
echo "<table style='width:100%' border='1' >";
echo "<tr>";
    echo "<th> Product Name</th>";
    echo "<th>Product Price </th>" ;
    echo "<th>Weight </th>" ;
    echo "<th>Quantity </th>" ;


    echo "</tr>";
 $sum = '';
 $s= '';
while (($row = mysqli_fetch_array($result, MYSQLI_ASSOC))) && 
foreach($_SESSION['fff'] as $value){
$sum += $row['Price'];
$s += $row['Weight']; 

echo "<tr>";
    echo "<td>" . $row['item_name'] . "</td>";
    echo "<td> $". $row['Price'] . "</td>" ;






    echo "<td>". $row['Weight'] ; 









    echo "<td>".$value."</td>";




    }

我已经尝试了几个小时,现在在网上搜索并尝试不同的方法,但无法找到解决方案。谢谢。

2 个答案:

答案 0 :(得分:0)

将会话值分配给变量,如

$session_var = $_SESSION['fff'];

不要使用foreach() 声明变量

$i=0; 
while(($row = mysqli_fetch_array($result, MYSQLI_ASSOC)))
{
$sum += $row['Price'];
$s += $row['Weight']; 
echo "<tr>";
    echo "<td>" . $row['item_name'] . "</td>";
    echo "<td> $". $row['Price'] . "</td>" ;
    echo "<td>". $row['Weight'] ; 
    echo "<td>".$session_var[$i]."</td>";
    $i++;
}

答案 1 :(得分:0)

你可以这样做:

for($i = 0; $row = mysqli_fetch_array($result, MYSQLI_ASSOC); $i++) {
    // access rows using $row
    // access corresponding session data using $_SESSION['fff'][$i]
}

如果$ _SESSION [&#39; fff&#39;]中的数组键不是数字,请在循环前添加以下内容:

$session = array_values($_SESSION['fff']);

然后在循环中使用$session[$i]访问值。