Название таблицы 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>
Теперь в блок
после подключения к БД добавим 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 инъекциях. Но поскольку мы только учимся, и усложнять все незачем, то мы будем делать так.
Давайте попробуем вывести все товары, а рядом с каждым товаром кнопку удалить (код вставляем в самый низ страницы перед тегом </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>