Запись данных в MySql на PHP
Подготовка таблицы
Данный урок выполняется на основе (после выполнения) уроков "Создание базы данных и таблицы с товарами"> и "Вывод данных из MySql на PHP">. А именно, из этих уроков нам понадобится:
- Таблица "products" с полями "ID", "Name", "Price";
- Установленное соединение с БД MySql.
Создание формы для добавления записей
Для начала нам необходимо создать обычную форму, в которую мы будем записывать данные, и после отправки формы, они будут записываться в таблицу MySql.
Создадим новую страницу, к примеру "product_admin.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></body> после подключения к БД добавим HTML форму:
<form action="" method="post">
<table>
<tr>
<td>Наименование:</td>
<td><input type="text" name="Name"></td>
</tr>
<tr>
<td>Цена:</td>
<td><input type="text" name="Price" size="3"> руб.</td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="OK"></td>
</tr>
</table>
</form>
Обработка (вставка) полученных из формы данных
После того, как данные из формы будут отправлены, их надо принять и записать в таблицу БД.
Давайте првоерим, переданы ли данные и, если переданы, то сохраним их. Этот код лучше вставить перед формой, но после подключения к БД:
<?php
//Если переменная Name передана
if (isset($_POST["Name"])) {
//Вставляем данные, подставляя их в запрос
$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>';
}
}
?>
Теперь после отправки формы в таблице у вас должна появиться новая срока - новый товар.
Никогда без проверок принятых переменных не вставляйте данные напрямую в базу данных. В этом случае вас будет очень легко взломать. Подробнее об этом в google: о sql инъекциях. Но поскольку мы только учимся, и усложнять все незачем, то мы будем делать так :)
Удаление строк из Mysql
Давайте попробуем вывести все товары, а рядом с каждым товаром кнопку удалить (код вставляем в самый низ страницы перед тегом </body>):
<?php
//Получаем данные
$sql = mysqli_query($link, 'SELECT `ID`, `Name` FROM `products`');
while ($result = mysqli_fetch_array($sql)) {
echo "{$result['ID']}) {$result['Name']} - <a href='?del={$result['ID']}'>Удалить</a><br>";
}
?>
Теперь перед выводом товаров нам следует проверить, а не была ли передана переменная на их удаление, и если была, то удалить товар:
<?php
//Удаляем, если что
if (isset($_GET['del'])) {
$sql = mysqli_query($link, "DELETE FROM `products` WHERE `ID` = {$_GET['del']}");
if ($sql) {
echo "<p>Товар удален.</p>";
} else {
echo '<p>Произошла ошибка: ' . mysqli_error($link) . '</p>';
}
}
?>
Попробуйте доработать данный пример и сделать самим редактирование данных о товаре. Путей решения много. Один из них: рядом со ссылкой "Удалить" добавляем "Редактировать", при клике по которой передаем переменную "red". Перед отрисовкой формы проверяем, а нет ли этой переменной, и если есть, то извлекаем и подставляем данные в форму. Перед новой вставкой, если все еще есть "red", то делаем UPDATE, а не INSERT. Дерзайте ;)
Ну и для самых лентяев! Готовый код с редактирвоанием данных в таблице ниже.
Полный листинг кода
<!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'])) {
$sql = mysqli_query($link, "UPDATE `products` SET `Name` = '{$_POST['Name']}',`Price` = '{$_POST['Price']}' WHERE `ID`={$_GET['red']}");
} 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'])) {
$sql = mysqli_query($link, "DELETE FROM `products` WHERE `ID` = {$_GET['del']}");
if ($sql) {
echo "<p>Товар удален.</p>";
} else {
echo '<p>Произошла ошибка: ' . mysqli_error($link) . '</p>';
}
}
//Если передана переменная red, то надо обновлять данные. Для начала достанем их из БД
if (isset($_GET['red'])) {
$sql = mysqli_query($link, "SELECT `ID`, `Name`, `Price` FROM `products` WHERE `ID`={$_GET['red']}");
$product = mysqli_fetch_array($sql);
}
?>
<form action="" method="post">
<table>
<tr>
<td>Наименование:</td>
<td><input type="text" name="Name" value="<?= isset($_GET['red']) ? $product['Name'] : ''; ?>"></td>
</tr>
<tr>
<td>Цена:</td>
<td><input type="text" name="Price" size="3" value="<?= isset($_GET['red']) ? $product['Price'] : ''; ?>"> руб.</td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="OK"></td>
</tr>
</table>
</form>
<?php
//Получаем данные
$sql = mysqli_query($link, 'SELECT `ID`, `Name`, `Price` FROM `products`');
while ($result = mysqli_fetch_array($sql)) {
echo "<p>{$result['ID']}) {$result['Name']} - {$result['Price']} ₽ - <a href='?del={$result['ID']}'>Удалить</a> - <a href='?red={$result['ID']}'>Редактировать</a></p>";
}
?>
<p><a href="?add=new">Добавить новый товар</a></p>
</body>
</html>
<- Вывод данных из MySql на PHP | Редактирование данных в MySql с помощью PHP (админ-панель) -> |