Не сохранять пустые строки
У меня есть таблица, которая содержит список всех продуктов, и перед каждым из них есть поле "число", в котором пользователь введет количество, а затем нажмите "Сохранить".
Этот код сохраняет все строки в базе данных, используя 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]))