@Rozhok68

Как исправить ошибку с редактированием данных?

Редактирование просто не работает. Уже все перепробовал. Все что можно менял, крутил, вертел. Не понимаю почему не изменяет данные. Есть похожая функция, но она берет данные из сессии при выводе на страницу и прекрасно работает и редактирует. Почему не работает эта не понимаю. Данные подтягиваются из таблицы корректно и id все совпадают, но при нажатии на кнопку сохранить обновляет страницу и выбивает кучу ошибок (все приложу ниже)

Обработчик:
$errMsg4  = '';
$id4 = '';
$id_user4 = '';
$status4 = '';
$categorits4 = '';
$power4 = '';
$brand4 = '';
if($_SERVER['REQUEST_METHOD'] === 'GET' && isset($_GET['edit_id'])){
    $post4 = selectOne('kasko', ['id' => $_GET['edit_id']]);

    $id4 = $post4['id'];
    $id_user4 = $post4['id_user'];
    $categorits4 = $post4['categorits'];
    $power4 = $post4['power'];
    $brand4 = $post4['brand'];
    $status4 = $post4['status'];
    }
if($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['edit_application'])){

    $id4 = ($_POST['id']);
    $id_user4 = trim($_POST['id_user']);
    $categorits4 = trim($_POST['cat']);
    $power4 = trim($_POST['pow']);
    $brand4 = trim($_POST['mark']);
    $status4 = trim($_POST['status']);

    if($categorits4 === '' || $power4 === '' || $brand4 === ''){
        array_push($errMsg4, "Не все поля заполнены!");
    }else{
        $post4 = [
            'id' => $id4,
            'id_user' => $id_user4,
            'categorits' => $categorits4,
            'power' => $power4,
            'brand' => $brand4,
            'status' => $status4
            ];
        $post4 = update('kasko', $id4, $post4);
        header('location: ' . BASE_URL . 'admin/kasko/index.php');
    }
}

Форма:
<div class="posts col-9">
        <div class="row title-table">
            <h2>Заявка на получение КАСКО</h2>
            <div class="container single1_form">
    <form action="kasko.php" method="post" class="row justify-content-center">
        <input type="" name="id" value="<?=$id4; ?>">
        <input type="" name="id_user" value="<?=$id_user4; ?>">
        <div class="row justify-content-center">
            <div class="col-6">
                <label for="exampleFormControlInput1" class="form-label">Категория ТС</label>
                <input name="cat" value="<?=$categorits4; ?>" type="text" class="form-control" >
            </div>
            <div class="col-6">
                <label for="exampleFormControlInput1" class="form-label">Мощность двигателя (л.с.)</label>
                <input name="pow" value="<?=$power4; ?>" type="text" class="form-control" >
            </div>
        </div>
        <div class="row justify-content-center">
            <div class="col-4">
                <label for="exampleFormControlInput1" class="form-label">Марка</label>
                <input name="mark" value="<?=$brand4; ?>" type="text" class="form-control" >
            </div>
            <div class="col-12">
            <label for="exampleFormControlInput1" class="form-label">Статус заявки</label>
            <select class="form-select"  name="status" id="number-select">
                <option value="0">Не проверено</option>
                <option value="1">Принято</option>
                <option value="2">Отклонено</option>
            </select>
            </div>


Кнопка:
<button type="submit" class="btn btn-big contact-btn" name="edit_application" style="margin-right: 20px">Сохранить</button>


Ошибки:
Есть которые вылетают постоянно по типу:
Notice: Undefined index: cat in D:\Ampps\www\avtostrah\app\controllers\users.php on line 320
И такая ошибка на каждое поле формы в куске функции $categorits4 = trim($_POST['cat']);

Есть еще 2 ошибки которые вылетают только при одном условии: если в коде формы вывод написать не так: value="<?=$categorits4; ?>", а так:value="<?=$post4['categorits']; ?>"
Сами ошибки:
Warning: Illegal string offset 'categorits' in D:\Ampps\www\avtostrah\admin\kasko\kasko.php on line 41
Notice: Uninitialized string offset: 0 in D:\Ampps\www\avtostrah\admin\kasko\kasko.php on line 41
  • Вопрос задан
  • 91 просмотр
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
&& isset($_POST['edit_application'])Это зачем? Во первых просто лишнее, во вторых я могу не нажимать на кнопку, а например просто нажать ентер в любом поле, субмит будет, а значения из кнопки не будет, и в третьих разные браузеры по разному обрабатывают кнопку как инпут, некоторые просто игнорируют.

if($_SERVER['REQUEST_METHOD'] === 'GET' && isset($_GET['edit_id'])){
тоже лишнее, просто расположите весь код из этого ифа ниже условия пост запроса.

Функция:
Если это действительно функция, то где декларация? И функции не должны работать с глобальными переменными, если только вы не передаете их в параметрах функции. А если это обработчик, то пишите что это "файл kasko.php" или где размещен код...
Кроме того, если этот код действительно внутри функции, то конечно внутренние переменные, которые вы там наопределяли, не будут видны в остальном коде.
Ответ написан
Ваш ответ на вопрос

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

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