Редактирование данных в MySql с помощью PHP (админ-панель)

Редактирование данных в MySql с помощью PHP (админ-панель)

Назад к списку уроков

Вывод, редактирование и удаление данных из MySql

Если ты полностью справился с предыдущим уроком, то данный урок можно пропустить :) Здесь мы с вами пошагово сделаем следующее:

Итак, приступим!

Создание таблицы

Давайте создадим в нашей БД таблицу products со следующими полями: ID, Name, Price. Поле Name у нас будет иметь тип TEXT, остальные два - INT. Если вам лень в PhpMyAdmin создавать такую табличку руками, то можете просто в нем выполнить вот этот SQL-код:

CREATE TABLE IF NOT EXISTS `products` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `Name` text NOT NULL,
  `Price` int(11) NOT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

Теперь давайте заполним нашу таблицу тестовыми данными. Для наглядности мы добавим 3 записи:

Mysql-таблица с товарами

Заполнить таблицу можно либо ручками через PhpMyAdmin, либо опять же вот таким простым SQL-запросом:

INSERT INTO `products` (`ID`, `Name`, `Price`) VALUES
(1, 'Хлеб', 35),
(2, 'Йогурт', 27),
(3, 'Пиво Балтика #7', 50);

Вывод записей

Следующим нашим шагом будет обычный вывод этих данных из MySql на web-страничку.

Создадим новую страницу, к примеру "product_list.php" с установленным соединением с БД:

<!doctype html>
<html lang="ru">
<head>
  <title>Админ-панель</title>
</head>
<body>
  <?php
    $host = 'localhost';  // Хост, у нас все локально
    $user = 'user_bd';    // Имя созданного вами пользователя
    $pass = '1q2w3e4r5t'; // Установленный вами пароль пользователю
    $db_name = 'my_db';   // Имя базы данных
    $link = mysqli_connect($host, $user, $pass, $db_name); // Соединяемся с базой

    // Ругаемся, если соединение установить не удалось
    if (!$link) {
      echo 'Не могу соединиться с БД. Код ошибки: ' . mysqli_connect_errno() . ', ошибка: ' . mysqli_connect_error();
      exit;
    }
  ?>
</body>
</html>

Теперь выведем все записи из таблицы. Для этого после подключения к БД (перед закрывающимся тегом </body>) вставим следующий код:

<table border='1'>
  <tr>
    <td>Идентификатор</td>
    <td>Наименование</td>
    <td>Цена</td>
  </tr>
  <?php
    $sql = mysqli_query($link, 'SELECT `ID`, `Name`, `Price` FROM `products`');
    while ($result = mysqli_fetch_array($sql)) {
      echo "<tr><td>{$result['ID']}</td><td>{$result['Name']}</td><td>{$result['Price']} ₽</td></tr>";
    }
  ?>
</table>

Если вы увидели на экране табличку с вашими товарами, то ПОЗДРАВЛЯЮ, пока что у вас все получается как надо! Возможно только для этого вы сюда и пришли. Этот вариант уже можно разместить на сайте, а добавлять и редактировать товары четез PhpMyAdmin. Все изменения будут автоматически отображаться на вашей страничке, доступной пользователям. Конечно вам придется для более касивого отображения таблички поколдовать со стилями css, но это уже другая тема :) Итак, мы поедем дальше и сделаем редактирование и удаление этих товаров.

Редактирование и удаление записей

Давайте определимся, что нам надо уметь делать? Первое - удалять записи, воторое - редактировать записи. Ну а третье (вставлять новые записи) - мы уже сделали в прошлом уроке.

Итак, для того, чтобы мы могли удалить запись, нам надо в строке браузера передать в какой-либо переменной ID этой записи. Иными словами, нам надо, чтобы строка браузера у нас выглядела примерно так:

Переменная в строке браузера
На скриншоте выше мы видим переменную del_id в строке браузера, которая равна 1. Значение этой переменной можно прочитать средствами PHP и удалить из MySql-таблицы запись под номером 1 (ID = 1). Давайте сделаем это. Для начала передадим переменную, которая укажет, какую запись надо удалить. Для этого рядом с каждой записью добавим ссылку на удаление, в которой и передадим эту переменную. Итак, наша табличка с выведенными данными изменится следующим образом:
<table border='1'>
  <tr>
    <td>Идентификатор</td>
    <td>Наименование</td>
    <td>Цена</td>
    <td>Удаление</td>
  </tr>
  <?php
    $sql = mysqli_query($link, 'SELECT `ID`, `Name`, `Price` FROM `products`');
    while ($result = mysqli_fetch_array($sql)) {
      echo '<tr>' .
           "<td>{$result['ID']}</td>" .
           "<td>{$result['Name']}</td>" .
           "<td>{$result['Price']} ₽</td>" .
           "<td><a href='?del_id={$result['ID']}'>Удалить</a></td>" .
           '</tr>';
    }
  ?>
</table>

Теперь, если вы будете переходить по ссылкам "Удалить", то увидите, что значения переменной в строке браузера будет меняться в зависимости от выбранного продукта. Теперь давайте перед самым выводом товаров проверим, не передана ли переменная del_id, и если она передана, то удалим запись. Для этого после подключения к БД почти в начало файла вставим следующий код:

<?php
  if (isset($_GET['del_id'])) { //проверяем, есть ли переменная
    //удаляем строку из таблицы
    $sql = mysqli_query($link, "DELETE FROM `products` WHERE `ID` = {$_GET['del_id']}");
    if ($sql) {
      echo "<p>Товар удален.</p>";
    } else {
      echo '<p>Произошла ошибка: ' . mysqli_error($link) . '</p>';
    }
  }
?>

Редактирование записей

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

Итак, редактирование:

Сокращенная запись echo с условием

Следующие два примера кода делают одно и то же.

<?php
  if ($a === 1) {
    echo 'A = 1';
  } else {
    echo 'A != 1';
  }
?>
<?= (a === 1) ? 'A = 1' : 'A != 1'; ?>

Полный листинг кода

<!doctype html>
<html lang="ru">
<head>
  <title>Админ-панель</title>
</head>
<body>
  <?php
    $host = 'localhost';  // Хост, у нас все локально
    $user = 'user_bd';    // Имя созданного вами пользователя
    $pass = '1q2w3e4r5t'; // Установленный вами пароль пользователю
    $db_name = 'my_db';   // Имя базы данных
    $link = mysqli_connect($host, $user, $pass, $db_name); // Соединяемся с базой

    // Ругаемся, если соединение установить не удалось
    if (!$link) {
      echo 'Не могу соединиться с БД. Код ошибки: ' . mysqli_connect_errno() . ', ошибка: ' . mysqli_connect_error();
      exit;
    }

    //Если переменная Name передана
    if (isset($_POST["Name"])) {
      //Если это запрос на обновление, то обновляем
      if (isset($_GET['red_id'])) {
          $sql = mysqli_query($link, "UPDATE `products` SET `Name` = '{$_POST['Name']}',`Price` = '{$_POST['Price']}' WHERE `ID`={$_GET['red_id']}");
      } else {
          //Иначе вставляем данные, подставляя их в запрос
          $sql = mysqli_query($link, "INSERT INTO `products` (`Name`, `Price`) VALUES ('{$_POST['Name']}', '{$_POST['Price']}')");
      }

      //Если вставка прошла успешно
      if ($sql) {
        echo '<p>Успешно!</p>';
      } else {
        echo '<p>Произошла ошибка: ' . mysqli_error($link) . '</p>';
      }
    }

    if (isset($_GET['del_id'])) { //проверяем, есть ли переменная
      //удаляем строку из таблицы
      $sql = mysqli_query($link, "DELETE FROM `products` WHERE `ID` = {$_GET['del_id']}");
      if ($sql) {
        echo "<p>Товар удален.</p>";
      } else {
        echo '<p>Произошла ошибка: ' . mysqli_error($link) . '</p>';
      }
    }

    //Если передана переменная red_id, то надо обновлять данные. Для начала достанем их из БД
    if (isset($_GET['red_id'])) {
      $sql = mysqli_query($link, "SELECT `ID`, `Name`, `Price` FROM `products` WHERE `ID`={$_GET['red_id']}");
      $product = mysqli_fetch_array($sql);
    }
  ?>
  <form action="" method="post">
    <table>
      <tr>
        <td>Наименование:</td>
        <td><input type="text" name="Name" value="<?= isset($_GET['red_id']) ? $product['Name'] : ''; ?>"></td>
      </tr>
      <tr>
        <td>Цена:</td>
        <td><input type="text" name="Price" size="3" value="<?= isset($_GET['red_id']) ? $product['Price'] : ''; ?>"> руб.</td>
      </tr>
      <tr>
        <td colspan="2"><input type="submit" value="OK"></td>
      </tr>
    </table>
  </form>
  <table border='1'>
    <tr>
      <td>Идентификатор</td>
      <td>Наименование</td>
      <td>Цена</td>
      <td>Удаление</td>
      <td>Редактирование</td>
    </tr>
    <?php
      $sql = mysqli_query($link, 'SELECT `ID`, `Name`, `Price` FROM `products`');
      while ($result = mysqli_fetch_array($sql)) {
        echo '<tr>' .
             "<td>{$result['ID']}</td>" .
             "<td>{$result['Name']}</td>" .
             "<td>{$result['Price']} ₽</td>" .
             "<td><a href='?del_id={$result['ID']}'>Удалить</a></td>" .
             "<td><a href='?red_id={$result['ID']}'>Изменить</a></td>" .
             '</tr>';
      }
    ?>
  </table>
  <p><a href="?add=new">Добавить новый товар</a></p>
</body>
</html>

Ну вот, друзья, мы и научились доставать данные из БД MySql или MariaDB, отображать их на странице, удалять их прямо со страницы и, конечно же, редактировать ;)

Кстати, если вы еще не нашли себе хостинг для сайта (место в сети интернет), или не выбрали домен, то рекомендую почитать статью "Как разместить сайт в сети Интернет", в ней много всякой полезной информации.

Удачи в изучении связки PHP и MySql. Пишите комментарии, ставьте лайки "Мне нравится"!


<- Запись данных в MySql на PHP