我正在製作電子商務網站。我遇到以下在測試期間遇到的問題:爆炸正在刪除字符串中的最後一個字符
- 從管理面板更新訂單狀態(處理中,送貨,完成和取消)不適用於1件產品。
- 從數據庫中檢索值時,Explode正在刪除最後一個字符。
- 如果訂單中有多個產品,訂單狀態完全正常,但點2保持不變。
因此,例如:可以說,在我的order (ORD-00001)
,
我只有1個產品(ABC-000001
)。所以,當爆炸時,我得到的價值爲(ABC-00000
)。
在我的下order (ORD-00002)
我有2個產品(ABC-000001
,PQR-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:
產品陣列: 對於order (ORD-00001)
Array
(
[0] => ABC-000001
)
對於order (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
請幫助我。先謝謝你。
只需指定錯誤在哪一行即可 – 2015-04-04 06:48:21
也可以顯示$ row ['ProdCode'] array – 2015-04-04 06:54:23
我仍然困惑哪一個是$ row ['ProdCode']。請在此處填寫 – 2015-04-04 07:03:33