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 "Неправильно записан почтовый адрес";  

	
}	
?>


Проблема в том что после сохранения изменения. Данные в БД изменяются, а на этой странице данные которые выводятся сверху меняются после обновления страницы в ручную. А нужно после тогда как нажата кнопка "Сохранить изменения". Как это реализовать?
  • Вопрос задан
  • 1966 просмотров
Пригласить эксперта
Ответы на вопрос 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 запросов.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы