不要保存空行

时间:2014-04-16 14:41:01

标签: php oop multiple-insert

我有一个包含所有产品列表的表格,在每个产品之前都有一个字段" number"用户将在其中输入数量,然后单击“保存”。

此代码使用mutiple-insert保存数据库中的所有行但我想如果quantite为null或为空,那么不要保存此行,我只想保存

$managerAchat = new AchatManager($db);


if(isset($_POST['ajouter']))
{

$size = count($_POST['quantite']);

$i = 0;
while ($i < $size) 
{
if(isset($_POST['quantite'][$i]))
    {

      $nomProd = $_POST['nomProd'][$i] ;
      $prixProd = $_POST['prixProd'][$i] ;
      $quantite = $_POST['quantite'][$i] ;
      $date = date('d/m/Y');

      $AchatObject = new Achat(array(
      'nomProd' => $nomProd ,
      'prixProd' => $prixProd ,
      'quantite' => $quantite ,
      'date' => $date ,
            )) ;

      $managerAchat->insert($AchatObject);

      ++$i;
    }


}       


}

2 个答案:

答案 0 :(得分:2)

看来你只需要改变:

if(isset($_POST['quantite'][$i]))

为:

if(isset($_POST['quantite'][$i]) && $_POST['quantite'][$i] > 0)

您还可以使用例如array_filter()仅循环设置金额的键:

if(isset($_POST['ajouter']))
{
  $has_amounts = array_filter($_POST['quantite']);
  foreach (array_keys($has_amounts) as $key)
  {
    $nomProd = $_POST['nomProd'][$key];
    // etc.

答案 1 :(得分:0)

我不是100%确定这是正确的,因为你的问题和代码不清楚。但是,您可以检查$_POST['quantite'][$i]是否为空(零和null都将被视为空)并跳过它们,如果它们是:

if(isset($_POST['quantite'][$i]) && !empty($_POST['quantite'][$i]))