Обновление полей при редактировании

Тема в разделе "PHP", создана пользователем Viktor_93, 7 дек 2018.

  1. Viktor_93

    Viktor_93

    Регистрация:
    25 ноя 2018
    Сообщения:
    0
    Симпатии:
    0
    Добрый день.

    Возник затык с обновление данных в БД при редактировании через сайт. Затык состоит в том, что данные хранятся в 2 таблицах, category_parametr и сфеупщкн_parametr_sort.
    При добавлении все ок, а при редактировании не добавляются данные в таблицу сорт.
    Код:
    if(trim($_POST['action'])=='add'){
    $flds[]="`sort`='99999'";
    }
    if(trim($_POST['action'])=='add'){
    mysql_query("INSERT INTO `category_parameters` SET `active`='1', ".implode(', ', $flds).";");
    $_POST['id']=mysql_insert_id();
    }
    if(trim($_POST['action'])=='add'){
    foreach($_POST['cids'] as $cid){
    mysql_query("INSERT INTO `category_parameter_sort` SET `key`='"._F($_POST['key'])."', `cid`='"._F($cid)."', `sort`='99999';");
    }
    }
    if(trim($_POST['action'])=='edit'){
    mysql_query("UPDATE `category_parameters` SET ".implode(', ', $flds)." WHERE `id`='".intval($_POST['id'])."';");
    }
    Вот тут нужно дописать, не могу понять как написать добавить данные при изменении.
     
  2. $iD

    $iD Команда форума

    Регистрация:
    13 мар 2012
    Сообщения:
    3.581
    Симпатии:
    1.482
    так как мы не знаем структуры таблицы, то и точно вам сказать не можем как надо сделать.
    смотрите по аналогии как сделано для 'add'

    PHP:
    if(trim($_POST['action'])=='edit'){
    foreach(
    $_POST['cids'] as $cid){
    mysql_query("UPDATE `category_parameter_sort` SET `key`='"._F($_POST['key'])."' WHERE `id`='".intval($_POST['id'])."';");
    }
    }
    это нерабочий код, а просто пример.
     
  3. Viktor_93

    Viktor_93

    Регистрация:
    25 ноя 2018
    Сообщения:
    0
    Симпатии:
    0
    Спасибо за ответ!

    Сделал оп аналогии с add.
    Если делать через INSERT то записи дублируются при пересохранении. Содал - сохранил, создалась строка в БД. Отредактировал - создалась такая же строка снова.
    Если делать через UPDATE то он попросту не добавляет новые строки если я что то отмечаю.

    Получилось сделать скажем так по "колхозному" первой строкой - DELETE, вторая строка INSERT. Так все работает, но это не совсем корректно я так понимаю.
     
  4. Baco

    Baco Антихронофаг Команда форума

    Регистрация:
    9 окт 2012
    Сообщения:
    803
    Симпатии:
    399
    а какие аргументы передает при "обновлени" на страницу ?
    вижу, что $_POST['id']=mysql_insert_id(); - формируется в процессе добавления
    я бы предположил вот так сделать обновление:
    PHP:
    if (trim($_POST['action'])=='edit') {
    foreach(
    $_POST['cids'] as $cid){
    mysql_query("UPDATE `category_parameter_sort` SET `key`='"._F($_POST['key'])."' , `sort`='99999'  WHERE `id`='".intval($cid)."';");
    }
    }
     
    $iD нравится это.