#javascript #php #angularjs #arrays
#javascript #php #angularjs #массивы
Вопрос:
Итак, у меня есть простой HTML-файл, и это результат:
Код HTML-файла:
<tr ng-repeat="(key, value) in items">
<td ng-bind="key"></td>
<td ng-bind="value"></td>
</tr>
Угловой файл
$scope.viewCart = function() {
$('#cartModal').openModal();
$http.get('../crud/cartCRUD/cart-data.php')
.success(function(data) {
$scope.items = data;
})
}
cart-data.php
print json_encode($_SESSION['cart_items']);
My $_SESSION['cart-items']
— это ассоциативный массив, содержащий key( product id
) => value ( quantity
)
Если вы получите доступ к файлу php напрямую, используя print_r($_SESSION['cart-items'])
, вы получите это:
Array
(
[35] => 23
[10] => 7
)
Это означает, что вывод из моего html-файла правильный.
Теперь то, что я хотел сделать, это вместо того, чтобы показывать ключ и значение в my ng-repeat
, я хочу получить название продукта из базы данных mysql, используя session array key( product id
) .
На данный момент это то, что я сделал
$statement = $conn->query("SELECT * FROM product WHERE id IN (".implode(',',array_keys($_SESSION['cart_items'])).")");
while($row = $statement->fetch()) {
$data[] = $row;
}
print json_encode($data);
и в html-файле:
<table>
<thead>
<tr>
<th>Name</th>
<th>Price</th>
<th>Quantity</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="item in items">
<td ng-bind="item.name"></td>
<td ng-bind="item.price"></td>
<td>HOW TO OUTPUT THE QUANTITY</td>
</tr>
</tbody>
</table>
Это работает, хотя проблема в том, что я больше не могу получить значение пары ключей (количество). Есть ли правильный способ сделать это?
Ответ №1:
Внутри оператора de while вы можете использовать
$row["quantity"] = $_SESSION["cart-items"][$row["id"]];
Комментарии:
1. вы получаете доступ к количеству, используя
item.quantity
?2. Да, и я не получаю никаких данных. В журнале консоли указано, что элементы корзины с неопределенным индексом