Автоматическое обновление ячейки таблицы

mychatik

Support
Команда форума
Регистрация
26.05.15
Сообщения
531
Реакции
463
Баллы
63
У меня в чате сделан автоматический вывод графника диджея, ведущего эфир, возле плеера в top.php.

Всё работает идеально, за исключением одного неудобства.
Ник диджея "висит" и после выхода его с радио. Чтобы увидеть новую картинку - нужно обновить страницу, или фрейм.
Но это очень неудобно, так как вместе с фреймом обновляется и само радио, выключаясь при этом.
Разметка производится подобным образом:
HTML:
<table width="300" border="0" cellspacing="0" cellpadding="0">
 <tr>
  <td rowspan="2" align="center" valign="middle" width="131">
<!-- BEGINS: RADIO PLAYER CODE -->
<script type="text/javascript">
< ... тут код плеера ... >
</script>
<!-- ENDS: RADIO PLAYER CODE -->
  </td>
  <td rowspan="2">&nbsp;</td>
  <td align="middle">
    &nbsp; (ячейка зарезервирована для кнопки стола заказов)
  </td>
 </tr>
 <tr>
<td align="middle">
 <?php
   include ("../../Globus_FM/dj_vars.php");
   echo $djnick;
  ?>
  </td>
 </tr>
</table>

Задача - обновлять только ячейку с
PHP:
<?php
   include ("../../Globus_FM/dj_vars.php");
   echo $djnick;
  ?>

Как это сделать грамотно?
Перелопатил кучу информации, но везде идёт описание обновления из MySQL. А мне нужно не это.
Нашёл только такой совет:
Присвоить ячейке id и записать
PHP:
     jquery
    $('#cell_id3').html('new value');
Но что-то нифига в этом не пойму...

Сам додумался только до того, чтобы в ячейку впихнуть фрейм и в нём обновлять содержимое.
Сделать что-то типа такого:
PHP:
<td align="middle">
<iframe src="../../Globus_FM/dj_nik.html" frameborder="0" scrolling="no"></iframe>
  </td>


А сам dj_nik.html сделать типа такого:
HTML:
<html>
<head>
  <title>Ник диджея</title>
<meta http-equiv="refresh" content="120; url=<?php echo $chat_url."Globus_FM/dj_nik.html?rand=".rand(); ?>"> 
</head>
<body>
<?php
   include ("../../Globus_FM/dj_vars.php");
   echo $djnick;
  ?>
</body>
</html>


Этот код я не тестировал. Мне он что-то не очень нравится...
Элегантней смотрится через jquery. Но никак не найду, как это сделать.
А вообще, как правильнее решить эту задачу?
 
Последнее редактирование:

stream

Support
Команда форума
Регистрация
09.09.14
Сообщения
1.014
Реакции
674
Баллы
113
У меня в чате сделан автоматический вывод графника диджея, ведущего эфир, возле плеера в top.php.

Всё работает идеально, за исключением одного неудобства.
Ник диджея "висит" и после выхода его с радио. Чтобы увидеть новую картинку - нужно обновить страницу, или фрейм.
Но это очень неудобно, так как вместе с фреймом обновляется и само радио, выключаясь при этом.
Разметка производится подобным образом:
HTML:
<table width="300" border="0" cellspacing="0" cellpadding="0">
 <tr>
  <td rowspan="2" align="center" valign="middle" width="131">
<!-- BEGINS: RADIO PLAYER CODE -->
<script type="text/javascript">
< ... тут код плеера ... >
</script>
<!-- ENDS: RADIO PLAYER CODE -->
  </td>
  <td rowspan="2">&nbsp;</td>
  <td align="middle">
    &nbsp; (ячейка зарезервирована для кнопки стола заказов)
  </td>
 </tr>
 <tr>
<td align="middle">
 <?php
   include ("../../Globus_FM/dj_vars.php");
   echo $djnick;
  ?>
  </td>
 </tr>
</table>

Задача - обновлять только ячейку с
PHP:
<?php
   include ("../../Globus_FM/dj_vars.php");
   echo $djnick;
  ?>

Как это сделать грамотно?
Перелопатил кучу информации, но везде идёт описание обновления из MySQL. А мне нужно не это.
Нашёл только такой совет:
Присвоить ячейке id и записать
PHP:
     jquery
    $('#cell_id3').html('new value');
Но что-то нифига в этом не пойму...

Сам додумался только до того, чтобы в ячейку впихнуть фрейм и в нём обновлять содержимое.
Сделать что-то типа такого:
PHP:
<td align="middle">
<iframe src="../../Globus_FM/dj_nik.html" frameborder="0" scrolling="no"></iframe>
  </td>


А сам dj_nik.html сделать типа такого:
HTML:
<html>
<head>
  <title>Ник диджея</title>
<meta http-equiv="refresh" content="120; url=<?php echo $chat_url."Globus_FM/dj_nik.html?rand=".rand(); ?>">
</head>
<body>
<?php
   include ("../../Globus_FM/dj_vars.php");
   echo $djnick;
  ?>
</body>
</html>


Этот код я не тестировал. Мне он что-то не очень нравится...
Элегантней смотрится через jquery. Но никак не найду, как это сделать.
А вообще, как правильнее решить эту задачу?

Глянь эту штуку - VOC++ BSE - Количество писем в оффлайн РМ (16)
...Когда-то переделывал этот мод для вывода списка присутствующих в чате - автоматически обновляется) И на денвере использовал, чтобы не морочиться - вывод сообщений общего канала)
 

Rain

Администратор
Команда форума
Регистрация
04.09.14
Сообщения
370
Реакции
321
Баллы
63
Возраст
30
JS [dj_layer - ID ячейки или div-a или еще какого элемента] (нужен jQuery)
Код:
function refresh_dj()
{
$.ajax({
  method: "POST",
  url: "/path/to/script.php",
  data: { action: "refresh" }
})
  .done(function( msg ) {
    $('#dj_layer').html(msg);
  });
}
setInterval(refresh_dj, 1000)

PHP
PHP:
<?php
if(isset($_POST['action']) && $_POST['action'] == "refresh")
{
echo '<img src="/path/to/dj_image.jpg" />';
}

Код написан на коленке.
 
Сверху Снизу