[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сохранение без смены адреса страницы
alerzo
Здравствуйте! Подскажите как поправить:
else {
$erroru = 'изменения для ' . $logine . ' - сохранены!';
header("Location: users.php?sulog=" . $logine);
}


В таком блоке идет сохранение информации о юзере и вывод сообщения что изменения для "такого-то юзера" сохранены..Необходимо сделать чтобы после вывода сообщения, страница не менялась..я добавил к этому коду:
header("Location: users.php?sulog=" . $logine);


Это работает, но сообщение не выводится..почему не совсем ясно..видимо с заголовками это не сделать.
в переменной $logine - храниться логин пользователя.
sergeiss
Тебе надо менять не только показанный код, а весь подход. Если, конечно, ты хочешь сохранить данные из формы без перезагрузки страницы (как я понял, ты хочешь именно это сделать).

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
alerzo
Нет, перезагрузка страницы как раз таки и нужна..просто после пересохранения формы (в ней находятся данные юзера) открывается список со всеми юзерами, а мне нужно оставаться в профиле одного из юзеров..т.к. сохранения делаются часто и заново открывать конкретно не удобно.

Грубо говоря после сохранения, должны остаться на той же странице.
123456
Цитата
Это работает, но сообщение не выводится..

ты же делаешь перенаправление...
Используй сессию что ли
alerzo
как это сделать?
JohnBraxton
session_start();

$_SESSION['login'] = "username";


А вообще посмотрите в сторону AJAX. Сессии это не выход.
alerzo
и как мне использовать сессии в моем коде?
kaww
alerzo
1. В начале файла session_start();
2. вместо
else {
$erroru = 'изменения для ' . $logine . ' - сохранены!';
header("Location: users.php?sulog=" . $logine);
}

это
else {
$_SESSION['flashMessage'] = 'изменения для ' . $logine . ' - сохранены!';
header("Location: users.php?sulog=" . $logine);
}

3. Там, где нужно выводить сообщение:
if (!empty($_SESSION['flashMessage'])) {

echo $_SESSION['flashMessage'];
unset($_SESSION['flashMessage']);
}
alerzo
Сообщения у меня выводятся в html файле, конструкцией
<?=$erroru?>


я вставил как вы сказали и заменил
на


<?php
echo $erroru;
if (!empty($_SESSION['flashMessage'])) {

echo $_SESSION['flashMessage'];
unset($_SESSION['flashMessage']);
}

?>



но не работает..сообщения не выводятся..но на странице остаются (как и раньше было когда использовал хедер)
kaww
Может проблема в том, что выводишь сообщения сразу после отправки заголовков для перенаправления? Вот рабочий код, который демонстрирует как это должно работать:
<?php
session_start();
header('Content-Type: text/html; charset=utf-8;');
if ($_SERVER['REQUEST_METHOD'] == 'POST') {

$_SESSION['message'] = 'Сообщение, которое будет показано один раз, даже если перезагрузить страницу';

header("Location: test.php");//перенаправляем полльзователя. Если перенаправляем на другую сраницу, то на ней должен быть код как на строках 13-17
exit; // !!! Это очень важно, завершить скрипт, чтобы не вывести сообщение, которое только что записали в сессию
}
if (!empty($_SESSION['message'])) :?>
<p>
<?php
echo $_SESSION['message']?>
</p>
<?php
unset($_SESSION['message']);
endif?>
<form
action="" method="post">
<button>
send post request</button>
</form>
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.