Создаю сайт магазина. Остановился на категориях товара.База подключена и работает в phpmyadmin 7.
При добавлении добавлении товара в категории если стоит редактирование перед добавлением в коде то товар не добавляется в базу данных, а если поменять местами то товар будет добавляться но при редактировании изменив названия или родителя создается новый экземпляр с сохранением старого. Как автоматически удалять старый экземпляр товара или настроить так если не редактируется товар то добавлять как новый? ВОТ место конфликта.
if(isset($_GET['ok']))//редактирования или добавление
{
if($_GET['id'])
{
$sql="UPDATE category SET name='$_GET[name]',id_parent='$_GET[id_parent]', num='$_GET[num]' WHERE id='$_GET[id]'";
}else
{
$sql="INSERT INTO category(name, id_parent, num) VALUES ('$_GET[name]', '$_GET[id_parent]', '$_GET[num]')";
}
mysqli_query($link,$sql);
header("location:category.php");
}
На всякий случай.
ВОт весь код страницы проблема ниже.
<?php
require("../config.php");
//обеспечение безопасности админки
if(!isset($_SESSION['admin']))
{
//выкидываем на главную и выводим доступ запрещен
header("location:../index.php");
die('Доступ запрещен!'); //exit();
}
//кнопка есть реализуем обработчик формы
if(isset($_GET['ok']))//добавление или редактирования
{
if($_GET['id'])
{
$sql="UPDATE category SET name='$_GET[name]',id_parent='$_GET[id_parent]', num='$_GET[num]' WHERE id='$_GET[id]'";
}else
{
$sql="INSERT INTO category(name, id_parent, num) VALUES ('$_GET[name]', '$_GET[id_parent]', '$_GET[num]')";
}
mysqli_query($link,$sql);
header("location:category.php");
}
//удаление категории
if(isset($_GET['del']))
{
$sql="DELETE FROM category WHERE id=$_GET[del]";
mysqli_query($link,$sql);
$sql="DELETE FROM category WHERE id_parent=$_GET[del]";
mysqli_query($link,$sql);
header("location:category.php");
}
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Админка</title>
</head>
<body>
<a href="index.php">Заказы</a>
<a href="category.php">Категории</a>
<a href="catalog.php">Товары</a>
<a href="../index.php?quit=ok">Выход</a>
<hr>
<h1>Категории</h1>
<?php
//редактирование
if(isset($_GET['edit']))
{
$sql="SELECT * FROM category WHERE id=$_GET[edit]";
$rez = mysqli_query($link,$sql);
$kategory = mysqli_fetch_assoc($rez);
}
?>
<form>
Порядок: <input type="number" min="1" name="num" value="<?php echo $kategory['num']; ?>" >
Название: <input type="text" name="name" value="<?php echo $kategory['name']; ?>">
Родитель: <select name="id_parent">
<option value="0"> </option>
<?php
//выше создали форму
//выводи без родителя =0
//берем категории для родителей из базы данных
$sql="SELECT * FROM category WHERE id_parent=0";
$rez=mysqli_query($link,$sql);
//цикл в котором формируется массив категории
while ($cat = mysqli_fetch_assoc($rez))
{
if($cat[id]==$kategory[id_parent]) $sl="selected"; else $sl="";
echo "<option value='$cat[id]' $sl>$cat[name]</option>";
}
?>
</select>
<input type="hidden" name="id" value="<?php echo $kategory['id'];
?>">
<input type="submit" name="ok" value="Сохранить">
</form>
<hr>
<ul>
<?php
/*выводим внизу список раз категории есть*/
//если дерево с уровнем вложенеости больше 2 - католог->бытовая техника->холодильники->холодильники 1камерные
//то используют метод рекурсии
$sql= "SELECT * FROM category WHERE id_parent=0 ORDER BY num";
$rez=mysqli_query($link,$sql);
while ($cat = mysqli_fetch_assoc($rez))
{
//делаем ссылки на удаление и редактирование
//onclick - вызывает диалоговое окно для подтверждения удаления
echo "<li>$cat[name] <a href='?del=$cat[id]' onclick='return confirm(\"Вы точно хотите удалить эту категорию?\");'>удалить/</a> <a href='?edit=$cat[id]'>ред.</a></li>";
$sql2= "SELECT * FROM category WHERE id_parent=$cat[id] ORDER BY num";
//делаем вложенный список
$rez2=mysqli_query($link,$sql2);
echo '<ul>';
while ($cat2 = mysqli_fetch_assoc($rez2))
{//делаем ссылки на удаление и редактирование
echo "<li>$cat2[name] <a href='?del=$cat2[id]' onclick='return confirm(\"Вы точно хотите удалить эту категорию?\");'>удалить/</a> <a href='?edit=$cat2[id]'>ред.</a></li>";
}
echo '</ul>';
}
?>
</ul>
</body>
</html>