[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Функция обновления в PHP-есть ли она?
Эдик
ЕСть ли в PHP функции обновления траницы?Мне просто надо после выполнения скрипта обновить ее, чтобы отображались новые значения.



Спустя 1 минута, 25 секунд (8.10.2009 - 21:54) gmaneye написал(а):
PHP
header("Location: путь");

Спустя 3 минуты, 20 секунд (8.10.2009 - 21:58) sergeiss написал(а):
Эдик - для начала устное предупреждение, чтобы не "лепил" свои вопросы в больших количествах, да еще и в разных темах, не связанных с твоим вопросом. Есть вопрос - задай его отдельно (как в этой теме).

PS. Все дубли я вычистил, которые мне на глаза попались.

Спустя 14 минут, 11 секунд (8.10.2009 - 22:12) Эдик написал(а):
Дык а куда мне его вставлять(начало , конец, середина)?

Спустя 6 минут, 5 секунд (8.10.2009 - 22:18) SunSet написал(а):
Эдик
После того как чтото добавляется в базу, происходит какоето вычисление, обновление данных в базе и прочее. Между тегов <?php и ?>
smile.gif

Спустя 5 минут, 12 секунд (8.10.2009 - 22:23) Эдик написал(а):
ВОт я добавил, и результат: Warning: Cannot modify header information - headers already sent by (output started at C:\Program Files\Apache Group\Apache2\htdocs\statji.php:4) in C:\Program Files\Apache Group\Apache2\htdocs\statji\Ocenka.php on line 3

Спустя 2 минуты, 43 секунды (8.10.2009 - 22:26) Эдик написал(а):
Кстати, еще вопрос.Как усановить ссылку на скачивание файла?!Я установил прямую, а в Опере этот файл просто тупо открывается

Спустя 47 секунд (8.10.2009 - 22:27) sergeiss написал(а):
Вообще, начальный вопрос изначально некорректный.

Цитата (Эдик @ 8.10.2009 - 22:53)
Мне просто надо после выполнения скрипта обновить ее, чтобы отображались новые значения.

Судя по написанному, на каком-то этапе скрипт уже отработал. Выдал информацию.
Далее он опять запускается - скорее всего, нажимается кнопка типа submit. Происходит переход скрипта, скорее всего, "сам на себя". Старая страница уже не актуальна, про нее браузер забыл. Вывод данных делается с нуля, на чистой странице.
Естественно, тут может помешать кэширование браузером страниц. И человек может увидеть старую страницу вместо новой.

Вопрос: проблема именно в этом, т.е. ты выводишь новые данные, но видишь старые данные?
Или проблема в чем-то другом? Сформулируй получше.

PS. И убери пока header(....) wink.gif

Спустя 1 минута, 10 секунд (8.10.2009 - 22:28) SunSet написал(а):
Эдик
В самом верху страницы, выше всех других инклудов и прочего вставь
PHP
<?php ob_start(); 

затем в самом низу после всего вставь:
PHP
<?php
$buffer 
ob_get_contents();  
ob_end_clean();
echo 
$buffer;
?>


Цитата
Кстати, еще вопрос.Как усановить ссылку на скачивание файла?!Я установил прямую, а в Опере этот файл просто тупо открывается

Если это текстовый документ или графика (мож еще че) то браузер сам может это открыть, потому и выводит сразу. В архив кидай.

Спустя 1 минута, 46 секунд (8.10.2009 - 22:29) sergeiss написал(а):
SunSet - подожди с хэдером... Пусть ТС толком объяснит - в чем у него проблема? Иначе разговор уходит, по-моему, "не туда".

Спустя 3 минуты, 52 секунды (8.10.2009 - 22:33) SunSet написал(а):
sergeiss
Какой вопрос, такой ответ)))
Хотя, после сабмита само собой должно обновляться. Согласен.

Спустя 2 минуты, 34 секунды (8.10.2009 - 22:36) Эдик написал(а):
Получается сначала стоит условие-если нету глобальных переменных, то выводяться формы, а если есть, то происходит запись новых данных, а ссылка то сама на себя и начинается все с начала но со старыми данными

Спустя 4 минуты, 41 секунда (8.10.2009 - 22:41) sergeiss написал(а):
Цитата (Эдик @ 8.10.2009 - 23:36)
если нету глобальных переменных

Какие глобальные переменные имеются ввиду? Не совсем понятно.

Спустя 5 минут, 12 секунд (8.10.2009 - 22:46) Эдик написал(а):
(Суперглобальные)То есть когда нажимаем кнопку отправить, то передается суперглобальная переменная

Спустя 1 минута, 53 секунды (8.10.2009 - 22:48) sergeiss написал(а):
Это ты про массив $_POST, что ли?

Спустя 1 минута, 56 секунд (8.10.2009 - 22:50) SunSet написал(а):
sergeiss
Чтото мне подсказывает что речь идет про обычное:
PHP
if (isset($_POST['any'])) {тра-ля-ля}
smile.gif

Спустя 2 минуты, 17 секунд (8.10.2009 - 22:52) sergeiss написал(а):
Цитата (SunSet @ 8.10.2009 - 23:50)
Чтото мне подсказывает что речь идет про обычное:...

Я об этом уже говорил с полчаса тому назад, а сейчас "по крупицам" пытаюсь вытащить из ТС подтверждение wink.gif

Спустя 10 минут, 19 секунд (8.10.2009 - 23:02) Эдик написал(а):
Цитата (SunSet @ 8.10.2009 - 19:50)

Чтото мне подсказывает что речь идет про обычное:
PHP
if (isset($_POST['any'])) {тра-ля-ля}
smile.gif

Да ты прав

Спустя 4 минуты, 34 секунды (8.10.2009 - 23:07) Эдик написал(а):
А после выполнения скрипта возникает ссылка вернуться обратно, а там все по-прежнему.

Спустя 5 минут, 33 секунды (8.10.2009 - 23:12) SunSet написал(а):
Эдик
Все же - запостить тут свой код не помешало бы чтоб не гадать на кофейной гуще. rolleyes.gif

Спустя 3 минуты, 5 секунд (8.10.2009 - 23:15) Эдик написал(а):
PHP
$dir="ocenka";
$ocenka=$ind.".txt";
$way="$dir/$ocenka";
if(!isset(
$_GET['ball']))
{
if(
file_exists($way)==true)
{

$file=file($way);
$vsego=(int)$file[0];
$srednee=(float)$file[1];
echo 
"<B id=lolo2>Количество оценок этой статье:$vsego</B><br>";
echo 
"<B id=lolo2>Средняя оценка:$srednee</b><br>";
}
echo 
"<form method=POST action=Ocenka.php>
<input name=ind type=hidden value=$ind>
<select name=ball>
<option value=5>5(Отличный материал!)</option>
<option value=4>4(В общем,хорошо!)</option>
<option value=3>3(Неплохо,но можно было и получше!)</option>
<option value=2>2(Плохо,зря только зашел сюда!)</option>
<option value=1>1(Лучше бы ты землю пахал,чем делал бы сайты!!)</option>
</select>
<input name=submit type=submit value=Оценить>
</form>"
;
}
else
{
$ball=$_GET['ball'];
$ind=$_GET['ind'];
$ocenka=$ind.".txt";
$way="$dir/$ocenka";
if(
file_exists($way)!=true)
{
$vsego=1;
$srednee=$ball;
$count=$vsego."\n".$srednee;
$open=fopen($way,"w+");
fwrite($open,$count);
fclose($open);
}
else
{
$file=file($way);
$vsego=(int)$file[0];
$srednee=(float)$file[1];
$vsego++;
$srednee=($srednee*($vsego-1)+$ball)/$vsego;
$srednee=round($srednee,2);
$count=$vsego."\n".$srednee;
$open=fopen($way,"r+");
flock($open,LOCK_EX);
fwrite($open,$count);
flock($open,LOCK_UN);
fclose($open);

}
echo 
"<div id='lolo'>Благодарим вас за оценку</div><br>";
echo 
"<a href=# onClick='history.back()'><button>Вернуться</button></a>";
}


коммент от sergeiss: пользуйся, плз, тэгами оформления кодов!!!

Спустя 2 минуты, 51 секунда (8.10.2009 - 23:18) Эдик написал(а):
Только сильно не ругать!

Спустя 5 минут, 49 секунд (8.10.2009 - 23:24) sergeiss написал(а):
Сразу же, с ходу же, не вникая в суть написанного: у тебя POST в описании формы указан, а анализируешь ты массив GET. Приди к чему-то одному, потом можно будет дальше смотреть.

Спустя 3 минуты, 43 секунды (8.10.2009 - 23:28) Эдик написал(а):
ДА у меня раньше Post был, но тут мне написали что лучше в GET я и переделал, а это забыл.Так что это описка.Пусть будет GET

Спустя 52 секунды (8.10.2009 - 23:29) SunSet написал(а):
То что sergeiss сказал + следующее:

PHP
$dir="ocenka";
$ocenka=$ind.".txt";
$way="$dir/$ocenka";


С первых строк уже чую беду smile.gif У тебя ж выше нигде не не указывается значения переменной $ind. Ты не весь код наверно выложил.

А по теме - я так понял, это другая страница, с которой пришел юзер? Так сказать, файл-обработчик. onClick='history.back() - так не работает, он не обновляет. Он аналогичен кнопке браузера Назад. Можно так вот:
PHP
echo "<html><head>
<meta http-equiv='Refresh' content='0; URL=твой_первый_файл.php'>
</head></html>"
;
но юзер не успеет прочитать "Благодарим вас за оценку" smile.gif

Спустя 2 минуты, 10 секунд (8.10.2009 - 23:31) sergeiss написал(а):
Оффтоп:
Цитата (SunSet @ 9.10.2009 - 00:29)
но юзер не успеет прочитать "Благодарим вас за оценку"

А как сделать так, чтобы юзер успел это прочитать? Подумай smile.gif Кстати говоря, я же лично, на этом же форуме, раз несколько об этом говорил.

Спустя 50 секунд (8.10.2009 - 23:32) Gabriel написал(а):
SunSet
успеет если вместо 0 вписать 3-5 секунд
sergeiss
а по каким параметрам искать?

Спустя 1 минута, 42 секунды (8.10.2009 - 23:33) Эдик написал(а):
$ind у меня на странице определяется, где расположен скрипт
$ind=basename($_SERVER['PHP_SELF'],".php");

Спустя 26 секунд (8.10.2009 - 23:34) SunSet написал(а):
sergeiss
echo "<html><head>
<meta http-equiv='Refresh' content='999999999999999999; URL=твой_первый_файл.php'>
</head></html>";

... и пусть смотрит вечно.. laugh.gif
Я б возможно попробовал бы вместе с сылкой URL=твой_первый_файл.php какойто параметр, а в первой странице была б проверка, если он есть - то печатаем сообщение "Голос учтен". Ну как вариант smile.gif

Спустя 1 минута, 57 секунд (8.10.2009 - 23:36) SunSet написал(а):
Gabriel
Думаешь, не знал?)))Просто это тупо оставлять 1 на 1 юзера с пустой страницей ждать определенное количество секунд) Считаю, что либо кнопку делать "Назад" (только с обновлением) либо сразу редирект без задержки, а на той странице вывести мессагу. smile.gif

Спустя 4 минуты (8.10.2009 - 23:40) Эдик написал(а):
А как назад с обновлением??

Спустя 1 минута, 48 секунд (8.10.2009 - 23:42) SunSet написал(а):
Цитата (Эдик @ 8.10.2009 - 20:40)
А как назад с обновлением??

А вот этого я уже не знаю biggrin.gif

Спустя 4 минуты, 29 секунд (8.10.2009 - 23:46) Эдик написал(а):
А что мне делать?

Спустя 2 минуты, 13 секунд (8.10.2009 - 23:48) SunSet написал(а):
glock18
Предлогай уже свою версию, а то все наблюдаешь))) smile.gif

Спустя 7 минут, 35 секунд (8.10.2009 - 23:56) twin написал(а):
Цитата
А как назад с обновлением??

Так а разве не идет назад? Правда рефрешь я бы не метатегом ставил, а заголовком. Ну как варианет можно гет-параметр к урлу добавить.

Спустя 24 секунды (8.10.2009 - 23:56) sergeiss написал(а):
Цитата (Эдик @ 9.10.2009 - 00:40)
А как назад с обновлением??

Насколько я понял задачу - "назад с обновлением" вовсе не нужно!!! А нужно двигаться вперед. "Ни шагу назад, ни шагу на месте, а только вперед, и только все вместе" smile.gif

1. Пришли в скрипт, видим, что есть данные для обновления.
1.1. Если данных для обновления нету, то тогда переходим к п.4
2. Делаем эти обновления.
3. Вызываем страницу, чтоб она "сама себя" вызвала.
PHP
//Либо сразу
header( "Location: .....");
// либо чтоб через указанное количество секунд
header( "Refresh: 5, URL=...." );
// в любом случае после header ОБЯЗАТЕЛЬНО пишем
exit;

В этом вызове скрипта п.3 будет последним.
4. Вывод формы. Это в случае, если не было данных для записи.

Заодно такой алгоритм обеспечит защиту от нажатия F5 и повторного ввода данных.

PS. Всё, что будет выведено ПОСЛЕ header( "Refresh: ...." ); и ДО exit;, будет показано на экране. Любой текст, картинки, и т.д. Если, конечно, эти данные успеют загрузиться в браузер smile.gif Поэтому тут не надо ставить громоздких картинок.

Спустя 2 минуты, 8 секунд (8.10.2009 - 23:58) glock18 написал(а):
SunSet
Ты меня раскрыл smile.gif Уже читать лень. Я по инерции тыкаю в тему с новыми сообщениями, потом вспоминаю что за тема, и закрываю smile.gif

Спустя 1 минута, 57 секунд (9.10.2009 - 00:00) SunSet написал(а):
sergeiss
Чуть не то кажись. У автора в файле1 форма, при сабмите этот поезд данных едет в файл2, там все обрабатывает, что нужно делается, и в конце выводится кнопка возврата на страницу1. Если б у него все на одной странице делалось то да, без вопросов.

Спустя 2 минуты, 39 секунд (9.10.2009 - 00:03) sergeiss написал(а):
SunSet
Совершенно не важно, сколько тут файлов участвует! Хоть два, хоть один. Указывай только нужные имена скриптов в нужных местах, и всё будет работать.
Быстрый ответ:

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