За последние 24 часа нас посетили 17703 программиста и 1663 робота. Сейчас ищут 925 программистов ...

Форум!

Тема в разделе "JavaScript и AJAX", создана пользователем Panich, 20 дек 2011.

  1. Panich

    Panich Активный пользователь

    С нами с:
    10 май 2011
    Сообщения:
    548
    Симпатии:
    0
    Адрес:
    Ростов-Москва
    Доброго времени суток!Очередной раз нуждаюсь в Вашей помощи,Форумчане!
    Соответственно php:
    PHP:
    1. <?php
    2. include ("bd_chat.php");
    3. include ("bd.php");
    4. isset($_GET['last_id']) || die();
    5. mysql_query("SET NAMES 'utf8'");
    6. $id = (int) $_GET['last_id'];
    7. if (empty($id))
    8. {
    9. $sql = "SELECT `c`.*, `u`.`name`, `u`.`age` FROM `chat` as `c`, `users` as `u` WHERE `c`.`user_id` = `u`.`id` ORDER BY `c`.`idchat` DESC LIMIT 10";
    10. }
    11. else
    12. {
    13. $sql = "SELECT `c`.*, `u`.`name`, `u`.`age` FROM `chat` as `c`, `users` as `u` WHERE `c`.`user_id` = `u`.`id` AND `c`.`idchat` > {$id} ORDER BY `c`.`idchat` DESC LIMIT 10";
    14. }
    15. $res = mysql_query($sql);
    16. $res || die(mysql_error());
    17. $result = array();
    18. while ($row = mysql_fetch_assoc($res))
    19. {
    20. $result[] = $row;
    21. }
    22. echo json_encode($result);
    23. ?>
    И квери:
    [js]var id = 0
    var chatbox
    function get() {
    $.ajax({
    type:'GET',
    url:'ajaxchat.php',
    data:{last_id:id},
    success:function(data){
    var obj = jQuery.parseJSON(data)
    var text = ''
    for (var i = 0; i < obj.length; i++)
    {
    text += '<div class="table_massage">'
    text += '<span>' + obj.name + '</span>'
    text += '<span>/' + obj.age + '</span> '
    text += '<em>' + obj.massage + '</em>'
    text += '</div>'
    id = id < obj.idchat ? obj.idchat : id
    }
    $(chatbox).html($(chatbox).html()+text)
    }
    })
    }
    <!-- сообщения обновляются каждые 30 секунд -->
    chatbox = $('#chatbox')
    var timer = setInterval(get, 30000)
    get()[/js]
    Всё то,что перед Вами предстало-является чатом на странице сайта.И всё бы хорошо,да вот только после того как отправляешь сообщение,то по прошествии 30 секунд оно начинает дублироваться ниже всех ранее выведенных сообщений.И так каждые 30 секунд до бесконечности.Добавляет пользователь ещё сообщение и теперь уже оба начинаю дублироваться снузу остальных каждые 30 сек.
    Помогите разобраться,почему выполняется цикл!?
     
  2. Михаил

    Михаил Активный пользователь

    С нами с:
    12 июл 2009
    Сообщения:
    545
    Симпатии:
    0
    Адрес:
    Bielarus
    надо бы извлекать данные с текущего момента времени минус 30 секунд.
    а вообще такой чат, это конечно очень смешно
     
  3. Panich

    Panich Активный пользователь

    С нами с:
    10 май 2011
    Сообщения:
    548
    Симпатии:
    0
    Адрес:
    Ростов-Москва
    А как это решит проблему?Он же всё равно будет продолжать вытаскивать данные...


    Почему смешно!?
    Что не так-помогите реализовать!?
     
  4. Михаил

    Михаил Активный пользователь

    С нами с:
    12 июл 2009
    Сообщения:
    545
    Симпатии:
    0
    Адрес:
    Bielarus
    он будет вытаскивать только актуальные данные.

    ну тут вообще-то сокетами пытаются пользоваться. тут же есть в соседней теме, парень который делал, но там что-то не работает.
    я как-то не спец по чатам, но когда делал то смотрел: http://vimeo.com/20936525
     
  5. Panich

    Panich Активный пользователь

    С нами с:
    10 май 2011
    Сообщения:
    548
    Симпатии:
    0
    Адрес:
    Ростов-Москва
    Большое спасибо!Буду пробовать и учиться...!!!
     
  6. Михаил

    Михаил Активный пользователь

    С нами с:
    12 июл 2009
    Сообщения:
    545
    Симпатии:
    0
    Адрес:
    Bielarus
    давай, чуть что можешь в личку написать