Загрузка...

Как изменять определенное значение в бд ? [php]

Тема в разделе Backend создана пользователем NavigatoR 29 окт 2020. 227 просмотров

  1. NavigatoR
    NavigatoR Автор темы 29 окт 2020 243 19 фев 2017
    Есть форма редактирования данных о пользователе, нужно как то сделать проверку, какие именно данные меняет пользователь, что бы изменить их в бд + создать лог.

    Например, пользователь меняет ТОЛЬКО город и в бд меняется только город и в лог, соответственно тоже только город.

    Думал изначально прописать в input value=текущее значение



    Это бы решило проблему с изменением, но как теперь из этого создать лог, что изменился только город?
    через isset тоже не вариант, так как много данных
     
  2. NeBotFather
    NeBotFather 31 окт 2020 225 17 апр 2019
    PHP
    <?php
    if(isset($_POST['sub']){
    //Достаем значения из формы
    $login = $_POST['login'];
    $pass = $_POST['pass'];
    //Делаешь селект с базы где храняться эти значения
    $logbg = $row['login'];//Например это логин из бд
    $passbg = $row['pass'];//Например это пароль из бд
    if(($logbg != $login) && ($passbg != $pass)){
    //Делаешь лог, что изменилось 2 значения
    }else if($logbg != $login){
    //Делаешь лог, что изменился только логин
    }else if($passbg != $pass){
    //Делаешь лог, что изменился только пароль
    }
    //И тут уже делаешь апдейт
    }
    ?>
    <form action="" method="POST">
    <input type="text" name="login" value="<?=$имяперемоннойслогином?>">
    <input type="password" name="pass" value="<?=$имяперемоннойспаролем?>">
    <input type="submit" name="sub">
    </form>

    Есть еще вариант использовать ajax запрос, что я и люблю больше.
     
    31 окт 2020 Изменено
  3. USDC
    PHP
    <?php $p = $_POST; $data = [];
    // $userdata = fetch line from db
    if($userdata['login'] != $p['login']) array_push($data, 'login');
    if($userdata['dob'] != $p['dob']) array_push($data, 'dob');
    $log = 'изменились следующие данные: '.json_encode($data);
    print_r($log);
     
    31 окт 2020 Изменено
    1. NavigatoR Автор темы
      @SCRASIA, спасибо, почти так и сделал, только
      PHP
      foreach ($_POST as $key=>$val) {

      // echo $key ." + ". $val;
      $action = "edit " . $key;
      $old = $pars[$key];
      $new = $val;
      $date = date('Y-m-d H:i:s');
      $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];

      if ($new != $old') {
      //запись лога в БД и изменение значения

      }
      }
Загрузка...
Top