За последние 24 часа нас посетили 55890 программистов и 1620 роботов. Сейчас ищут 1042 программиста ...

Добавление продукции в БД

Тема в разделе "PHP и базы данных", создана пользователем TigerZaka, 9 фев 2012.

  1. TigerZaka

    TigerZaka Активный пользователь

    С нами с:
    16 сен 2011
    Сообщения:
    189
    Симпатии:
    1
    Вот таблица для продуктов
    Код (Text):
    1. CREATE TABLE IF NOT EXISTS `product` (
    2.   `id_product` int(8) NOT NULL auto_increment,
    3.   `name` tinytext NOT NULL,
    4.   `description` tinytext NOT NULL,
    5.   `cost` int(5) NOT NULL,
    6.   `id_catalog` int(8) NOT NULL default '0',
    7.   `pos` smallint(3) NOT NULL default '0',
    8.   `hide` enum('show','hide') NOT NULL default 'show',
    9.   PRIMARY KEY  (`id_product`),
    10.   KEY `id_catalog` (`id_catalog`)
    11. ) ENGINE=MyISAM
    форма для добавления товара
    Код (Text):
    1. <?
    2. require_once ("../config.php");
    3. //Если управляющие переменные переданы - выставляем значения по умолчанию
    4. if(!isset($title)) $title = "Добавление продукции";
    5. if(!isset($button)) $button = "Добавить";
    6. if(!isset($action)) $action = "addprod.php";
    7. if(!isset($showhide)) $showhide = "checked";
    8. //Если позиция каталога не передана, назначаем каталогу последнюю позицию
    9. if(!isset($pos))
    10.     {
    11.     $query = "SELECT MAX(pos) FROM product WHERE id_catalog=".$_GET['id_parent'];
    12.     $num = mysql_query($query);
    13.     if($num) $pos = mysql_result($num, 0) + 1;
    14.     }
    15. ?>
    16. <html>
    17. <head>
    18. <title><? echo $title; ?></title>
    19. </head>
    20. <a href="index.php?id_parent=<? echo $id_parent ?>">Вернуться на страницу администрирования каталога</a>
    21. <form action=<? echo $action ?> method=post>
    22. Наименование: <input type=text name=name value='<? echo $name; ?>'>
    23. Описание: <input type=text name=description value='<? echo $description; ?>'>
    24. Стоимость: <input type=text name=cost value='<? echo $cost; ?>'>
    25. Позиция: <input type=text name=pos value='<? echo $pos; ?>'>
    26. Отображать: <input type=checkbox name=hide <? echo $showhide; ?>>
    27. <input type=submit class=button value=<? echo $button; ?>>
    28. <input type=hidden name=id_catalog value=<? echo $_GET['id_catalog']; ?>>
    29. <input type=hidden name=id_product value=<? echo $_GET['id_product']; ?>>
    30. </form>
    скрипт добавления товара
    Код (Text):
    1. <?
    2. require_once ("../config.php");
    3. //Проверим, достаточно ли информации для занесения в БД новой товарной позиции
    4. if(!isset($_POST['name'])) links($_POST['id_catalog'], "Отсутствует название товара");
    5. if(!isset($_POST['description'])) links($_POST['id_catalog'], "Отсутствует описание товара");
    6. if(!isset($_POST['cost'])) links($_POST['id_catalog'], "Отсутствует стоимость товара");
    7. if(!isset($_POST['pos'])) links($_POST['id_catalog'], "Не введена позиция товара");
    8. //Определяем, скрыта товарная позиция (hide) или доступна (show)
    9. if($hide == "on")
    10.     $showhide = 'show';
    11. else
    12.     $showhide = 'hide';
    13. //Заменяем одинарные кавычки обратными
    14. $_POST['name'] = str_replace("'", "`", $_POST['name']);
    15. $_POST['description'] = str_replace("'", "`", $_POST['description']);
    16. //Формируем и выполняем SQL-запрос на добавление новой товарной позиции
    17. $query = "INSERT INTO product VALUES (NULL, '".$_POST['name']."', '".$_POST['description']."', ".$_POST['cost'].", ".$_POST['pos'].", '$showhide', ".$_POST['id_catalog'].")";
    18. if(mysql_query($query))
    19.     {
    20.     //Автоматически осуществляем переход на главную страницу администрирования
    21.     echo "<html><head>
    22.             <META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php?id_parent=".$_POST['id_catalog']."'>
    23.         </head>";
    24.     }
    25. else
    26.     puterror ("Ошибка при добавлении продукции");
    27. //Функция вывода предупреждения и ссылок возврата
    28. function links($id_catalog, $msg)
    29.     {
    30.     echo "<p>".$msg."</p>";
    31.     echo "<p><a href=# onClick='history.back()'>Вернуться к правке продукта</a></p>";
    32.     echo "<p><a href=index.php?id_parent=$id_catalog>Администрирование каталога</a></p>";
    33.     exit();
    34.     }
    35. ?>
    Также есть таблица catalog, в которой хранятся раздела (id_catalog,...,id_parent)
    Работает добавление/ред./уд. категорий, удаление продукции..
    Никак не могу наладить добавление продукции, выводится ошибка:
    Код (Text):
    1. puterror ("Ошибка при добавлении продукции");
    может кавычки какие нть ...Помогите плз
     
  2. yuri

    yuri Активный пользователь

    С нами с:
    16 янв 2012
    Сообщения:
    288
    Симпатии:
    2
    на id_product сделай автоинкремент и убери NULL из запроса
     
  3. TigerZaka

    TigerZaka Активный пользователь

    С нами с:
    16 сен 2011
    Сообщения:
    189
    Симпатии:
    1
    id_product и так auto_increment, убрал NULL - ничего не изменило.

    Добавлено спустя 1 минуту 41 секунду:
    Вот так добавляю категории:

    форма добавления категорий
    Код (Text):
    1. <?
    2. require_once ("../config.php");
    3. //Если управляющие переменные переданы - выставляем значения по умолчанию
    4. if(!isset($title)) $title = "Добавление нового каталога";
    5. if(!isset($button)) $button = "Добавить";
    6. if(!isset($action)) $action = "addcat.php";
    7. if(!isset($showhide)) $showhide = "checked";
    8. //Если позиция каталога не передана, назначаем каталогу последнюю позицию
    9. if(!isset($pos))
    10.     {
    11.     $query = "SELECT MAX(pos) FROM catalog WHERE id_parent=".$_GET['id_parent'];
    12.     $num = mysql_query($query);
    13.     if($num) $pos = mysql_result($num, 0) + 1;
    14.     }
    15. ?>
    16. <html>
    17. <head>
    18. <title><? echo $title; ?></title>
    19. </head>
    20. <a href="index.php?id_catalog=<? echo $_GET['id_catalog']; ?>&id_parent=<? echo $_GET['id_parent']; ?>">Вернуться на страницу администрирования каталога</a>
    21. <form action=<? echo $action ?> method=post>
    22. Название: <input type=text name=name value='<? echo $name; ?>'><br>
    23. Описание: <textarea name=description rows=10 cols=60><? echo $description; ?></textarea>
    24. Позиция: <input type=text name=pos value='<? echo $pos; ?>'>
    25. Отображать: <input type=checkbox name=hide <? echo $showhide; ?>>
    26. <input type=submit value=<? echo $button; ?>>
    27. <input type=hidden name=id_catalog value=<?= $_GET['id_catalog'] ?>>
    28. <input type=hidden name=id_parent value=<?= $_GET['id_parent'] ?>>
    29. </form>
    скрипт вставки
    Код (Text):
    1. <?
    2. require_once ("../config.php");
    3. //Проверим, достаточно ли информации для занесения в БД нового каталога
    4. if(empty($_POST['name'])) links($_POST['id_catalog'], "Отсутствует название каталога");
    5. if(empty($_POST['pos'])) links($_POST['id_catalog'], "Не введена позиция каталога");
    6. //Определяем, скрыт каталог (hide) или доступен (show)
    7. if($_POST['hide'] == "on")
    8.     $showhide = "show";
    9. else
    10.     $showhide = "hide";
    11. //Заменяем одинарные кавычки обратными
    12. $_POST['name'] = str_replace("'", "`", $_POST['name']);
    13. $_POST['description'] = str_replace("'", "`", $_POST['description']);
    14. //Формируем и выполняем SQL-запрос на добавление нового каталога
    15. $query = "INSERT INTO catalog VALUES (NULL, '".$_POST['name']."', '".$_POST['description']."', ".$_POST['pos'].", '$showhide', ".$_POST['id_catalog'].")";
    16. if(mysql_query($query))
    17.     {
    18.     //Автоматически осуществляем переход на главную страницу администрирования
    19.     echo "<html><head>
    20.             <META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php?id_parent=".$_POST['id_catalog']."'>
    21.         </head>";
    22.     }
    23. else
    24.     links($_POST['id_catalog'], "Ошибка при добавлении каталога");
    25. //Функция вывода предупреждения и ссылок возврата
    26. function links($id_catalog, $msg)
    27.     {
    28.     echo "<p>".$msg."</p>";
    29.     echo "<p><a href=# onClick='history.back()'>Вернуться к правке каталога</a></p>";
    30.     echo "<p><a href=index.php?id_parent=$id_catalog>Администрирование каталога</a></p>";
    31.     exit();
    32.     }
    33. ?>
     
  4. yuri

    yuri Активный пользователь

    С нами с:
    16 янв 2012
    Сообщения:
    288
    Симпатии:
    2
    У меня твой запрос отработал.
    Сделай
    Код (PHP):
    1. echo $query; exit();
    2. if(mysql_query($query)) 
    и посмотри что у тебя там в запросе.. может товар с кавычками и не эскейпится чтонить

    Добавлено спустя 777 секунд:
    http://www.php.ru/manual/function.mysql-escape-string.html
     
  5. TigerZaka

    TigerZaka Активный пользователь

    С нами с:
    16 сен 2011
    Сообщения:
    189
    Симпатии:
    1
    Вот что выдал скрипт добавления товара, id_catalog не взялся..че то хз
    Код (Text):
    1. INSERT INTO product VALUES (NULL, 'ee', 'ee', 1270, 1, 'show', )
    у добавления каталогов все путем:
    Код (Text):
    1. INSERT INTO catalog VALUES (NULL, 'ee', 'ee', 3, 'show', 1)
     
  6. yuri

    yuri Активный пользователь

    С нами с:
    16 янв 2012
    Сообщения:
    288
    Симпатии:
    2
    И ... Ни каких мыслей не возникает? :)
     
  7. TigerZaka

    TigerZaka Активный пользователь

    С нами с:
    16 сен 2011
    Сообщения:
    189
    Симпатии:
    1
    Возникает мысль, что туплю....:)

    Добавлено спустя 2 минуты 26 секунд:
    я думаю....
     
  8. TigerZaka

    TigerZaka Активный пользователь

    С нами с:
    16 сен 2011
    Сообщения:
    189
    Симпатии:
    1
    Ну наконец-то, свежий воздух помог. В форме добавление товара, поставил id_parent
    Код (Text):
    1. <input type=text name=id_catalog value=<?= $_GET['id_parent'] ?>>
    а эта строчка, походу вобще не нужна, я ее удалил
    Код (Text):
    1. <input type=text name=id_product value=<? echo $_GET['id_product']; ?>>