Не сохранять пустые строки

У меня есть таблица, которая содержит список всех продуктов, и перед каждым из них есть поле "число", в котором пользователь введет количество, а затем нажмите "Сохранить".

Этот код сохраняет все строки в базе данных, используя mutiple-insert, но я хочу, чтобы, если 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;
    }


}       


}

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.

Я не на 100% уверен, что это правильно, так как ваш вопрос и код не ясны. Но вы можете проверить, если $_POST['quantite'][$i] пусто (ноль и ноль оба будут считаться пустыми) и пропустить их, если они:

if(isset($_POST['quantite'][$i]) && !empty($_POST['quantite'][$i]))
Другие вопросы по тегам