转发:
我已经查看了Stack Overflow上措辞相似的问题,但没有一个是我所尝试的。
我所拥有的:
我有会话数据、两个循环和一个SQL表。
- 第一个循环检查特定的现有会话数据,并使用该数据的键(而不是值(来确定哪些id应该从表中选择(SQL(
- 第二个循环逐行输出SQL结果
。。。这也可以用一种不那么抽象、更友好的方式来描述:
- 第一个循环查找当前添加到购物车中的商品(键=产品id,值=数量(以确定哪些产品应在"您的订单"页面上列出
- 第二个循环列出了与每个产品id相关联的数据行如标题、说明和单位成本
我需要什么:
由于我的会话数据由产品ID(键(和相应的数量(值(组成,我需要将数量显示为每个输出行的一部分。
id | title | description | unit cost | amount | subtotal
session data key | from database | from database | from database | session data value | basic PHP math
(also in database) (unit cost * amount)
我的代码:
使用会话数据密钥查询所需产品的第一个循环:
$id_from_session = "WHERE id = '9999999999'"; //fix due to not being sure how to simuataneously incorporate "WHERE" and "OR" into query loop (only looping the "OR" condition).
foreach($_SESSION['post'] as $key=>$value)
{
$id_from_session .= "OR id ='".$key."'";
}
第二个循环输出查询的结果行:
foreach ( $yourorders as $yourorder )
{
?>
<?php echo $yourorder->title; ?></br>
<?php echo $yourorder->description; ?></br>
<?php echo $yourorder->value; ?></br>
<?php /* I NEED THE QUANTITY HERE */ ?></br>
<?php /* VALUE * QUANTITY HERE */ ?></br>
<?php
}
<?php /* OVERALL TOTAL OUTSIDE OF LOOP */ ?></br>
我的问题:
如何将会话数据循环中的数量(以及数量*单位值(合并到SQL结果循环中?
$_SESSION['post'][$yourorder->id]
应该把数量给你吗?所以,
<?php echo $_SESSION['post'][$yourorder->id]; ?>
或者是否允许短标签
<?= $_SESSION['post'][$yourorder->id]; ?>
还有一种构建WHERE字符串的更好方法。
$where = array();
foreach($_SESSION['post'] as $key=>$value)
{
$where[] = "id ='".$key."'";
}
$id_from_session = "WHERE " . implode(' OR ', $where);
$_SESSION['post'][$yourorder->id]会给你数量,因为密钥是产品id:(
嗯。。如果你能绝对确定你的购物车钥匙不需要逃跑,你可以写下:
$id_from_session = "WHERE id IN ('" . implode( "', '", array_keys($_SESSION['post']) ) . "')";