Хранение нескольких строк из php в sql

Когда я отправляю сообщение с php для сохранения входных значений в отдельных строках, я заканчиваю тем, что в таблице ma всегда хранятся лишние пустые строки. Например, это форма, из которой я отправляю сообщение для сохранения значений:

<table class = "table table-bordered" id = "data">
                <tr>
                    <th width = "40%">Knjiga</th>
                    <th width = "40%">Pisac</th>
                    <th width = "5%">Radnja</th>
                </tr>
            <?php
            if (isset($_COOKIE["spisak_knjiga"]))
            {
                $cookie_data = stripslashes($_COOKIE['spisak_knjiga']);
                $knjiga_podaci = json_decode($cookie_data, true);
                foreach($knjiga_podaci as $keys => $values)
                {
                    $skola= $values["skola"];
                    $inv_id= $values["inv_id"];
                    $sql = "SELECT knjige.id_knjige, knjige.naziv_knjige, knjige.pisac, knjige.mjesto_izdanja, knjige.godina_izdanja, knjige.signatura, knjige.inv_broj,knjige.kategorija, knjige_kategorija.naziv_kategorije, skole.ime_skole FROM knjige INNER JOIN skole ON knjige.skola = skole.id_skole INNER JOIN knjige_kategorija ON knjige.kategorija = knjige_kategorija.id_kat WHERE id_skole ='$skola' AND inv_broj = '$inv_id'";
                    mysqli_query($db, $sql);
                    foreach ($db->query($sql) as $row){

                        $idKnjige =  $row['id_knjige'];

            ?>
                <tr>
                <td><?php echo $row['naziv_knjige'] ?></td>
                <td><?php echo $row['pisac'] ?></td>
                </tr>
                <tr>
                <input type = "hidden" name = "ucenik[]" value = "<?php echo $idUcenika; ?>">
                <input type = "hidden" name = "knjiga[]" value = "<?php echo $idKnjige; ?>">
                <input type = "hidden" name = "skola[]" value = "<?php echo $skola; ?>">
                </tr>
            <?php   
            }               
            }
            $broj = mysqli_num_rows(mysqli_query($db, $sql));

             $db->close(); 
            ?>
            <?php } 

            } ?>
            </table>
            <input type = "submit" name = "zaduziUcenika" class = "btn btn-primary btn-lg btn-block" value = "Save orders">
                </form>

И здесь я получаю данные и вставляю в БД, он вставляет все товары, которые были в порядке, но также сохраняет лишние пустые строки.

if (isset($_POST['zaduziUcenika'])) {

        $i = 0;
        foreach ($_POST as $val) {
            $idUcenika = $_POST['ucenik'][$i];
            $idKnjige = $_POST['knjiga'][$i];
            $idSkole = $_POST["skola"][$i];

            $sql = "INSERT INTO izdane_knjige (knjiga, ucenik, skola, datum_podizanja, stanje) VALUES ('$idKnjige', '$idUcenika', '$idSkole', CURRENT_DATE(), 0)";
            $u = mysqli_query($db, $sql);
            $i++;
          }
          if ($u)
                            {
                                header("Location: izdaj2.php?action=spremljeno&id=$idUcenika");
                                exit();

                            }  
        }
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
14
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Поскольку в вашем массиве $_POST есть значения, отличные от тех, которые вы хотите вставить в свою таблицу, вы слишком много раз повторяете цикл foreach. Измените цикл, чтобы перебирать одно из значений, у вас есть несколько копий, например, ucenik:

foreach ($_POST['ucenik'] as $i => $val) {
    $idUcenika = $_POST['ucenik'][$i];
    $idKnjige = $_POST['knjiga'][$i];
    $idSkole = $_POST["skola"][$i];

Обратите внимание, что вам нужно будет удалить строки $i = 0; и $i++; из вашего кода.

Вот и все. Большое спасибо Ник

Adel 18.03.2019 23:02

@AdelEskić, не беспокойся. Рад, что смог помочь.

Nick 18.03.2019 23:04

Другие вопросы по теме