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 :: спасите!!!

 PHP.SU

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


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

> Без описания
Вездеход
Отправлено: 11 Января, 2010 - 19:22:33
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 820
Дата рег-ции: Апр. 2008  
Откуда: Россия


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




так как не знаю аякс и жаваскрипты прошу помощи в написании системы...

цель такая:
есть ХХ человек (от 3 до 10). они заходят на сайт и нажимают кнопку. после этого в базу вписывается что они нажали кнопку, и им выдается страница с сообщением, что типа еще осталось ждать ХХ человек, которые не нажали данную кнопку.
сделать это как вы понимаете не состовляет проблемы...
проблема в том, что нужно сделать автоматизацию вывода инфы, т.е. чтобы человеку выдавалось это сообщение до тех пор, пока все посетители не нажмут кнопку. а когда кнопку нажали все - выполняется скрипт и у всех людей статус обновляется, после чего соответственно у всех должна страница обновиться и кнопка снова станет активной.
и так до бесконечности...

по задумке - будет скрипт (страница php) которая будет возвращать клиентскому скрипту результат - сколько еще осталось не нажатых кнопок, и если значение = 0 -> страница обновляется. и соответственно необходимо проверять эти значения например раз в 3 секунды.

кто нибудь может подсказать как это чудо реализовать???


-----
о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
 
 Top
KuziaM
Отправлено: 11 Января, 2010 - 23:39:17
Post Id


Новичок


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


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




Самое простое обновлять страницу каждые 3 секунды целиком :
в <head> написать
CODE (html):
скопировать код в буфер обмена
  1. <meta http-equiv="refresh" content="3; url=index.php">



если же надо именно аякс то у меня так

CODE (html):
скопировать код в буфер обмена
  1. <script>  
  2.  
  3. function showSumm(){
  4.         aurl="getsum.php";
  5. /**/
  6.    jQuery.ajax({
  7.                 url: aurl,          
  8.                 success:
  9.                 function(text){
  10.                         $("input#inp_Summ").val(text);
  11.                         //document.myorm.Summ.value = text;
  12.                 }
  13.     });
  14. /**/
  15. }
  16.  
  17. // Функция аналогична событию onload
  18. $(document).ready(
  19.         function(){
  20.                 showSumm();
  21.                 setInterval('showSumm()',3000);  //опрашиваю раз в 3 секунды
  22.                 setInterval('checkreq()',3000);  //делаю проверку раз в 3 секунды.
  23.         }
  24. );
  25.  
  26. // функция checkreq() выполняет логику страницы на основе значения инпута.
  27.  </script>
  28.  
  29. <form name="myorm" method="POST">
  30.                 <input type="hidden" name="Summ" id="inp_Summ" value="0">
  31. </form>

(Отредактировано автором: 12 Января, 2010 - 00:09:50)

 
 Top
Viper
Отправлено: 12 Января, 2010 - 07:43:51
Post Id



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


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


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




KuziaM мета-редирект может быть отключен фаерволом или запрещен браузером у клиента.

А зачем
Цитата:

showSumm();
setInterval('showSumm()',3000); //опрашиваю раз в 3 секунды
setInterval('checkreq()',3000); //делаю проверку раз в 3 секунды.


не проще ли одну функцию и получать не ajax, а json и разобрав его выдавать нужный ответ.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Вездеход
Отправлено: 12 Января, 2010 - 11:10:24
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 820
Дата рег-ции: Апр. 2008  
Откуда: Россия


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




а можно поподробнее? )

KuziaM
т.е раз в 3 секунды вызывается функция showSumm()
и соответственно выполняется сбор данных из файлы и вписывание их куда мне необходимо.

а в функцию checkreq() нужно вписать собственно сам обработчик да?
а как примерно будет выглядеть функция проверяющая и выводящая текст1 если значение=1 и текст2 если значение равно 0


-----
о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
 
 Top
Вездеход
Отправлено: 12 Января, 2010 - 20:41:47
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 820
Дата рег-ции: Апр. 2008  
Откуда: Россия


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




блин, неужели никто не поможет? (


-----
о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
 
 Top
KuziaM
Отправлено: 13 Января, 2010 - 03:08:50
Post Id


Новичок


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


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




Viper пишет:
мета-редирект может быть отключен фаерволом или запрещен браузером у клиента.

ну, да , как и джаваскрипт,....значит пользователь не получит требуемого функционала, о чем неприменно надо написать в инструкции..

Viper пишет:
А зачем
Цитата:

showSumm();
setInterval('showSumm()',3000); //опрашиваю раз в 3 секунды
setInterval('checkreq()',3000); //делаю проверку раз в 3 секунды.


не проще ли одну функцию и получать не ajax, а json и разобрав его выдавать нужный ответ.

(Исторически сложилось) никто не говорил, что ajax единственный источник информации, чтобы каждый раз не вызывать функцию проверки, как-то так..
(Добавление)
Вездеход
Например, что-то вроде:
CODE (html):
скопировать код в буфер обмена
  1.  
  2. function checkreq() {
  3.                 sval = document.myorm.Summ.value; // текст
  4.                 psum=parseInt(sval); //сумма
  5.                 if (psum< число ){
  6.                         $("#div_Summ").text(sval); // Вывод значения
  7.                 }
  8.                 else {
  9.                         $("#div_Summ").text('та-да-ам');
  10.                 }
  11.         }
  12.  


на странице должен быть определен элемент с id="div_Summ"
 
 Top
Вездеход
Отправлено: 14 Января, 2010 - 08:35:30
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 820
Дата рег-ции: Апр. 2008  
Откуда: Россия


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




ну вот теперь в принципе понял...

поясните плз еще зачем нужны вот эти строки:

document.myorm.Summ.value = text;

sval = document.myorm.Summ.value; // текст

в 1й я так понимаю мы кому то присваиваем значение, и потом его получаем в другой функции.
а вот зачем такое длинное название?


-----
о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
 
 Top
Ch_chov
Отправлено: 14 Января, 2010 - 09:00:54
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


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




Вездеход пишет:
а вот зачем такое длинное название

Это не название, это узел DOM элемента. Т.е. у тебя на странице должна быть форма с атрибутом name="myorm", а в ней элемент с атрибутом name="Summ".
KuziaM пишет:
<form name="myorm" method="POST">
<input type="hidden" name="Summ" id="inp_Summ" value="0">
</form>


На jQuery можно просто написать
CODE (javascript):
скопировать код в буфер обмена
  1. $('#inp_Summ').val()
 
 Top
Вездеход
Отправлено: 14 Января, 2010 - 10:43:58
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 820
Дата рег-ции: Апр. 2008  
Откуда: Россия


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




написал так:
CODE (javascript):
скопировать код в буфер обмена
  1. function(text){
  2. $("#inp_Summ").val(text);
  3. }

чтобы в див, с идишнегом нужным загонялось значение.

вывожу данные соответственно:
CODE (html):
скопировать код в буфер обмена
  1. результат1: <div id="inp_Summ"></div>


не работает... как можно узнать почему?
сейчас все работает только через форму (input), что мне не удобно...

(Отредактировано автором: 14 Января, 2010 - 10:44:28)



-----
о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
 
 Top
Viper
Отправлено: 14 Января, 2010 - 13:00:43
Post Id



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


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


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




Вездеход а он его и не загонит. val используется для input, а чтобы втулить текст между тегами пользуют text(val)


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Вездеход
Отправлено: 14 Января, 2010 - 14:08:04
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 820
Дата рег-ции: Апр. 2008  
Откуда: Россия


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




результирующий скрипт:
CODE (javascript):
скопировать код в буфер обмена
  1. <script>  
  2. result_number = '';
  3.         function show(){
  4.                 jQuery.ajax({
  5.                         url: "aa/moves.php",          
  6.                         success: function(text){ result_number = text; }
  7.                 });
  8.                
  9.                 $("#number").text(result_number);
  10.                
  11.                 presult_number=parseInt(result_number);
  12.                
  13.                 if (presult_number<50 ){ $("#msg").text('число меньше 50'); }
  14.                 else { $("#msg").text('условие работает!!!'+result_number); }
  15.         }
  16.  
  17.        
  18.         $(document).ready(
  19.                 function(){ setInterval('show()',5000); }
  20.         );
  21. </script>

вывод сообщения
CODE (html):
скопировать код в буфер обмена
  1. число: <span id="number"></span><br>
  2. сообщение: <span id="msg"></span>


все работае, но не сразу так сказать
возникла проблема с обработкой результата.
сразу же число и сообщение - пустые.
и только после обновления уже реально начинается работа.
вызов функции show() писал перед или после setInterval а так же пробовал перед $(document).ready
результат одинаковый - не срабатывает...


-----
о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
 
 Top
vitaliy_mad
Отправлено: 14 Января, 2010 - 14:12:44
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


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




Вездеход
Вездеход пишет:
jQuery.ajax({
url: "aa/moves.php",
success: function(text){ result_number = text; }
});

$("#number").text(result_number);

Проблема, думаю, здесь: функция ajax не останавливает выполнение скрипта... он продолжает работать... т.е. запрос к url: "aa/moves.php" пошел, и не дожидаясь ответа выполняется следующая строка, где result_number - имеет нулевое или рандомное значение.
 
 Top
Вездеход
Отправлено: 14 Января, 2010 - 14:14:31
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 820
Дата рег-ции: Апр. 2008  
Откуда: Россия


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




как решить? )


-----
о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
 
 Top
vitaliy_mad
Отправлено: 14 Января, 2010 - 14:16:18
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


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




Вот это:
PHP:
скопировать код в буфер обмена
  1. presult_number=parseInt(result_number);
  2.                
  3.                 if (presult_number<50 ){ $("#msg").text('число меньше 50'); }
  4.                 else { $("#msg").text('условие работает!!!'+result_number); }

перенести в тело функции обработки ответа. то есть в :
CODE (text):
скопировать код в буфер обмена
  1. success: function(text){ result_number = text; }
 
 Top
Вездеход
Отправлено: 14 Января, 2010 - 14:37:33
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 820
Дата рег-ции: Апр. 2008  
Откуда: Россия


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




да, вроде помогло
спасибо =)
пока надеюсь все...

vitaliy_mad
а можно вам в аську сразу писать? чтобы немного ускорить процесс если тут еще вопросы будут

пока итоговый вариант кода такой:

CODE (javascript):
скопировать код в буфер обмена
  1. <script>  
  2.         function show(){
  3.                 jQuery.ajax({
  4.                         url: "aa/moves.php",
  5.                         cache: false,        
  6.                         success: function(text){
  7.                                 $("#number").text(text);
  8.                                 prn=parseInt(text);
  9.                                 if(presult_number<30) { $("#msg").text('получено мелкое число!!! - ' + prn); }
  10.                                 else {
  11.                                         if(presult_number<60) { $("#msg").text('получено среднее число!!! - ' + prn); }
  12.                                         else { $("#msg").text('получено огромное число!!! - ' + prn); }
  13.                                 }
  14.                         }
  15.                 });
  16.         }
  17.         $(document).ready(
  18.                 function(){ show(); setInterval('show()',5000); }
  19.         );
  20. </script>

(Отредактировано автором: 14 Января, 2010 - 14:39:35)



-----
о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB