Почему не добавляется значение типа boolean в базу данных?

У меня в базе данных есть столбец top с типом boolean (tinyint(1)). Который может принимать два значения 0 или 1

На странице есть форма для записи данных. В форме есть input type checkbox

<input type="checkbox" name="top" id="top">

Скрипт который отсылает данные формы к обработчику:

$('#user_form').on('submit', function(event) {
                event.preventDefault();
                var link = $('#link').val();
                console.log($('#top').is(":checked"));
                if ($('#top').is(":checked")) {
                    $('#top').val(1);
                }else {
                    $('#top').val(0);
                }
                var extension = $('#user_image').val().split('.').pop().toLowerCase();
                if (extension != '') {
                    if (jQuery.inArray(extension, ['gif', 'png', 'jpg', 'jpeg']) == -1) {
                        alert("Invalid Image File");
                        $('#user_image').val('');
                        return false;
                    }
                }
                if (link != '' && top != '') {
                    $.ajax({
                        url: "include/networks/action.php",
                        method: 'POST',
                        data: new FormData(this),
                        contentType: false,
                        processData: false,
                        success: function(data) {
                            alert(data);
                            $('#user_form')[0].reset();
                            load_data();
                            $("#action").val("Insert");
                            $('#button_action').val("Insert");
                            $('#imagePreview').html('');
                        }
                    });
                } else {
                    alert("Both Fields are Required");
                }
            });


То есть если Input checkbox является cheked то отправляет значение 1, если нет, то значение 0

И обработчик который принимает данные:

if ($_POST["action"] == "Insert") {
        $link = mysqli_real_escape_string($object->connect, $_POST["link"]);
        $top = mysqli_real_escape_string($object->connect, $_POST["top"]);
        $image = $object->upload_file($_FILES["user_image"]);
        $query = "  
           INSERT INTO networks  
           (link, top, image)   
           VALUES ('" . $link . "', '" . $top . "', '" . $image . "')";
        $object->execute_query($query);
        echo 'Data Inserted';
    }


Ошибка заключается в том, что когда input checked = 1, то данные добавляются в базу, а когда input no checked = 0, то данные не добавляются

В чем может быть проблема?
  • Вопрос задан
  • 273 просмотра
Решения вопроса 1
tomgif
@tomgif
Веб-разработчик
По-умолчанию форма не добавляет значение unchecked checkbox-а к запросу, используйте для этого input[type=hidden], как описано в этом вопросе
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы