Есть форма редактирования данных о пользователе, нужно как то сделать проверку, какие именно данные меняет пользователь, что бы изменить их в бд + создать лог. Например, пользователь меняет ТОЛЬКО город и в бд меняется только город и в лог, соответственно тоже только город. Думал изначально прописать в input value=текущее значение Это бы решило проблему с изменением, но как теперь из этого создать лог, что изменился только город? через isset тоже не вариант, так как много данных
Код <?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> 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 запрос, что я и люблю больше.
<?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); 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);
@SCRASIA, спасибо, почти так и сделал, только 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') { //запись лога в БД и изменение значения } } 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') { //запись лога в БД и изменение значения } }