Это мой фрагмент кода:
<?php
if ($result->num_rows > 0) {
$total = 0; // used for displaying the total price at the bottom
$_SESSION['foodname'] = array();
while ($row = $result->fetch_assoc()) {
?>
<tbody>
<tr>
<td data-th = "Product">
<div class = "row">
<div class = "col-sm-2 hidden-xs"><br><img src = "../images/food/<?php
echo $row['food_img'];
?>" alt = "" class = "img-responsive" width = "100%"/></div>
<div class = "col-sm-10">
<h4 style = "margin-left:20px;"><br><?php
echo $row['food_name'];
?></h4>
</div>
</div>
</td>
<td data-th = "Price"><br>Rs. <?php
$price = $row['price'];
echo $price;
?></td>
<form action = "" method = "POST">
<td data-th = "Quantity"><br>
<input type = "number" name = "quantity" class = "form-control text-center" value = "<?php
$fquantity = $row['food_quantity'];
echo $fquantity;
?>" min = "1" max = "<?php
echo $row['quantity'];
?>">
</td>
<td data-th = "Subtotal" class = "text-center"><?php
$sub_total = ($price * $fquantity);
echo '<br>$ ' . $sub_total;
$total = $total + $sub_total;
?>
</td>
<td class = "actions">
<br><input type = "submit" class = "btn btn-info btn-sm" value = "Update Quantity" name = "update">
<a class = "btn btn-danger btn-sm" href = "../CRUD/delete.php?id=<?php
echo $row['food_id'];
?>&q=<?php
echo $fquantity;
?>">Remove Item</a>
</td>
</form>
</tr>
</tbody>
<?php
$_SESSION['foodname'] = array(
"name" => $row['food_name'],
"price" => $row['price']
);
}
print_r($_SESSION['foodname']); // PRINTING ONLY LAST VALUE
}
?>
Как вы можете ясно видеть, следующая строка кода написана внутри цикла while, однако я могу видеть только подробности о последнем элементе данных.
$_SESSION['foodname'] = array("name" => $row['food_name'], "price" => $row['price']);
Есть ли что-то, что я делаю в корне неправильно?






Проблема заключается в том, как вы устанавливаете $_SESSION внутри цикла. Вы переопределяете каждый раз, когда выполняется цикл. Сделайте их массивом, и это должно сработать:
//-------------------▾▾
$_SESSION['foodname'][] = array(
"name" => $row['food_name'],
"price" => $row['price']
);
Обратите внимание на [] после $_SESSION['foodname'].
Измените эту часть кода
<?php
$_SESSION['foodname'] = array(
"name" => $row['food_name'],
"price" => $row['price']
);
}
print_r($_SESSION['foodname']); // PRINTING ONLY LAST VALUE
}
?>
с этим
<?php
$food = array(
"name" => $row['food_name'],
"price" => $row['price']
);
array_push($_SESSION['foodname'],$food);
}
print_r($_SESSION['foodname']); // PRINTING ONLY LAST VALUE
}
?>