@Pavl-85

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

Добрый день!
Списываю код у автора видеоурока. Делаю всё, как у автора, но у него код работает, а у меня нет. В видеоуроке речь идёт о создании корзины, записи в неё и обновлении. При нажатии кнопки "Обновить" на странице
1_eshop.ru/admin/admin.html должно происходить обновление строки в базе данных, но этого не происходит. Если в момент нажатия "Обновить" в браузере открыть вкладку "Сеть", то там ничего не происходит, ни какой реакции браузера на это нажатие. Выложу код нескольких файлов имеющих (как мне кажется) отношение к данной проблеме:
Файл admin.html:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div class="goods-out"></div>
    <h2>Товар</h2>
    <p>Имя: <input type="text" id="gname"></p>
    <p>Стоимость: <input type="text" id="gcost"></p>
    <p>Описание: <textarea id="gdescr"></textarea></p>
    <p>Изображение: <input type="text" id="gimg"></p>
    <p>Порядок: <input type="text" id="gorder"></p>
    <input type="hidden" id="gid">
    <button class="add-to-db">Обновить</button>

<script src="js/jquery-3.5.1.min.js"></script>
<script src="js/admin.js"></script>
</body>
</html>


Файл core.php:
<?php
$action = $_POST['action'];

require_once 'function.php';

switch ($action) {
    case 'init':
        init();
        break;
   case "selectOneGoods":
       selectOneGoods();
       break;
   case 'updateGoods':
       updateGoods();
       break;
}


Файл function.php:
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "eshop";

function connect(){
    $conn = mysqli_connect("localhost", "root", "", "eshop");
    if (!$conn) {
        die("Connection failed: " . mysqli_connect_error());
    }
    mysqli_set_charset($conn, "utf8");
    return $conn;
}

function init(){
    //вывожу список товаров
    $conn = connect();
    $sql = "SELECT id, name FROM goods";
    $result = mysqli_query($conn, $sql);

    if (mysqli_num_rows($result) > 0) {
        $out = array();
        while($row = mysqli_fetch_assoc($result)) {
            $out[$row["id"]] = $row;
        }
        echo json_encode($out);
    } else {
        echo "0";
    }
    mysqli_close($conn);
}

function selectOneGoods() {
    $conn = connect();
    $id = $_POST['gid'];
    $sql = "SELECT * FROM goods WHERE id = '$id'";
    $result = mysqli_query($conn, $sql);

    if (mysqli_num_rows($result) > 0) {
        $row = mysqli_fetch_assoc($result);
        echo json_encode($row);
    } else {
        echo "0";
    }
    mysqli_close($conn);
}

function updateGoods() {
    $conn = connect();
    $id = $_POST['id'];
    $name = $_POST['gname'];
    $cost = $_POST['gcost'];
    $descr = $_POST['gdescr'];
    $ord = $_POST['gorder'];
    $img = $_POST['gimg'];

    $sql = "UPDATE goods SET name='$name', cost='$cost', description='$descr', ord='$ord', img='$img' WHERE id='$id' ";

    if (mysqli_query($conn, $sql)) {
        echo "1";
    } else {
        echo "Error updating record: " . mysqli_error($conn);
    }

    mysqli_close($conn);

}

Подчеркну, что проблема с корзиной, только с обновлением в ней. Другие запросы к ней проходят.
Если по Вашему мнению проблема может, крыться в других файлах, то и их код я выложу.
Так выглядит база данных:
5f2996ffdd066991586702.jpeg
  • Вопрос задан
  • 134 просмотра
Решения вопроса 1
@legacy_js
в input написано id="gid"

<input type="hidden" id="gid">

а в функции updateGoods просто id

$id = $_POST['id'];
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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