Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Передать переменную из javascript в php при первой загрузке

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Передать переменную из javascript в php
rafaello9
Отправлено: 26 Сентября, 2015 - 13:26:31
Post Id


Новичок


Покинул форум
Сообщений всего: 28
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




Здравствуйте!
Есть готовый код, который передает размер браузера в переменную PHP. Вся беда в том, что именно при самой первой загрузке эта самая переменная не определяется и выходит ошибка:
PHP:
скопировать код в буфер обмена
  1. Notice: Undefined index: SCREEN_WIDTH in

И только после повторной перезагрузке эта переменная начинает работать.
Пожалуйста, подскажите, как сделать так, чтобы эта переменная отрабатывала с самой первой загрузки страницы!
Вот, собственно код:
CODE (javascript):
скопировать код в буфер обмена
  1. <head>
  2. .......
  3. <script>  
  4.     widthd = $(window).width(); // ширина  
  5.     heightd = $(window).height(); // высота  
  6. document.write ('<img src="/allinclude/mycss.php?w='+widthd+'&h='+heightd+'" '+'border="0" width="1" height="1" />');
  7. </script>
  8. </head>

/allinclude/mycss.php
PHP:
скопировать код в буфер обмена
  1. <?
  2. if(!empty($_GET['w'])){$_SESSION['SCREEN_WIDTH'] = $_GET['w'];}
  3. ?>

index.php
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. if($_SESSION['SCREEN_WIDTH']){echo $_SESSION['SCREEN_WIDTH'];
  3. ..........//здесь код
  4. } ?>

Весь этот код (кроме /allinclude/mycss.php ) прописан на индексной странице и загружается одномоментно.
 
 Top
lastdays
Отправлено: 26 Сентября, 2015 - 16:24:11
Post Id



Частый гость


Покинул форум
Сообщений всего: 221
Дата рег-ции: Март 2013  


Помог: 7 раз(а)




CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. $(document).ready(function(){
  3.  
  4.  var widthd = $(window).width(); // ширина
  5.  var heightd = $(window).height(); // высота
  6.  
  7.  document.write ('<img src="/allinclude/mycss.php?w='+widthd+'&h='+heightd+'" '+'border="0" width="1" height="1" />');
  8. });
  9.  
 
 Top
Ts.Saltan
Отправлено: 26 Сентября, 2015 - 17:02:52
Post Id



Посетитель


Покинул форум
Сообщений всего: 384
Дата рег-ции: Дек. 2013  
Откуда: Belarus


Помог: 22 раз(а)




rafaello9 пишет:
при самой первой загрузке эта самая переменная не определяется

ну так правильно
сначала отрабатывает php (откуда он получит какие-то там параметры ширины/высоты?)
потом js на клиенте
далее идёт запрос с рассчитанными параметрами и только в этот момент до php доходят параметры ширина/высота


rafaello9 пишет:
if($_SESSION['SCREEN_WIDTH'])

это проверка на то, является ли переменная !== false
для проверки существования переменной надо использовать isset
 
 Top
rafaello9
Отправлено: 26 Сентября, 2015 - 18:46:27
Post Id


Новичок


Покинул форум
Сообщений всего: 28
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




Цитата:
ну так правильно
сначала отрабатывает php (откуда он получит какие-то там параметры ширины/высоты?)
потом js на клиенте
далее идёт запрос с рассчитанными параметрами и только в этот момент до php доходят параметры ширина/высота

Я так понимаю, что значит нельзя это осуществить при самой первой загрузке страницы?
 
 Top
andrewkard
Отправлено: 26 Сентября, 2015 - 19:00:23
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


Помог: 30 раз(а)




rafaello9
Поставьте правильное определение - существует ли $_SESSION['SCREEN_WIDTH'], и ошибки не будет.
PHP:
скопировать код в буфер обмена
  1.  
  2. if (isset($_SESSION['SCREEN_WIDTH'])){
  3. //Ваш код
  4. }
  5.  

А при первой загрузке PHP никак не может узнать ширину и высоту экрана, это похоже на вопрос, а если ли жизнь после ...
 
 Top
lastdays
Отправлено: 27 Сентября, 2015 - 06:28:25
Post Id



Частый гость


Покинул форум
Сообщений всего: 221
Дата рег-ции: Март 2013  


Помог: 7 раз(а)




rafaello9 пишет:
Цитата:
ну так правильно
сначала отрабатывает php (откуда он получит какие-то там параметры ширины/высоты?)
потом js на клиенте
далее идёт запрос с рассчитанными параметрами и только в этот момент до php доходят параметры ширина/высота

Я так понимаю, что значит нельзя это осуществить при самой первой загрузке страницы?


Можно.
Ajax

Получить нужные данные. Загрузить страницу и вперед.
 
 Top
Ts.Saltan
Отправлено: 27 Сентября, 2015 - 12:24:12
Post Id



Посетитель


Покинул форум
Сообщений всего: 384
Дата рег-ции: Дек. 2013  
Откуда: Belarus


Помог: 22 раз(а)




rafaello9 пишет:
Я так понимаю, что значит нельзя это осуществить при самой первой загрузке страницы?

А это и не нужно
Учитесь адаптивно верстать Улыбка
 
 Top
rafaello9
Отправлено: 27 Сентября, 2015 - 12:49:24
Post Id


Новичок


Покинул форум
Сообщений всего: 28
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




Цитата:
Учитесь адаптивно верстать

Видимо так и придется сделать, потому что другого выхода нет.
Просто я хотел не засорять индексную страницу лишним кодом, а вывести html-код меню в зависимости от ширины браузера.
То есть я хотел вот так:
index.php
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. if($_SESSION['SCREEN_WIDTH'] >500)
  3. {function_print_menu();}else{function_print_adaptive_menu();}
  4. ?>

а теперь придется так:
CODE (html):
скопировать код в буфер обмена
  1. <div class="menu">
  2. ....здесь внушительный по размерам код
  3. </div>
  4. <div class="adaptive_menu">
  5. ....здесь внушительный по размерам код
  6. </div>

style.css
CODE (htmlphp):
скопировать код в буфер обмена
  1. @media screen and (max-width:500px){
  2. .menu{display:none;}
  3. .menu_adaptive{display:block;}
  4. }
  5. @media screen and (min-width:500px){
  6. .menu{display:block;}
  7. .menu_adaptive{display:none;}
  8. }
 
 Top
DelphinPRO
Отправлено: 27 Сентября, 2015 - 13:04:56
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




rafaello9 пишет:
а теперь придется так:

Это не адаптивная верстка Улыбка

Любое меню можно перестроить одними лишь стилями, в медиа-запросах в зависимости от ширины экрана. Совсем не нужно его дублировать.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
rafaello9
Отправлено: 27 Сентября, 2015 - 13:43:02
Post Id


Новичок


Покинул форум
Сообщений всего: 28
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




Цитата:
Любое меню можно перестроить одними лишь стилями

это утверждение верно относительно более-менее простых меню.
Что не скажешь про навороченные адаптивные меню, работающие на JQuery, в то время как основное меню более простое.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB