2

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

此代码使用多重插入将所有行保存在数据库中,但我希望如果 quantite 为空或为空,则不要保存此行,我只想保存

$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;
    }


}       


}
4

2 回答 2

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.
于 2014-04-16T14:42:24.560 回答
0

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

if(isset($_POST['quantite'][$i]) && !empty($_POST['quantite'][$i]))
于 2014-04-16T14:42:40.443 回答