Внутренняя ошибка сервера при вставке в Codeigniter

Я работаю над простым приложением CRUD с использованием Codeigniter, и этот раздел кода работал отлично, пока я не добавил больше функций.

Вот в чем проблема: Я добавлял 3 элемента в базу данных из пользовательских входов, и у меня не было ошибок. Но когда я добавил больше полей ввода, чтобы получить больше входных данных от пользователя, я получил внутреннюю ошибку сервера, когда я нажимаю кнопку «Добавить элемент».

Ниже представлен код просмотра:

<?php
    if ($_SESSION[AppStrings::$NOMENCLATURE] != AppStrings::$SERVICE) {
    if ($_SESSION[AppStrings::$SIZE] != AppStrings::$MICRO) {
?>
        <form data-toggle = "validator" class = "form-horizontal form-material" method = "post" action = "#" onsubmit = "addProduct(); return false;">
            <div class = "form-group m-t-40">
                <div class = "col-xs-12">
                    <div class = "input-group">
                        <div class = "input-group-addon"><i class = "mdi mdi-barcode-scan"></i></div>
                            <input class = "form-control" type = "text" required = "" placeholder = " <?= $nomenclature ?> Code" id = "product_code" required/>
                        </div>
                    </div>
                </div>
                <div class = "form-group m-t-40">
                    <div class = "col-md-6">
                        <input class = "form-control" type = "text" required = "" placeholder = "<?= $nomenclature ?> Name" id = "product_name" required/>
                    </div>
                    <div class = "col-md-6">
                        <div class = "input-group">
                            <div class = "input-group-addon"><i class = "mdi mdi-currency-ngn"></i></div>
                            <input class = "form-control" type = "number" required = "" placeholder = " <?= $nomenclature ?> Cost Price" name = "product_cp" id = "product_cp" required/>
                        </div>
                    </div>
                </div>
                <div class = "form-group m-t-40">
                    <div class = "col-md-6">
                        <div class = "input-group">
                            <div class = "input-group-addon"><i class = "mdi mdi-currency-ngn"></i></div>
                            <input class = "form-control" type = "number" required = "" placeholder = " <?= $nomenclature ?> Selling Price" name = "product_sp" id = "product_sp" required/>
                        </div>
                    </div>
                </div>
                <div class = "form-group m-t-40">
                    <div class = "col-md-6">
                        <textarea class = "form-control" type = "text" required = "" placeholder = " <?= $nomenclature ?> Description" id = "product_des" required/></textarea>
                    </div>
                    <div class = "col-md-6">
                        <input class = "form-control" type = "text" required = "" placeholder = " <?= $nomenclature ?> Expiry Date" id = "product_exp" onfocus = "(this.type = 'date')" onblur = "if (this.value == '') {
                            this.type = 'text'
                        }" required/>
                    </div>
                </div>
                <div class = "form-group m-t-40">
                    <div class = "col-md-6">
                        <div class = "input-group">
                            <div class = "input-group-addon"><i class = "mdi mdi-clipboard-account"></i></div>
                            <select name = "supplier" class = "form-control form-control-line" type = "text" id = "supplier" placeholder = "<?= $nomenclature ?> Supplier"> 
                                <option value = "">Supplier</option>
                                <?php
                                    foreach ($suppliers as $supplier) {
                                ?>
                                        <option value='<?= $supplier[DbStrings::$SUPPLIER_NAME] ?>'><?= $supplier[DbStrings::$SUPPLIER_NAME] ?></option>
                                <?php 
                                    }
                                ?>
                            </select>
                        </div>
                    </div>
                    <div class = "col-md-6">
                        <div class = "input-group">
                            <div class = "input-group-addon"><i class = "mdi mdi-chevron-double-up"></i></div>
                                <select name = "department" class = "form-control form-control-line" type = "text" id = "department" placeholder = "<?= $nomenclature ?> Department"> 
                                    <option value = "">Department</option>
                                    <?php
                                        foreach ($departments as $department) {
                                    ?>
                                            <option value='<?= $department[DbStrings::$DEPARTMENT_NAME] ?>'><?= $department[DbStrings::$DEPARTMENT_NAME] ?></option>
                                    <?php 
                                        }
                                    ?>
                                </select>
                            </div>
                        </div>
                    </div>
                    <div class = "form-group m-t-40">
                        <div class = "col-md-6">
                            <div class = "input-group">
                                <div class = "input-group-addon"><i class = "mdi mdi-chevron-up"></i></div>
                                <select name = "sub_departments" class = "form-control form-control-line" type = "text" id = "sub_department" placeholder = "<?= $nomenclature ?> Department"> 
                                    <option value = "">Sub-Department</option>
                                    <?php
                                        foreach ($sub_departments as $sub_department) {
                                    ?>
                                            <option value='<?= $sub_department[DbStrings::$SUB_DEPARTMENT_NAME] ?>'><?= $sub_department[DbStrings::$SUB_DEPARTMENT_NAME] ?></option>
                                    <?php 
                                        }
                                    ?>
                                </select>
                            </div>
                        </div>
                        <div class = "col-md-6">
                            <div class = "input-group">
                                <div class = "input-group-addon"><i class = "mdi mdi-cash"></i></div>
                                    <input class = "form-control" type = "number" placeholder = " <?= $nomenclature ?> Vat" id = "vat"/>
                            </div>
                        </div>
                    </div>
                    <div class = "form-group text-center m-t-20">
                        <div class = "col-xs-12">
                            <button class = "btn btn-primary btn-login btn-lg btn-block text-uppercase waves-effect waves-light" type = "submit" name = "product-btn">Add <?= $nomenclature ?></button>
                        </div>
                    </div>
                </div> <!-- added in the edit -->
            </div> <!-- added in the edit -->            
        </form>
<?php
    }
}
?>

Вот код AJAX:

function addProduct() {
    var product_code = $("#product_code").val();
    var product_name = $("#product_name").val();
    var product_cp = $("#product_cp").val();
    var product_sp = $("#product_sp").val();
    var product_des = $("#product_des").val();
    var product_exp = $("#product_exp").val();
    var supplier = $("#supplier").val();
    var department = $("#department").val();
    var sub_department = $("#sub_department").val();
    var vat = $("#vat").val();

    var addUrl = "home/addproduct";
    addUrl += "/" + product_code;
    addUrl += "/" + product_name;
    addUrl += "/" + product_cp;
    addUrl += "/" + product_sp;
    addUrl += "/" + product_des;
    addUrl += "/" + product_exp;
    addUrl += "/" + supplier;
    addUrl += "/" + department;
    addUrl += "/" + sub_department;
    addUrl += "/" + vat;

    $.ajax({type: 'GET', url: addUrl, data: {},
        success: function (result) {
            $.alert({
                content: result
            });
            $("#product_code").val("");
            $("#product_name").val("");
            $("#product_cp").val("");
            $("#product_sp").val("");
            $("#product_des").val("");
            $("#product_exp").val("");
            $("#supplier").val("");
            $("#department").val("");
            $("#sub_department").val("");
            $("#vat").val("");
            location.reload();
        },
        error: function (xhr, status, error) {
            $.alert({
                content: 'Could not complete the process. ' + error
            });
        }
    });
}

Вот функция контроллера:

private function addproduct($product_code = null, $product_name = null, $product_cp = null, $product_sp = null, $product_des = null, $product_exp = null, $supplier = null, $department = null, $sub_department = null, $vat = null) {
    if (isset($product_code, $product_name, $product_cp, $product_sp, $product_des, $product_exp, $supplier, $department, $sub_department, $vat)) {
        $email = $_SESSION[DbStrings::$EMAIL];
        $product_code = $this->test_input($product_code);
        $product_name = $this->test_input($product_name);
        $product_cp = $this->test_input($product_cp);
        $product_sp = $this->test_input($product_sp);
        $product_des = $this->test_input($product_des);
        $supplier = $this->test_input($supplier);
        $department = $this->test_input($department);
        $sub_department = $this->test_input($sub_department);
        $vat = $this->test_input($vat);
        $product_exp = strtotime($product_exp);

        $insertedProduct = $this->member->insertProduct($email, $product_code, $product_name, $product_cp, $product_sp, $product_des, $supplier, $department, $sub_department, $vat, $product_exp);

        if ($insertedProduct) {
            echo "Your " . $_SESSION[AppStrings::$NOMENCLATURE] . " has been added succesfully";
        } else {
            echo "There was a problem inserting your " . $_SESSION[AppStrings::$NOMENCLATURE] . ". Please try again.";
        }
    } else {
        echo 'Please fill all fields';
    }
}

И это Модель, которая выполняет вставку перед отправкой результата:

public function insertProduct($email, $product_code, $product_name, $product_cp, $product_sp, $product_des, $supplier, $department, $sub_department, $vat, $product_exp) {
    $data = array(
        DbStrings::$PRODUCTID => "",
        DbStrings::$EMAIL => $email,
        DbStrings::$PRODUCT_CODE => $product_code,
        DbStrings::$PRODUCT_NAME => $product_name,
        DbStrings::$PRODUCT_COST => $product_cp,
        DbStrings::$PRODUCT_SELLING => $product_sp,
        DbStrings::$PRODUCT_MARKUP => 9,
        DbStrings::$PRODUCT_DESCRIPTION => $product_des,
        DbStrings::$SUPPLIER => $supplier,
        DbStrings::$DEPARTMENT => $department,
        DbStrings::$SUB_DEPARTMENT => $sub_department,
        DbStrings::$VAT => $vat,
        DbStrings::$STOCK_BALANCE => 1,
        DbStrings::$MIN_LEVEL => 1,
        DbStrings::$MAX_QUANTITY => 1,
        DbStrings::$QUANTITY_SOLD => 1,
        DbStrings::$EXPIRY_DATE => $product_exp,
        DbStrings::$DATE_CREATED => time(),
        DbStrings::$DATE_STOCKED => time()
    );

    return $this->db->insert(DbStrings::$PRODUCTS_TABLE_NAME, $data);
}

Я все еще получаю сообщение об ошибке с сервера и не знаю, что еще делать.

Исправляя вышеуказанную проблему, код работает нормально. Я использовал: $this->output->enable_profiler(TRUE);, и я смог увидеть запрос MySQL, отправленный моделью на сервер, и когда я скопировал запрос и вставил его в свой localhost: phpmyadmin, я был отмечен ошибками, и, похоже, нет синтаксической ошибки.

Теперь это меня пугает, потому что я не могу это исправить.

Чтобы увидеть сообщение об ошибке действительный, проверьте журнал ошибок сервера. Вы также можете изменить способ отображения ошибок PHP и указать ему, чтобы он отображал все ошибки прямо на экране (это не то, что вам нужно в производственной среде, поскольку он может отображать конфиденциальные данные, но во время разработки вы должны). Вот как показать все ошибки и предупреждения: stackoverflow.com/questions/5438060/…

Magnus Eriksson 30.05.2018 16:32

Я бы рекомендовал вам использовать POST вместо GET при отправке данных на сервер. POST предназначен для публикации данных, а GET - для получения данных.

Magnus Eriksson 30.05.2018 16:37

я не получаю ошибок в журнале, даже после изменения моей среды на «разработка» и $ config ['log_threshold'] = 4;

Otoro Wonimidei Antonedei 30.05.2018 17:15

Убедитесь, что у вас включен отчет об ошибках. Кроме того, какой журнал ошибок вы проверяете? Воспламенители кода или веб-серверы (вот где вы должны искать). Если вы получите ошибку синтаксического анализа, CI не сможет сохранить эту ошибку в собственном журнале ошибок, так как это нарушит выполнение. Однако веб-сервер все равно будет сохранять журнал ошибок.

Magnus Eriksson 30.05.2018 17:17

@Magnus Я новичок в такого рода ошибках, пожалуйста, как мне найти журнал ошибок веб-сервера, поскольку я размещаю приложение на XAMP локально перед загрузкой в ​​Интернет.

Otoro Wonimidei Antonedei 30.05.2018 17:30

Поскольку я не использую XAMPP, я не знаю, где находятся журналы ошибок. Проверьте руководство.

Magnus Eriksson 30.05.2018 21:41
Стоит ли изучать 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 и хотите разрабатывать...
0
6
79
0

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