W1zer
@W1zer

Как сразу обновить данные на странице после их изменений?

Вообщем есть страница изменения данных профиля:

<h3>Ваши данные</h3>
	
	Логин: <?=$user_login;?><br>
	Полное Имя: <?=$user_name;?><br>
	Почта: <?=$user_mail;?><br>
	Номер телефона: <?=$user_phone;?><br>	
	
	<hr>
	
	<?php 
 
	$mysql_host = "localhost";
	$mysql_user = "****";
	$mysql_pass = "****";
	$mysql_name = "****";
	
	$db = @mysql_connect($mysql_host,$mysql_user,$mysql_pass);


	mysql_select_db($mysql_name);
		if($db) {
			echo "";
		} else {
			echo mysql_error();
		}
	
	mysql_set_charset('utf8', $db);

$query = mysql_query("SELECT `login`, `name` FROM users"); 
$query = mysql_query("SELECT `login`, `name`, `mail`, `phone` FROM users WHERE id='$user_id;' LIMIT 1");


while($record=mysql_fetch_array($query)) { 
echo '<form action="" method="post">';
echo 'Логин: <input class="placeholder-reg" type="text" name="login" value="'.$record['login'].'" ><br>';
echo 'Полное Имя: <input class="placeholder-reg" type="text" name="name" value="'.$record['name'].'" ><br>';
echo 'Почта: <input class="placeholder-reg" type="text" name="mail" value="'.$record['mail'].'" ><br>';
echo 'Номер телефона: <input class="placeholder-reg" type="text" name="phone" value="'.$record['phone'].'" ><br><hr>';
echo 'Пустое значение оставляет пароль текущим<br><br>';
echo 'Пароль: <input class="placeholder-reg" type="password" name="password" value="" ><br>';
echo 'Повторный пароль: <input class="placeholder-reg" type="password" name="password_r" value="" ><br>';
echo '<input type="submit" name="submit-edit" class="button-reg2" value=" Изменить">';
echo '</form>';
}


if (isset($_POST['submit-edit'])) {
	
	$log = $_POST['login'];
	$u_mail = $_POST['mail'];
	$u_name = $_POST['name'];
	$u_phone = $_POST['phone'];
	
	$pass =  md5(md5(trim($_POST['password'])));
	$r_pass =  md5(md5(trim($_POST['password_r'])));


	if(stristr($u_mail, '@') == TRUE) {
		if (strlen($u_phone) == 12) {
			if (!empty($log) && !empty($u_name) && !empty($u_mail) && !empty($u_phone)) {	
				
				if($pass == $r_pass) {
					if ($pass == '74be16979710d4c4e7c6647856088456') {
						$pass = $user_password; 
					}
						
					include "bd.php";
					
					$update_sql = "UPDATE users SET login='$log', password='$pass', mail='$u_mail', name='$u_name', phone='$u_phone' WHERE id='$user_id'";
					mysql_query($update_sql) or die("Ошибка вставки" . mysql_error());
					echo "<font color='green'>Изменения прошли успешно!</font>";
				
					
				} else echo "Пароли не ровны!";
			} else echo "Пожалуйста, заполните все данные!";
		} else echo "Неправильно записан номер телефона";
	} else echo "Неправильно записан почтовый адрес";  

	
}	
?>


Проблема в том что после сохранения изменения. Данные в БД изменяются, а на этой странице данные которые выводятся сверху меняются после обновления страницы в ручную. А нужно после тогда как нажата кнопка "Сохранить изменения". Как это реализовать?
  • Вопрос задан
  • 2021 просмотр
Пригласить эксперта
Ответы на вопрос 5
FanatPHP
@FanatPHP
Чебуратор тега РНР
Вообще, надо после обработки формы делать редирект,
Как очистить $_POST после загрузки страницы?

Но лучше всего было бы этот код весь стереть в ужасе, и пойти учиться.
Количество ошибок и уязвимостей в нем не поддаётся исчислению.
Ответ написан
Комментировать
@tosha_lol_daaa
@IceJOKER
Web/Android developer
А нужно после тогда как нажата кнопка "Сохранить изменения". - а где эта кнопка? О_О

realtime обновление выполняется с помощью js.
Самый легкий вариант - после нажатия на submit jQuery отправляет данные на сервер и текущие данные заменяете теми данными, который вернул запрос.
Ответ написан
Комментировать
w999d
@w999d
Web-developer
if (isset($_POST['submit-edit'])) {
должно быть вверху страницы, тогда изменения будут происходить перед отображением.
логично же.
Ответ написан
Комментировать
@Alzasr
Делай редирект на страницу с которой пришел post запрос или на нужную тебе страницу, если у тебя не ajax приложение то это хорошая практика по защите от дублирующих post запросов.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы