Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

не идет обновление страниц (рнр + mysql)

13K
14 декабря 2006 года
gpv
18 / / 06.02.2006
Dolonet, mfender и особенно shaelf здравствуйте!
У меня возникла очередная проблема. Ее суть в следующем.
Если Вы посмотрите на содержимое вложенного файла, то увидите там схему маленького административного блока, который позволяет отвечать на вопросы, заданные клиентом со страницы "вопрос-ответ" некоторого сайта.
Входя в этот блок по паролю, я выхожу на рнр-файл, который управляет всей работой и сразу высвечивает таблицу с вопросами. Выбираю нужный и (по умолчанию) вываливаюсь на страницу редактирования (режим 1). Здесь же предусмотрена возможность смены режима редактирования (режимы 2 и 3). Делаю исправления и по кнопке submit выхожу сначала на update данных, а затем возвращаюсь на первую таблицу с вопросами.
Исправления проходят. Это видно по флагу, который формируется каждым из режимов и высвечивает свою иконку в первой таблице, кроме того, я после update, принтую (print) всю исправленную запись.
А дальше начинается самое интересное. Опять выбираю, только что исправленную запись, вхожу в режим по умолчанию и вижу старую, не исправленную запись. Аналогичный результат и в других режимах. Нажимаю F5. Исправления появляются.
Внимание вопрос.
Как при повторном входе получить исправленную запись, без нажатия на F5?
Что я пробовал и почему это не работает?
1.
Header("HTTP/1.0 200 Ok");
Header("Expires: " . gmdate("D, d M Y H:i:s") . " GMT");
Header("Last-Modified: ".date("D, d M Y H:i:s:")." GMT");
Header("Cache-Control: no-cashe, must-revalidate"); //HTTP 1.1
Header("Pragma: no-cache"); //HTTP 1.0
2. Перед загрузкой режимов
echo "<script>window.opener.location.reload();</script>";
3. <body onunload='opener.location.reload();'... тоже пробовал
4. Также вставлял аналогичные вещи в onsubmit
Ни один из пунктов не работает. Старая информация остается.
Что посоветуете делать?
Остаюсь Ваш на веки.
256
15 декабря 2006 года
foxweb
1.0K / / 27.07.2005
> Dolonet, mfender и особенно shaelf здравствуйте!
а мне можно штоль ответить? ;)

вариантов тут два. первый - браузер фтопку. элементарно - посмотрите, как это работает на других платформах, браузерах.

второй вариант, хоть и не похож на ваш случай, но я сталкивался, когда в скрипте при постинге данные из БД сначала ВЫВОДЯТСЯ, а затем ОБНОВЛЯЮТСЯ. нужно конечно наоборот, чтобы мы сразу увидели обновлённые данные. взял за правило: любой вывод делать после все внутренних операций в БД, сетью и т.д., чтоб сразу видеть результаты.

ещё вариант: чтобы избежать кэширования GET и не дай Бог POST запросов, можно вводить какие нибудь случайные данные, которые с каждым запросом (даже с одинаковым) меняются. ну там ...&rand=03050876223453
8
15 декабря 2006 года
mfender
3.5K / / 15.06.2005
Сдаётся мне, что после UPDATE браузеру отдаются старые данные (возможно из $_POST), а уж после Refresh они берутся из БД. Так на пальцах трудно что-либо оценить. Нужно видеть "на бумаге" последовательность действий.
13K
15 декабря 2006 года
gpv
18 / / 06.02.2006
foxweb! Конечно можно. Более того - нужно. Здравствуйте.
Спасибо, что откликнулись.
Браузер "перед прочтением - сжечь" - нельзя, т.к. это браузер в рабочей сети предприятия.
Любой вывод делать после всех внутренних операций? С этим нужно переспать, осмыслить, поскольку не все здесь однозначно.
Кеширования по GET у меня ни в одном месте нет, все передачи осуществляются по POST. Вы предлагаете, например, в строку вида:
<a href='control.php?page=faq&login=$login&password=$password' ...
добавить сгенерированное случайное число, т.е. записать:
<a href='control.php?page=faq&login=$login&password=$password&rand=случ_число' ?
Надо попробовать.
Теперь mfender. Здравствуйте и Вам.
Интересно, что когда я пытался login и password из html передавать через $_POST в рнр, то получал "от винта". На моей родной площадке, на которой стоит мой любимый сайт (gampaul.ru) этих напрягов нет. Здесь я имею в виду (все, что имею, то и введу) только напрягов по-поводу суперглобалов. Как мне кажеться у провайдера, который обслуживает сайт на моей работе, что-то дремучее с настройками рнр.
По поводу бумаги. Я готов, но готовы ли Вы? В общем то, исходник не такой уж и большой. Я бы мог сбросить куда-то-нибудь полностью директорию admin. Хотя, как мне кажется, это не совсем прилично отнимать у Вас время на всякие глупости.

В общем, надо думать и пробовать.
Спасибо.
337
15 декабря 2006 года
shine
719 / / 09.06.2006
Цитата: gpv
Header("Cache-Control: no-cashe, must-revalidate"); //HTTP 1.1


Попробуйте так: Header("Cache-Control: no-caсhe, must-revalidate");

15
15 декабря 2006 года
shaelf
2.7K / / 04.05.2005
Вопросик. В каком скрипте осуществляется само добавление? В том же что и форма или по принципу:
form.html -> function.php -> form.html
Или сама на себя:
form.php -> form.php?
Просто в первом варианте кэширование как таковое не встречал, со вторым сам мозги делал с оперой.
Ещё как вариант, если БД не успевает (или есть шанс, что не успеет) за время работы скрипта добавить (обновить) запись, то можно делать примитивный sleep() (хотя это я уже повторяю mfender). Когда было в одном скрипте вроде выручало location.href=""
13K
15 декабря 2006 года
gpv
18 / / 06.02.2006
Здравствуйте chine!
Это уже пробовал (см. самый первый вопрос, пункт 1, где описаны все хедеры).
337
15 декабря 2006 года
shine
719 / / 09.06.2006
gpv, не "no-cashe", а "no-caсhe". Разницу видите?
13K
15 декабря 2006 года
gpv
18 / / 06.02.2006
И Вам не хворать shaelf!
Я не совсем понял, о каких добавлениях идет речь. Ну да ладно.
А по-поводу структуры программы могу сказать нижеследующее.
Все элементы управления, как-то: кнопки с <a href=..., <form с ихней action и submit находятся в головном рнр-файле, который управляет всей кухней. А все нахлобучки, в виде картинок, выводимых на экран, подтягиваются, по мере необходимости, из других файлов.

Хотя... в одном случае, когда я выхожу на первую таблицу (и возвращаюсь в нее же из режимов редактирования (см. схему в начале)) и <a href=..., и <form находятся в подтягиваемом рнр-файле.
Похоже, что это как раз и есть тот второй случай, о котором Вы говорите.
"Когда было в одном скрипте вроде выручало location.href="" - а это как? Нельзя ли с этого места по-подробнее?
И по-поводу sleep(). Механику бы. Сколько спать и кому.

Кстати, для foxweb. Все операции с БД делаются перед рисованием картинок. Например, прочитал что-то, нарисовал таблицу, вставил это что-то в таблицу:
// Формирование SQL-запроса
$query = "SELECT * FROM faq WHERE ID=$id";
// Выполнить SQL - запрос
$point = mysql_query($query);
// Есть ли ошибка
if (mysql_num_rows($point) == 0)
{
// Запрос не выполнен
print (mysql_errno() .": " .mysql_error(). "<br>\n");
}
else
// Все загнать в массив
$dim = mysql_fetch_array($point);
А уж потом, из массива достаю все что надо.
13K
15 декабря 2006 года
gpv
18 / / 06.02.2006
Chine. Простите.
Но это досадная типографская очепятка, которую я быстро исправил, однако получил все те же удручающие результаты.
13K
18 декабря 2006 года
gpv
18 / / 06.02.2006
Всем здравствуйте!
Попробовал этот модуль дома - ВСЕ ИДЕТ. Стреляет как Калашников!
Правда у меня там стоит ХР (не совсем лицензионный, но все же).
Так, что, как сказал давеча foxweb:
"вариантов тут два. первый - браузер фтопку. элементарно - посмотрите, как это работает на других платформах, браузерах."
Таким образом, вопрос можно считать "исперченым".
Всем большое спасибо за внимание и отнятое время.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог