我有一个包含所有产品列表的表格,在每个产品之前都有一个字段" 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;
}
}
}
答案 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]))