Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.04.2025, 12:40   #1
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,985
По умолчанию Узнать текущее значение php-переменной

Здравствуйте!

Как отобразить текущее значение переменной из PHP в HTML?
Метод echo некорректен: слишком большой размер HTML-страницы формирует.
Есть другой способ, кроме echo?

Код:
<style>
#prog{
   background: #4040FF;
   border: 1px solid blue;
   border-radius: 14px;
   margin-top: 8px;
   padding: 4px 8px 4px 8px;
   color: white;
   font-size: 12pt;
   font-weight: bold;
   text-align: center;
}
</style>

<div id="prog"></div>

<script>
   function Progress(n)
   {
      n=parseInt(n);
      if (n<0)
         n=0;
      if (n>100)
         n=100;
      document.getElementById('prog').innerHTML=n+'%';
      document.getElementById('prog').style.width=n+'%';
   }
</script>

<?
   $max=1000000;
   for ($i=0; $i<$max; $i++)
   {
      $n=$i/$max*100;
      echo "<script>Progress($n);</script>\n";
   }
?>
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 08.04.2025, 13:04   #2
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,849
По умолчанию

Цитата:
Сообщение от newerow1989 Посмотреть сообщение
Метод echo некорректен: слишком большой размер HTML-страницы формирует.
echo выводит ровно столько, сколько вы указали. Допустим, если вы выводите число 1000, то размер вывода будет 4 байта (символа).
Arigato на форуме Ответить с цитированием
Старый 08.04.2025, 13:22   #3
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,985
По умолчанию

А как узнать текущее значение php-переменной без echo?
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 08.04.2025, 13:27   #4
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,849
По умолчанию

Если в браузере вывести, то echo (или его аналоги). А так можно сохранить в файл, в базу данных, передать на другой сервер...
Arigato на форуме Ответить с цитированием
Старый 09.04.2025, 09:14   #5
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,184
По умолчанию

имхо тут изначально какой то неверный подход....
1000000 раз выводить что либо .. тем более скрипт
ADSoft на форуме Ответить с цитированием
Старый 09.04.2025, 10:59   #6
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,849
По умолчанию

Я так понимаю, автор темы хочет, чтобы на странице менялось значение переменной PHP. Как в Delphi запустил цикл и смотришь на экране, как растет счетчик. Ну это типичное непонимание принципа работы клиент-серверных приложений.

Такие приложения работают по принципу "запрос - ответ". То есть браузер (являясь клиентом) формирует запрос на сервер. Далее сервер обрабатывает запрос, в частности, выполняет PHP-код. Вывод со стандартного потока вывода отправляется обратно клиенту как ответ.

Как мы видим, клиент никак не может вмешаться в процесс обработки запроса, то есть в ход выполнения PHP-кода. С точки зрения браузера никаких текущих значений php-переменных существовать не может, так как эти переменные физически расположены вообще на другом компе (ну или просто в другой области памяти, если сервер локальный). Доступа к ним у браузера нет. Браузер вообще не в курсе, от куда взялся ответ, был ли на стороне сервера php-скрипт или нет.

PHP же лишь формирует некий вывод, в данном случае просто текст. Этот текст браузер интерпретирует как html-код. То, что в него встроили JS, ни на что не влияет. JS также никак не может взаимодействовать с выполняющимся в данный момент php-кодом.

Чтобы проще понять, откройте в браузере просмотр кода страницы. Это именно то, что получил браузер, больше он ничего знать не может. От куда он это получил? А это именно то, что вывел в поток вывода скрипт на PHP. То есть просто текст, который браузер воспринимает как HTML, JS, CSS и прочее. Для PHP же не существует никаких HTML или JS.

Последний раз редактировалось Arigato; 09.04.2025 в 11:02.
Arigato на форуме Ответить с цитированием
Старый 09.04.2025, 11:31   #7
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,480
По умолчанию

Для отображения какой то динамической инфы на клиенте используются websocket, web workers, service werkers или на крайняк уж ajax запросы
uberchel вне форума Ответить с цитированием
Старый 09.04.2025, 12:15   #8
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,849
По умолчанию

uberchel, в данном случае не поможет. Все перечисленные методы также отправляют запрос на сервер и получают готовый ответ. То есть они не могут динамически получать текущее значение переменной на сервере.

Единственный вариант, как бы это можно было бы сделать (но лишено всякого смысла), это на каждой итерации цикла сохранять значение переменной в файл. А из браузера делать запрос к этому файлу. Тогда да, мы получим "текущее" значение переменной выполняющегося "в данный момент" скрипта. Почему в кавычках? Потому что на запрос требуется время, пока запросы и ответы будут гулять по сети, текущее значение переменной уже изменится.

Последний раз редактировалось Arigato; 09.04.2025 в 12:17.
Arigato на форуме Ответить с цитированием
Старый 09.04.2025, 14:32   #9
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,480
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
uberchel, в данном случае не поможет. Все перечисленные методы также отправляют запрос на сервер и получают готовый ответ. То есть они не могут динамически получать текущее значение переменной на сервере.
Не соглашусь. Вебсокеты слушают конкретный порт, то что на него сервер отправит то и получит скрипт, все придельно просто.

Совсем забыл, есть же EventSource с ним вообще пару строк кода, ТС почитай, пригодится

Последний раз редактировалось uberchel; 09.04.2025 в 14:57.
uberchel вне форума Ответить с цитированием
Старый 09.04.2025, 15:06   #10
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,849
По умолчанию

Я подозреваю, что это совсем не то, что нужно автору.
Arigato на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как узнать значение переменной из другого класса? AlenaShA Java для Web (EE, Servlet, JSP, Tomcat, Spring MVC) 0 14.11.2017 09:27
узнать текущее положение slider control enjo Win Api 7 28.11.2012 19:43
Как в макросе указывать текущее значение ячейки. Nick_odessa Microsoft Office Excel 2 04.04.2012 16:37
Как в Delphi узнать текущее UTC время (now)? Anfall Общие вопросы Delphi 6 28.10.2010 14:13
Где узнать текущее разрешение экрана? Teksa Помощь студентам 2 07.09.2007 17:19