[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Обновление таблицы.
__romka_
Есть MySQL.
Оттуда я выбираю строки и вывожу в html таблицу.
В таблицу MySQL время от времени добавляются записи.

Задача.

Добавлять к таблице новые записи.

По букварям и учебникам написал вот что:

var auto_refresh = setInterval(
function ()
{
$('#load_tweets').load('./modules/record_count.php').slideDown("slow");
}, 1000); // refresh every 10000 milliseconds


ну а потом, соответственно вывожу в блок. Все выводится... И я даже в record_count.php могу сделать так, чтобы вынимались только свежие записи. НО беда в том, что данные в блоке load_tweets обновляются полностью, а мне надо некоторое прирощение уже того что есть. Нужно чтобы в таблицу (в блок load_tweets) загружались только вновь пришедшие данные, а не заменялись.



Спустя 5 минут, 14 секунд (26.11.2010 - 11:50) Basili4 написал(а):
Делай функцию которая строит таблицу передавай ей количество как её поступать перестроить по новой, удалить записи или добавить. алгоритм довольно сложный получится
но если таблица большая то проще так и делать

Спустя 29 минут, 37 секунд (26.11.2010 - 12:20) Гость_Michael написал(а):
не используй load. А например $.post и в нем новые строки append-ом добавляй к таблице.

Спустя 5 минут, 34 секунды (26.11.2010 - 12:26) __romka_ написал(а):

var auto_refresh = setInterval(
function ()
{
$('#load_tweets').post('./modules/record_count.php').slideDown("slow");
}, 1000); // refresh every 10000 milliseconds


а с append-ом непонятно.... куда его?

попробовал вот так:

var auto_refresh = setInterval(
function ()
{
$('#load_tweets').load('./modules/record_count.php').slideDown("slow");
$('#load_tweets').append('./modules/record_count.php').slideDown("slow");
}, 1000); // refresh every 10000 milliseconds


в результате тоже самое + вместо результата работы record_count.php, выводится просто ./modules/record_count.php


и вот так:

var auto_refresh = setInterval(
function ()
{
$('#load_tweets').append('./modules/record_count.php').slideDown("slow");
}, 1000); // refresh every 10000 milliseconds


появляется новая и новая строка ./modules/record_count.php вместо результата работы этого файла

Спустя 13 минут, 50 секунд (26.11.2010 - 12:39) Adil написал(а):
Когда возвращаешь запись, записи возвращай в формате id,text
ID загоняй в массив, там будут id которые уже находятся на странице. При новом запросе записей, смотришь их id на наличие в массиве. Если нет в массиве, то append-ом добавляешь.

Спустя 27 минут, 24 секунды (26.11.2010 - 13:07) __romka_ написал(а):
кроме того - с интервалом в 1000 милисекунд нужно к базе обращаться (дергать файл record_count.php), и только в случае, если есть новая запись - добавлять ее к существующей уже таблице.

А получается так, что с интервалом в 1000 милисекунд происходит обращение к базе и перерисовывается заново вся таблица

Спустя 7 дней, 1 час, 14 минут, 16 секунд (3.12.2010 - 14:21) sharki написал(а):
__romka_ Adil привел нормальный пример, тебе придется AJAX'ом передавать значения своему файлу чтобы он проверял есть ли новые данные кроме тех которые он вывел, а передавтаь надо массив, можешь примерно вот так

$('#load_tweets').load('./modules/record_count.php', {id: massiv}).slideDown("slow");

{id: massiv} - это строка означает что он передаст файлу /modules/record_count.php данные метом POST ловить их там надо $_POST['id'] и дальше уже работать с полученным массивом

Спустя 2 дня, 21 час, 46 минут, 21 секунда (6.12.2010 - 12:07) __romka_ написал(а):
sharki

вот так

$('#load_tweets').load('./modules/record_count.php', {id: massiv}).slideDown("slow");


вобще не работает. Я хочу сказать, что даже скрипт не выполняется... тишина...

неправильно написал?

Спустя 7 минут, 45 секунд (6.12.2010 - 12:15) sharki написал(а):
{id: massiv} - ну наверное надо в скрипте объявить переменную
var massiv = // сюда помещаешь что тебе надо для передачи в фал record_count.php

А щас у тебя нету этой переменной, и следовательно ничего не передается.
Почитай в инете про JS чтобы понимать что ты вообще делаешь, а то в будущем будут трудности с этими вещами..

Спустя 14 минут, 51 секунда (6.12.2010 - 12:30) __romka_ написал(а):
сделал так:

var auto_refresh = setInterval(
function ()
var massiv = new Array();
{
$('#load_tweets').load('./modules/browse/engine_1031.php', {id: massiv}).slideDown("slow");
}, 1000);


все равно не отрабатывает.

Спустя 3 минуты, 54 секунды (6.12.2010 - 12:34) sharki написал(а):
__romka_

А что он у тебя должен получить? =) пустой массив?
Попробуй просто так сделать, чтобы понять как работает

var auto_refresh = setInterval(
function ()
var massiv = 123;
{
$('#load_tweets').load('./modules/browse/engine_1031.php', {id: massiv}).slideDown("slow");
}, 1000);

в engine_1031.php
выведи просто ответ типа

echo $_POST['id'];

Спустя 10 минут, 29 секунд (6.12.2010 - 12:44) __romka_ написал(а):
не совсем то я имею ввиду... файл .php отрабатывает.
там у меня после echo $_POST['id']; - еще проверочка есть - echo "bla-bla";

так вот без передачи переменной ", {id: massiv}" - файл отрабатывает и пишет bla-bla, а с передачей - не работает.

просто ничего не происходит (((((

Спустя 20 минут, 17 секунд (6.12.2010 - 13:05) sharki написал(а):
Ну создай новый файл test.php и впиши туда 3 строчки кода, посмотри как работает эта функция, а потом уже думать
вот мой тестовый файл, всё работает

<head>
<script
src="jquery-1.4.3.min.js" type="text/javascript"></script>
<script
type="text/javascript">
var
auto_refresh = setInterval(
function ()
{
var posts = 23434;
$('#loads').load('test.php', {id: posts}).fadeIn("slow");
}, 1000);
</script>
</head>
<html>
<body>
<div
id="loads"></div>
</body>
</html>


test.php

<?
echo $_POST['id'];
?>


Спустя 28 минут, 41 секунда (6.12.2010 - 13:33) __romka_ написал(а):
аботает!
спсб

Спустя 1 час, 27 минут, 57 секунд (6.12.2010 - 15:01) __romka_ написал(а):
а массив туда как передать? ((
у меня вот что:

var auto_refresh = setInterval(
function ()
{
var posts = [];
posts[0] = 'a';
posts[1] = 'b';
posts[2] = 'c';
$('#load_tweets').load('./modules/browse/engine_1031.php', {id: posts}).fadeIn(\"slow\");
}, 1000);


Приходит только последнее значение массива. Только 'c'.
И размер массива (измерял) = 1

Спустя 14 минут, 31 секунда (6.12.2010 - 15:16) sharki написал(а):

Спустя 19 часов, 15 минут, 59 секунд (7.12.2010 - 10:32) __romka_ написал(а):
прочитал..
и попробовал несколькими способами.

var auto_refresh = setInterval(
function ()
{
/*1 var users = new Array('Artem', 'Irina', 'Sergey', 'Boris'); */

/*2 var users = new Array();
users[0] = "Artem";
users[1] = "Irina";
users[2] = "Sergey";
users[3] = "Boris"; */

/*3 var users = ["Artem", "Irina", "Sergey", "Boris"]; */


$('#load_tweets').load('./modules/browse/engine_1031.php', {id: users}).fadeIn('slow');
}, 1000);


так вот, если измерить длину массива или вывести массив прямо на этой странице, без передачи - все ок.

А вот в скрипту engine_1031.php массив не передается. В той форме, в которой сейчас написано, приходит:

Array
(
[0] => Boris
)


То есть передается только последний элемент массива.
Видимо неправильно передается... как быт?

Спустя 1 час, 13 минут, 58 секунд (7.12.2010 - 11:46) sharki написал(а):
попробуй вот так, только раскоменть там все

$('#load_tweets').load('./modules/browse/engine_1031.php', {id: users[]}).fadeIn('slow');

Спустя 12 минут, 41 секунда (7.12.2010 - 11:58) __romka_ написал(а):
Не получается. Не отрабатывает вобще.

и так:

$('#load_tweets').load('./modules/browse/engine_1031.php', {id: users[]}).fadeIn('slow');


ни так:

$('#load_tweets').load('./modules/browse/engine_1031.php', {id[]: users}).fadeIn('slow');

и вот так:

$('#load_tweets').load('./modules/browse/engine_1031.php', {id[]: users[]}).fadeIn('slow');

Спустя 28 минут, 34 секунды (7.12.2010 - 12:27) sharki написал(а):
Эмс, ты чет тупишь походу, я щас попробовал сделать вот так

<head>
<script
src="jquery-1.4.3.min.js" type="text/javascript"></script>
<script
type="text/javascript">
var
auto_refresh = setInterval(
function ()
{

var users = new Array();
users[0] = "Artem";
users[1] = "Irina";
users[2] = "Sergey";
users[3] = "Boris";


$('#loads').load('test.php', {id: users}).fadeIn("slow");
}, 1000);
</script>
</head>
<html>
<body>
<div
id="loads"></div>
</body>
</html>



и вывел результат

<?
print_r($_POST['id']);
?>





Ответ пришел вот такой на страничку

Array ( [0] => Artem [1] => Irina [2] => Sergey [3] => Boris )

Спустя 21 час, 37 минут, 20 секунд (8.12.2010 - 10:04) __romka_ написал(а):
все ок. спасибо!

не работало вот почему: у меня Apache, база и все дела крутятся на одной машине, а тестирую я это все удаленно и в адресной строке - пишу IP машины на которой все установлено.

Видимо из за настроек Апача (который отправлял HTTP трафик на локалхост) из за которого и не передавался массив полностью. Сначала подумал - перенастроить Апач, чтобы он отправлял все не на локалхост, а на IP машины на которую он установлен. Но этот вариант отпадает. Потому что таких систем очень много и это непрактично.. IPезде разные. не автоматизируешь.

Буду пробовать 1) без Qury 2) вобще без асинхронной обработки ((((((((((((((((((((((((

Спустя 1 день, 2 часа, 56 минут, 37 секунд (9.12.2010 - 13:01) __romka_ написал(а):

$('#loads').load('test.php', {id: users}).fadeIn("slow");


Возсожно ли здесь передать несколько переменных, а не только id?
массив не предлагать )

Спустя 36 минут, 17 секунд (9.12.2010 - 13:37) __romka_ написал(а):
Вопрос снят. оказалось - возможно. вот так:


$('#loads').load('./modules/browse/engine_1031.php', {id: users, id2: users}).fadeIn(\"slow\");


Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.