2017-05-31 67 views
-3

我使用Array发布了一组产品信息。有些时候空行​​已被插入。如何删除这个。如何从PHP中的多个数组中删除空行元素

enter image description here

客户端代码:

<?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

某些用户未填充该行。如果行空无法插入值@AlivetoDie – Karthik

+1

将所有内容都包含在IF语句中的for循环中? –

回答

0

取决于你如何定义一排是空的,如果空的产品名称是空行, 然后

添加一个condit离子if ($product == '') continue;

之前

$insertqry=mysql_query("insert into invoice (prodt,qty,rates,amts) values('$product','$qty','$rate','$amts')");

到代码的服务器端。因此它会跳过没有名字的产品。

让我知道如果这不是你想要的,我会再次编辑我的代码谢谢。

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 } ?>