2

すべての製品のリストを含むテーブルがあり、各製品の前に、ユーザーが数量を入力して保存をクリックするフィールド「番号」があります。

このコードは、複数挿入を使用してデータベース内のすべての行を保存しますが、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;
    }


}       


}
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 に答える