За последние 24 часа нас посетили 22727 программистов и 1312 роботов. Сейчас ищет 951 программист ...

Не добавляется/редактируется товар в бд

Тема в разделе "PHP для новичков", создана пользователем MrGerst, 25 ноя 2023.

Метки:
  1. MrGerst

    MrGerst Новичок

    С нами с:
    20 ноя 2023
    Сообщения:
    18
    Симпатии:
    0
    Здравствуйте. У меня проблемка небольшая. Я не могу добавить либо же отредактировать товар. Товар храниться в database (mySQLI). Прошу помочь чем можете! Буду благодарен!

    Вот сам код product_admin.php:
    PHP:
    1. <!doctype html>
    2. <html lang="ru">
    3. <head>
    4.   <title>Редактирование товаров</title>
    5.   <link rel="stylesheet" href="css/product_admin.css">
    6. </head>
    7. <body>
    8.   <?php
    9.     $host = 'localhost';  // Хост, у нас все локально
    10.     $user = 'root';    // Имя созданного вами пользователя
    11.     $pass = ''; // Установленный вами пароль пользователю
    12.     $db_name = 'test';   // Имя базы данных
    13.     $link = mysqli_connect($host, $user, $pass, $db_name); // Соединяемся с базой
    14.     // Ругаемся, если соединение установить не удалось
    15.     if (!$link) {
    16.       echo 'Не могу соединиться с БД. Код ошибки: ' . mysqli_connect_errno() . ', ошибка: ' . mysqli_connect_error();
    17.       exit;
    18.     }
    19.     //Если переменная Name передана
    20.     if (isset($_POST["Name"])) {
    21.       //Если это запрос на обновление, то обновляем
    22.       if (isset($_GET['red'])) {
    23.         $sql = mysqli_query($link, "UPDATE `products` SET `Name` = '{$_POST['Name']}',`imgfile` = '{$_POST['imgfile']}',`Price` = '{$_POST['Price']}' WHERE `ID`={$_GET['red']}");
    24.       } else {
    25.         //Иначе вставляем данные, подставляя их в запрос
    26.         $sql = mysqli_query($link, "INSERT INTO `products` (`Name`,`imgfile`, `Price`) VALUES ('{$_POST['Name']}','{$_POST['imgfile']}', '{$_POST['Price']}')");
    27.       }
    28.       //Если вставка прошла успешно
    29.       if ($sql) {
    30.         echo '<p>Успешно!</p>';
    31.       } else {
    32.         echo '<p>Произошла ошибка: ' . mysqli_error($link) . '</p>';
    33.       }
    34.     }
    35.     //Удаляем, если что
    36.     if (isset($_GET['del'])) {
    37.       $sql = mysqli_query($link, "DELETE FROM `products` WHERE `ID` = {$_GET['del']}");
    38.       if ($sql) {
    39.         echo "<p>Товар удален.</p>";
    40.       } else {
    41.         echo '<p>Произошла ошибка: ' . mysqli_error($link) . '</p>';
    42.       }
    43.     }
    44.     //Если передана переменная red, то надо обновлять данные. Для начала достанем их из БД
    45.     if (isset($_GET['red'])) {
    46.       $sql = mysqli_query($link, "SELECT `ID`,`imgfile`, `name`, `price` FROM `products` WHERE `ID`={$_GET['red']}");
    47.       $product = mysqli_fetch_array($sql);
    48.     }
    49.   ?>
    50.   <form action="" method="post">
    51.     <table>
    52.         <tr>
    53.             <td>Изображение</td>
    54.             <input type="file" name="imgfile">
    55.         </tr>
    56.       <tr>
    57.         <td>Наименование:</td>
    58.         <td><input type="text" name="name" value="<?= isset($_GET['red']) ? $product['name'] : ''; ?>"></td>
    59.       </tr>
    60.       <tr>
    61.         <td>Цена:</td>
    62.         <td><input type="text" name="price" size="3" value="<?= isset($_GET['red']) ? $product['price'] : ''; ?>"> руб.</td>
    63.       </tr>
    64.       <tr>
    65.         <td colspan="2"><input type="submit" value="Применить"></td>
    66.       </tr>
    67.     </table>
    68.   </form>
    69.   <button class="addproduct"><p><a href="?add=new" style="color: black">Добавить товар</a></p></button>
    70.  
    71.  
    72.  
    73.  
    74.  
    75.  
    76.   <form class="box-prod">
    77.     <div class="box-card">
    78.       <?php
    79.       //Получаем данные
    80.       $sql = mysqli_query($link, 'SELECT `ID`,`imgfile`, `Name`, `Price` FROM `products`');
    81.       while ($result = mysqli_fetch_array($sql)) {
    82.         echo "<p><p class='info_id'>ID: {$result['ID']}</p> <img class='imagefile' src='{$result['imgfile']}'>  <p class='info_name'> Название: {$result['Name']}</p>  <p class='info_price'> Цена: {$result['Price']} ₽</p>  <p><a href='?del={$result['ID']}'><img class='delete' src='img/delete.png'></a>
    83.        <a href='?red={$result['ID']}' class='edit'><img src='img/edit.png' class='edit_img'></a></p><br>";
    84.       }
    85.       ?>
    86.     </div>
    87.   </form>
    88. </body>
    89. </html>
    90.  
    91. <!--<img class='delete' src='img/delete.png'>
    92. <a class='delete' href='?del={$result['ID']}'>Удалить</a>
    93. <a href='?del={$result['ID']}'></a>-->
     
  2. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    332
    Симпатии:
    66
    Адрес:
    Бавария, Германия
    Добрый день!
    У Вас проблема в несоответствие названий полей формы и названий переменных массиве $_POST.
    В форме : "imgfile","name", "price" в $_POST: "Imgfile","Name", "Price"
    Советую Вам начинать поиск ошибок с распечаки $_POST
    PHP:
    1. <body>
    2.   <?php
    3.   echo "<pre>";
    4.   print_r($_POST);
    5. ...
    Затем следует распечатать $query, код я бы поменял так
    PHP:
    1. ...
    2. if (isset($_GET['red']))
    3.       {
    4.         $query = "UPDATE `products` SET `Name` = '{$_POST['name']}',`imgfile` = '{$_POST['imgfile']}',`Price` = '{$_POST['price']}' WHERE `ID`={$_GET['red']}";
    5.       }
    6.       else
    7.       {
    8.         //Иначе вставляем данные, подставляя их в запрос
    9.         $query = "INSERT INTO `products` (`Name`,`imgfile`, `Price`) VALUES ('{$_POST['name']}','{$_POST['imgfile']}', '{$_POST['price']}')";
    10.       }
    11.       echo $query;
    12.       $sql = mysqli_query($link, $query);
    13. ...
    Далее, если не стало понятно в чём проблема, копируете $query, заходите в phpMyAdmin
    Открываете таблицу и в закладку SQL вставляете там запрос.
    Удачи!

    P.S. Читал Ваша сообщение : «Ищу человека, который может помочь с PHP и MySQL»
    Возьмёте меня помощники? :)
     
    #2 Vladimir Kheifets, 25 ноя 2023
    Последнее редактирование: 25 ноя 2023
  3. MrGerst

    MrGerst Новичок

    С нами с:
    20 ноя 2023
    Сообщения:
    18
    Симпатии:
    0
    Код я поменял как вы сказали, но не фурычит :oops:
    А на счет помощника то пишите в вк мне: https://vk.com/mistergerst
     
  4. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.807
    Симпатии:
    647
    Первый признак г/кода – exit, обработка POST и т.п. внутри тега body (или вообще какого-то HTML-кода). Начните с основ – разделения обработки GET- и POST-запроса.
    --- Добавлено ---
    P.S. mysqli – это модуль пыха. БД (СУБД) – MySQL (или MariaDB).
     
    don.bidon нравится это.
  5. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    332
    Симпатии:
    66
    Адрес:
    Бавария, Германия
    Вы весь код переделали? Я изменил только несколько строк чтоб Вам было понятно в чём проблема.
    Вообще, менять нужно всё. Обратите внимание на сообщение mikitomlin.
    Это "не фурычит" выдаёт сообщения ошибках?
     
  6. MrGerst

    MrGerst Новичок

    С нами с:
    20 ноя 2023
    Сообщения:
    18
    Симпатии:
    0
    Вообще ничего не происходит
    --- Добавлено ---
    https://wdfiles.ru/M7lv
     
  7. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    332
    Симпатии:
    66
    Адрес:
    Бавария, Германия
    Если вообще ничего, значит в коде фатальная ошибка, а error_reporting отключён
    Попробуйте вставить в начале кода
    PHP:
    1. ini_set('error_reporting', E_ALL);
    Но всё это припарки. Нужно полносью переписать этот скрипт.
    Вы понимаете, что нужно не только сохранять имя файла в БД, но и сохранять файл на сервере?
    Не понятно, какое отношение имеет это линк к коду.
     
    #7 Vladimir Kheifets, 26 ноя 2023
    Последнее редактирование: 26 ноя 2023
  8. MrGerst

    MrGerst Новичок

    С нами с:
    20 ноя 2023
    Сообщения:
    18
    Симпатии:
    0
    Можете написать мне в вк? https://vk.com/mistergerst
    --- Добавлено ---
    Вставил, протестировал, ничего не выдает
     
  9. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    332
    Симпатии:
    66
    Адрес:
    Бавария, Германия
    В начале кода вставили
    PHP:
    1.  echo "<pre>";
    2.  print_r($_POST);
    Пустой массив не выдаёт?
    Как Вы вызываете скрипт?
    Напишу на vk