gpt4 book ai didi

php - Explode 正在删除字符串中的最后一个字符

转载 作者:行者123 更新时间:2023-11-30 22:46:36 29 4
gpt4 key购买 nike

我正在制作一个电子商务网站。我在测试时遇到了以下问题:

  1. 从管理面板更新订单状态(处理中、发货、已完成和已取消)不适用于 1 种产品。
  2. 当从数据库中检索值时,Explode 会删除最后一个字符。
  3. 如果订单中有超过 1 件产品,订单状态完全正常,但第 2 点保持不变。

例如:假设在我的order (ORD-00001)中,

我只有 1 个产品 (ABC-000001)。因此,在展开时,我得到的值为 (ABC-00000)。

在我的下一个订单 (ORD-00002)

我有 2 个产品(ABC-000001PQR-00005)。因此,在展开时,我得到的值为 (ABC-000001, PQR-0000)。

在第二个订单中,订单状态完全正常。但在第一个顺序中,它根本不起作用。

这是 php 按钮的点击事件:

<?php

if (isset($_POST["btnUpdateOrderStatus"])) {

$qu = "SELECT * FROM orders WHERE OrderCode = '".$_GET["ord"]."'";
$result = $validate->Query($qu);
if (!$result) {
echo $validate->Error();
exit();
}
while ($rowp = $validate->FetchAllDatas()) {
$p = explode(', ', $rowp["ProdCode"]);

foreach ($_POST["updateOrderPerProductStatus"] as $key => $value) {
//echo $key;
for ($i=0; $i < count($p); $i++) {
if( $p[$i] == $key) {
$querToUpdateOrderStatus = "UPDATE orders SET OrderStatus = '".implode(', ',$_POST["updateOrderPerProductStatus"])."' WHERE OrderCode = '".$_GET["ord"]."' ";

if ($validate->Query($querToUpdateOrderStatus)) {
header("Location: http://www.example.com/nbs/Administrators/Orders/Update.php?ord=".$_SESSION["ord"]."&id=".$_SESSION["id"]);
exit();
} else {
echo $validate->Error();
exit();
}
}
}
}
}
}

?>

这是我使用的代码:

<?php
$query = "SELECT o.*, com.* FROM orders o, commission com WHERE o.OrderCode = '".$ord."'";

$validate->Query($query);

if ($validate->NumRows() >= 1) {
while ($row = $validate->FetchAllDatas()) {

$products = explode(',', $row['ProdCode']); // <-- error line
$qnty = explode(', ', $row['Quantity']);
$orderStats = explode(', ', $row["OrderStatus"]);
$productsWithQunty = array_combine($products, $qnty);

echo '
<tr>
<td style="width: 50%">Order Code: </td>
<td style="width: 50%">'.$row["OrderCode"].'</td>
</tr>
<tr>
<td style="width: 50%">Order Date: </td>
<td style="width: 50%">'.$row["OrderDate"].'</td>
</tr>
<tr>
<td style="width: 50%">Order Status: </td>
<td style="width: 50%">'.$row["OrderStatus"].'</td>
</tr>
<tr>
<td style="width: 50%">Order Modified: </td>
<td style="width: 50%">'.$row["OrderModified"].'</td>
</tr>
<tr>
<td style="width: 50%">Order Payable: </td>
<td style="width: 50%">'.number_format($row["PayableAmount"], 2).'</td>
</tr>
<tr>
<td style="width: 50%">Products: </td>
<td style="width: 50%">';
foreach ($productsWithQunty as $key => $value) {
echo $key . ":" . $value;
}
echo '</td>
</tr>';
$arrProductStatus = array_combine($products, $orderStats);
?>
<form action="Update.php?ord=<?php echo $ord; ?>" method="POST">
<?php
foreach ($arrProductStatus as $key => $value) {
echo '
<tr>
<td style="width: 50%">'.$key.'</td>
<td style="width: 50%">
<select name="updateOrderPerProductStatus['.$key.']">
<option value="'.$value.'">'.$value.' -- selected</option>
<option value="In Process">In Process</option>
<option value="Cancelled">Cancelled</option>
<option value="Completed">Completed</option>
<option value="Shipping">Shipping</option>
</select>
</td>
</tr>';
}
?>
<tr>
<td colspan="2">
<input type="submit" name="btnUpdateOrderStatus" class="btn btn-primary btn-block" value="Submit">
</td>
</tr>
</form>
<?php
}
}
?>

编辑 1:

产品数组:对于订单 (ORD-00001)

Array
(
[0] => ABC-000001
)

对于订单(ORD-00002)

Array
(
[0] => ABC-000001
[1] => PQR-00005
)

编辑 2:

在 RickJames 评论之后,这是我从实际数据库中得到的。

代码:

echo $row["ProdCode"];
$products = explode(', ', $row['ProdCode']);
print_r($products);

以上代码的结果:

DC-0001-0002, PK-0002-000 // The actual product code coming from DB

Array ( [0] => DC-0001-0002 [1] => PK-0002-000 )

在数据库中我有:

OrderCode    CustomerId    ProductCode
ORD-000002 1 DC-0001-0002, PK-0002-0004

请帮帮我。提前谢谢你。

最佳答案

$products = explode(',', $row['ProdCode']); // <-- error line

在 (,) 针后使用空格。

$products = explode(', ', $row['ProdCode']);

使用此代码

关于php - Explode 正在删除字符串中的最后一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29443567/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com