我使用Array发布了产品信息组。有些时候已插入空行。如何删除它。
客户端代码:
<?php for($i=1; $i<6; $i++) { ?>
<input type="text" name="product[]" id="product{{$i}}">
<input type="text" name="qty[]" id="qty{{$i}}">
<input type="text" name="rate[]" id="rate{{$i}}">
<input type="text" name="amount[]" id="amount{{$i}}">
<?php } ?>
服务器端代码:
$product=implode('#@$',$_POST["product"]);
$qty=implode('#@$',$_POST["qty"]);
$rate=implode('#@$',$_POST["rate"]);
$amts=implode('#@$',$_POST["amount"]);
$insertqry=mysql_query("insert into invoice (prodt,qty,rates,amts) values('$product','$qty','$rate','$amts')");
答案 0 :(得分:0)
根据您将行定义为空的方式,如果空产品名称为空行, 那么
添加条件if ($product == '') continue;
之前
$insertqry=mysql_query("insert into invoice (prodt,qty,rates,amts) values('$product','$qty','$rate','$amts')");
到代码的服务器端。因此,它将跳过没有名称的产品。
如果这不是您想要的,请告诉我,我将再次编辑我的代码,谢谢。
答案 1 :(得分:0)
您应该检查$ _POST值,然后使用array_filter
$product = implode('#@$', array_filter($_POST["product"], function($var) {
return isset($var)
}));
此外,您应该解析多维数组中的值
$datas = [];
foreach ($_POST['product'] as $index => $product) {
$product = isset($product) ? $product : null;
$qty= isset($_POST['qty'][$index]) ? $_POST['qty'][$index] : null;
$rate= isset($_POST['rate'][$index]) ? $_POST['rate'][$index] : null;
$amount= isset($_POST['amount'][$index]) ? $_POST['amount'][$index] : null;
if ($product && $qty && $rate && $amts) {
$data[] = [
'product' => $product,
'qty' => $qty,
'rate' => $rate,
'amount' => $amount
];
}
}
现在你可以做这样的事情
<?php foreach ($datas as $data) { ?>
<input type="text" name="product[]" id="product{{$data['product']}}">
<input type="text" name="qty[]" id="qty{{$data['qty']}}">
<input type="text" name="rate[]" id="rate{{$data['rate']}}">
<input type="text" name="amount[]" id="amount{{$data['amount']}}">
<?php } ?>