Есть таблица клиентов в БД, которая постоянно кем-то изменяется. Поэтому вывод на экран средствами php - не подходит. Нужно, чтобы народ видел все изменения сразу же, без перезагрузки.
Подскажите пожалуйста как, с помощью чего это лучше реализовать. Может ссылочку подкиньте, где хорошо описано. Примерам может какой есть.
Спасибо.
Спустя 5 часов, 43 минуты, 9 секунд (16.06.2010 - 06:42) Michael написал(а):
AJAX.
Спустя 2 часа, 25 минут, 19 секунд (16.06.2010 - 09:07) igor717 написал(а):
А можно ли по подробнее...
Спустя 13 минут, 27 секунд (16.06.2010 - 09:20) igor717 написал(а):
О наткнулся на что-то подобное на этом форуме:
Здесь походу каждые 0.8 секунды вызывается php скрипт который достает содержимое из БД или нет....
Если не сложно, объясните пожалуйста, как этот маленький кусочек кода работает и как его прикрутить (к id='upd_message'?) или как. Просто в js ну вообще не секу.
Спасибо.
<script type="text/javascript">
function upd_message() {
{
$.ajax({
url: "head.php",
cache: false,
success: function(html){
$("#head").html(html);
}
});
}
}
setTimeout(upd_message, 800)
</script>
Здесь походу каждые 0.8 секунды вызывается php скрипт который достает содержимое из БД или нет....
Если не сложно, объясните пожалуйста, как этот маленький кусочек кода работает и как его прикрутить (к id='upd_message'?) или как. Просто в js ну вообще не секу.

Спасибо.
Спустя 38 минут, 19 секунд (16.06.2010 - 09:59) Basili4 написал(а):
Это не чистый js это JQuery все очень просто насервер отпровляется требование запустить скрипт head.php результат работы скрипта передатется в эту ф-цию function(html){
$("#head").html(html);
Она находит селектор #head и вставлеет html код внего а setTimeout(upd_message, 800) устанавливает таймер на 8 сек. через которые снова запустится upd_message все
$("#head").html(html);
Она находит селектор #head и вставлеет html код внего а setTimeout(upd_message, 800) устанавливает таймер на 8 сек. через которые снова запустится upd_message все
Спустя 4 минуты, 32 секунды (16.06.2010 - 10:03) igor717 написал(а):
А-а-а, спасибо...
Так значит подключать ее нужно к #head?
Так значит подключать ее нужно к #head?
Спустя 4 минуты, 20 секунд (16.06.2010 - 10:07) igor717 написал(а):
И все равно не совсем понятно по поводу подключения.
Вот у меня есть контроллер, который выводит таблицу из БД, там я указываю именно его ("head.php"), но этот контроллер впринцепе и выводит все в шаблон. Тогда нужно ли мне передавать результат работы скрипта?
Вот у меня есть контроллер, который выводит таблицу из БД, там я указываю именно его ("head.php"), но этот контроллер впринцепе и выводит все в шаблон. Тогда нужно ли мне передавать результат работы скрипта?
Спустя 55 секунд (16.06.2010 - 10:08) Michael написал(а):
С jQuery конечно все попроще, но если на странице больше js-действий не намечается, то экономнее для тебя использовать например этот класс. Там объяснено как.
А логика та же, только не setTimeout, а setInterval чтобы повторялось.
Или вот так закольцуй:
- все таки ответ с сервера тоже какое то время идет.
А логика та же, только не setTimeout, а setInterval чтобы повторялось.
Или вот так закольцуй:
success: function(html){
$("#head").html(html);
setTimeout(upd_message, 800)
}
- все таки ответ с сервера тоже какое то время идет.
Цитата |
Так значит подключать ее нужно к #head? |
#head - это обозначение элемента, в котором будет меняться результат выполнения запроса. Можешь любой который у тебя на странице написать.
Спустя 5 минут, 50 секунд (16.06.2010 - 10:14) Michael написал(а):
Цитата (igor717 @ 16.06.2010 - 09:07) |
И все равно не совсем понятно по поводу подключения. Вот у меня есть контроллер, который выводит таблицу из БД, там я указываю именно его ("head.php"), но этот контроллер впринцепе и выводит все в шаблон. Тогда нужно ли мне передавать результат работы скрипта? |
если php-скрипт к которому ты обращаешся служит не только для аякс-запросов, то в нем нужно создать отдельную ветку для обработки запроса. Например по условию isset($_POST['from_ajax'])
При этом
$.ajax({
url: "head.php",
cache: false,
data: "from_ajax=1",
и в этой ветке отдавай уже только то что надо. Можно для html() операции просто нужный кусок передать.
Если использовать jQuery имеется еще удобный метод load - элемент подгружает себе данные с сервера - погугли, там легко.
Спустя 9 минут, 11 секунд (16.06.2010 - 10:23) igor717 написал(а):
Вообще мне нужно сделать вывод пользователей, они могут и быть, и не быть, и статус их может поменяться. И этот блок должен как-то или отслеживать эти изменения и уже потом допустим перезагружать данные из БД (если это реально конечно - но это идеал), или же просто через определенное количество времени перезагружать данные из БД.
Вот что мне лучше поискать? И как лучше сделать, как Вы считаете?
Вот что мне лучше поискать? И как лучше сделать, как Вы считаете?
Спустя 34 минуты, 31 секунда (16.06.2010 - 10:58) igor717 написал(а):
Ладно коче туго у меня с пониманием js...
Поэтому прошу помощи.
Вот код файла ну к примеру все того же "head.php", который просто выводит содержимое таблицы из БД:
Вот как сделать так, чтобы он запускался каждые 10 секунд без перезагрузки страницы?
Поэтому прошу помощи.
Вот код файла ну к примеру все того же "head.php", который просто выводит содержимое таблицы из БД:
echo '<table><tr><td>Поле</td>';
$res = mysqlQuery("SELECT * FROM 'table`");
while($row = mysql_fetch_assoc($res))
echo '<tr><td>' . $row['name'] . '</td></tr>';
echo '</table>';
Вот как сделать так, чтобы он запускался каждые 10 секунд без перезагрузки страницы?
Спустя 5 минут, 40 секунд (16.06.2010 - 11:04) Basili4 написал(а):
это надо делать на стороне клиента на серверной стороне тоько через cron
Спустя 3 минуты, 42 секунды (16.06.2010 - 11:07) Michael написал(а):
Цитата |
Вот как сделать так, чтобы он запускался каждые 10 секунд без перезагрузки страницы? |
ну выше ты же сам нашел код как это сделать ... И дальше тебе уточняли.
Спустя 10 минут, 48 секунд (16.06.2010 - 11:18) igor717 написал(а):
А-а, так значит он подойдет!!! Это радует
.
Значит здесь url: "head.php", я должен указать файл, который будет принудительно запускаться, а здесь
- это обертка. Я присваиваю какому-нибудь <div id="head"> и в не и будет выводится весь результат работы.
ТАК?

Значит здесь url: "head.php", я должен указать файл, который будет принудительно запускаться, а здесь
success: function(html){
$("#head").html(html);
- это обертка. Я присваиваю какому-нибудь <div id="head"> и в не и будет выводится весь результат работы.
ТАК?

Спустя 3 минуты, 37 секунд (16.06.2010 - 11:22) Basili4 написал(а):
БИНГО Ты это сделал совершено верно
Спустя 9 минут, 24 секунды (16.06.2010 - 11:31) igor717 написал(а):

Спасибо всем большое!!!
Спустя 5 часов, 28 минут, 9 секунд (16.06.2010 - 16:59) igor717 написал(а):
Блин что-то не хочет она работать, какой url прописывается если файлы лежат в разных директориях?
я имею виду относительный, абсолютный, какой вид он должен иметь?
url: "head.php",
я имею виду относительный, абсолютный, какой вид он должен иметь?
Спустя 1 минута, 10 секунд (16.06.2010 - 17:00) Basili4 написал(а):
это от корня
url: "/каталог/еще один каталог/head.php"
url: "/каталог/еще один каталог/head.php"
Спустя 48 секунд (16.06.2010 - 17:01) igor717 написал(а):
блин да вроде все верно тогда...
Спустя 5 минут, 34 секунды (16.06.2010 - 17:07) Michael написал(а):
../ - подняться на папку выше
Спустя 12 минут, 32 секунды (16.06.2010 - 17:19) igor717 написал(а):
у меня это должно срабатывать в админке. Так относительно одминки и нужно прописывать же?
Спустя 5 минут, 32 секунды (16.06.2010 - 17:25) tomash написал(а):
Цитата |
у меня это должно срабатывать в админке. Так относительно одминки и нужно прописывать же? |
относительно корня сайта!
Спустя 5 минут, 3 секунды (16.06.2010 - 17:30) igor717 написал(а):
В общем приведу структуру:
Подскажите, плиз, как должна выглядеть ссылка
www
index.php
//skins
//tpl
//admin
index.tpl (здесь вызываем js)
//js
refresh.js (ненавистный js-файл)
//admin
insex.php
//client
list.php (надо вызвать этот файл)
Подскажите, плиз, как должна выглядеть ссылка
Спустя 8 минут (16.06.2010 - 17:38) tomash написал(а):
../../admin/client/list.php
дето так ))))
дето так ))))
Спустя 2 минуты, 1 секунда (16.06.2010 - 17:40) igor717 написал(а):
Спасибо щас попробую у меня просто другой js файл паше с ссылкой /skins/images/down.gif
Спустя 3 минуты, 42 секунды (16.06.2010 - 17:44) igor717 написал(а):
Не не работает может дело не в ссылке а в самом файле
Вот сам вывод работы php скрипта
Из-за чего он еще может не работать?
function refresh() {
{
$.ajax({
url: "../../admin/client/list.php",
cache: false,
success: function(html){
$("#rowsClient").html(html);
}
});
}
}
setTimeout(refresh, 800)
Вот сам вывод работы php скрипта
<div id="rowsClient"><?php echo $rows_client; ?></div>
Из-за чего он еще может не работать?
Спустя 15 минут, 12 секунд (16.06.2010 - 17:59) tomash написал(а):
попробуйте ../../../admin/client/list.php путь нужно указать относительно index.tpl
Спустя 31 минута, 21 секунда (16.06.2010 - 18:30) Michael написал(а):
Вот от корня пиши (как Basili4 советовал)
/admin/client/list.php
Спустя 15 часов, 47 минут, 19 секунд (17.06.2010 - 10:17) igor717 написал(а):
Блин, мужики не один вариант не работает, думаю дело не в ссылках. А остальное у меня правильно сделано?
Я уже почти этот модуль закончил, а из-за 5 строчек js-кода шляпа получается...
Я уже почти этот модуль закончил, а из-за 5 строчек js-кода шляпа получается...
Спустя 26 минут, 20 секунд (17.06.2010 - 10:44) tomash написал(а):
igor717
может проблемы с правами?
может проблемы с правами?
Спустя 11 минут, 47 секунд (17.06.2010 - 10:56) Michael написал(а):
в FireBug на вкладке сеть показываются все твои запросы и красным выделены ошибочные. Вот и посмотри что не так в твоем ajax - приложении.
Спустя 59 секунд (17.06.2010 - 10:57) igor717 написал(а):
ага щас гляну
а что может быть с правами?
а что может быть с правами?
Спустя 20 минут, 12 секунд (17.06.2010 - 11:17) igor717 написал(а):
$ is not defined
[Break on this error] $.ajax({
[Break on this error] $.ajax({
function refresh() {
{
$.ajax({
url: "/admin/client/read_controller_list.php",
cache: false,
success: function(html){
$("#rowsClient").html(html);
}
});
}
}
setTimeout(refresh, 800)
Спустя 4 минуты, 49 секунд (17.06.2010 - 11:22) Michael написал(а):
jQuery подключи !!!!!
Спустя 54 секунды (17.06.2010 - 11:22) igor717 написал(а):
???
Спустя 9 минут, 34 секунды (17.06.2010 - 11:32) igor717 написал(а):
Все ясно
. Ну не работал я с этой фигней никогда
. Спасибо за помощь и звените, что отнял время.


Спустя 49 минут, 25 секунд (17.06.2010 - 12:21) igor717 написал(а):
Блин короче скачал установил библиотеку. Все заработало.
Но теперь она масляет каждую секунду целеком главную страницу и выводит правда именно в тот блок что и нужно (хотя файл php который подключая в js должен выводить одну табличку)
Почему так происходит?
Но теперь она масляет каждую секунду целеком главную страницу и выводит правда именно в тот блок что и нужно (хотя файл php который подключая в js должен выводить одну табличку)
Почему так происходит?
Спустя 56 минут, 50 секунд (17.06.2010 - 13:18) Basili4 написал(а):
Потомучто скрипт который ты вызываеш пишет в поток твою главную страничку ты сделай так чтобы он писал только табличку
Спустя 1 час, 1 минута, 59 секунд (17.06.2010 - 14:20) igor717 написал(а):
Всмысле отдельный php файл который больше нигде вызываться не будет?
Спустя 11 минут (17.06.2010 - 14:31) tomash написал(а):
Цитата (Michael @ 16.06.2010 - 07:14) |
если php-скрипт к которому ты обращаешся служит не только для аякс-запросов, то в нем нужно создать отдельную ветку для обработки запроса. Например по условию isset($_POST['from_ajax']) |
Спустя 3 минуты, 52 секунды (17.06.2010 - 14:35) igor717 написал(а):
Я создал отдельный php файл, но он все равно пихает в этот div всю страничку целиком
Спустя 13 минут, 16 секунд (17.06.2010 - 14:48) igor717 написал(а):
Может я вообще смсл этой функции не особо понимаю:
Подключаем php файл -> он выполняется -> из него копируются весь html код -> и вставляется в div с определенным id. Действие выполняется каждые n секунд.
???????
tomash, так что мне этот скрипт нужно в этот if засунуть?
Подключаем php файл -> он выполняется -> из него копируются весь html код -> и вставляется в div с определенным id. Действие выполняется каждые n секунд.
???????
tomash, так что мне этот скрипт нужно в этот if засунуть?
Спустя 21 минута, 32 секунды (17.06.2010 - 15:10) igor717 написал(а):
Заметил фигню, если вообще никакой файл не указывать то она тоже весь контент засовывает в этот див
Спустя 10 часов, 20 минут, 24 секунды (18.06.2010 - 01:30) igor717 написал(а):
Нашел еще один способ. Эта функция подключает list.php в div с id rowsClient
Но результат почему - то тот же вместо таблицы в див лезит вся страница. Да и еще почему-то ей вообще без разницы какой путь и какой файл указываешь (php) - результат один и тот же.
Что она вообще от куда берет тогда?
function ref() {
{
$("#rowsClient").load("list.php");
}
}
setTimeout(ref, 1000)
Но результат почему - то тот же вместо таблицы в див лезит вся страница. Да и еще почему-то ей вообще без разницы какой путь и какой файл указываешь (php) - результат один и тот же.
Что она вообще от куда берет тогда?