Проблема PHP с вставкой в ​​базу данных в цикле while - PullRequest
0 голосов
/ 28 ноября 2018

Я пытаюсь написать сайт для библиотеки в качестве упражнения.У меня есть цикл while для отображения всех книг в моей базе данных.Если пользователь вошел в систему и состояние (stan) книги (ksiazka) свободно (Wolny), это показывает кнопку под книгой.После щелчка он переносит все бесплатные книги в базу данных и обновляет их статус как нанятый, а не только тот, который хочет пользователь.Вот код, спасибо.

$findbook2 ="select ksiazka.id_ksiazka, ksiazka.tytul, ksiazka.id_stan, autor.id_autor, autor.imie_autor, ksiazka.rok_wydania, autor.nazwisko_autor, stan.id_stan, stan.nazwa_stan FROM ((ksiazka inner join autor ON ksiazka.id_autor = autor.id_autor) inner join stan ON ksiazka.id_stan = stan.id_stan);";

$stan = mysqli_query($connect, $findbook2);


while($row = mysqli_fetch_array($stan))
{
    echo "Tytuł:" . " " .$row['tytul']." ". "Autor:" . " " . $row['imie_autor']." ". $row['nazwisko_autor']. " ". "Rok wydania" . " ". $row['rok_wydania'] . " ". "Stan ". $row['nazwa_stan']. " ";
    if(isset($_SESSION['id_czytelnik'])){

        if($row['nazwa_stan']=='Wolny'){

            echo '<form method = "GET" action = "ksiazki.php">';
            echo '<input type = "submit" name = "submit" value = "Wypożycz"/>';
            echo '</form>';                                             

            if(isset($_REQUEST['submit'])){
                $id_czytelnik = $_SESSION['id_czytelnik'];
                $id_ksiazka = $row['id_ksiazka'];
                $data_oddania = date('Y-m-d', strtotime('+30 days'));
                $wstaw_ksiazke = "INSERT INTO `wypozyczenie`(`id_wypozyczenie`, `id_czytelnik`, `id_ksiazka`, `id_pracownik`, `data_wypozyczenia`, `data_oddania`) VALUES ('','$id_czytelnik','$id_ksiazka',2,NOW(),'$data_oddania')";

                if(mysqli_query($connect, $wstaw_ksiazke)){
                    $update = "Update ksiazka set id_stan = 3 where id_ksiazka = '$id_ksiazka'";
                    if(mysqli_query($connect, $update)){
                        echo "Wypozyczyłeś książkę";
                    }

                }
            }
        }

    }

    echo "</br>";
}

1 Ответ

0 голосов
/ 28 ноября 2018

Рассмотрим оператор if(isset($_REQUEST['submit'])), который всегда верен в вашем цикле while после нажатия кнопки submit, так как он все равно не сброшен. Он вызывает повторное выполнение оператора, пока массив не пуст.

...