Подгрузка AJAX-ом данных из базы данных в цикле с выводом и интервалом в 60сек

Европа - быстрые серверы на дисках NVMe от $5 / Русский датацентр от 199руб

Тема в разделе "PHP & JavaScript & AJAX & JQUERY & HTML & FLASH", создана пользователем Webmaster911, 29 янв 2019.

Метки:
  1. Webmaster911

    Webmaster911 Новичок

    Сообщения:
    4
    Ваш город:
    Москва, Россия
    Address:
    Moscow, Russia
    Country:
    Location on Map:
    Всем доброго дня, может поможете решить одну задачку.
    Суть в чем есть кнопка с колокольчиком. Надо сделать так чтобы при нажатии на него выводились данные из БД с ошибками за последние 60 сек (т.е. подгружались аяксом) в количестве 15шт. В файле где идет выборка данных все понятно -вывод через цикл while ассоциативного массива.
    Сама кнопка по умолчанию должна быть скрыта, а появлялась только когда появляются новые ошибки в БД и колокольчик должен вибрировать, а рядом с колокольчиком должен появляться счетчик который подсчитывает ошибки за сутки с 00:00. На странице вывода использовал функции JS hide(), show(), setInterval(), setTimeout но пока ничего не получается. Надо ли цикл выводить в файле выборки или через json цикл выводить на странице отображения результата? Может есть какие идеи?
     
  2. Webmaster911

    Webmaster911 Новичок

    Сообщения:
    4
    Ваш город:
    Москва, Россия
    Address:
    Moscow, Russia
    Country:
    Location on Map:
    Вообщем задачу решил. Кому интересно расскажу. Создал аякс запрос на файл в котором сделал выборку из БД и вывел циклом while присвоив перед циклом переменной пустоту, а в цикле конкатенировал с row['vars']. Затем после цикла вывел эхом.
    $str='';
    while ($row = $inDB->fetch_assoc($result)) {
    $str.= '<li><a class="check_log" href="?view=components&update=1">';
    $str.=$row['id'] .'<br>';
    $str.=$row['name'] . '<br>';
    $str.=$row['start_time'] . '<br>';
    $str.=$row['result'];
    $str.= '</a></li>';
    }
    echo json_encode([
    "count"=>$inDB->num_rows($result),
    "html"=>$str,
    ]);
    а в аяксе принял так
    $(document).ready(function(){
    getErrors();
    setInterval (function () {
    getErrors();
    },60000);
    });

    function getErrors() {
    $('#parse_err').hide();
    $.ajax({
    type: "POST",
    url: '/ajax_function.php',
    data: {
    'action': 'parse_errors'
    },
    success: function (data) {
    console.log(data);
    data=JSON.parse(data);
    if((data.count)>0){
    $('#parse_err').show();
    $('.errors-dropdown').html(data.html);
    $('#parse_counter').html(data.count);
    }
    }
    });
    }
    и в файле вывода логов так
    if($_GET['update'] == 1){
    $sql = "UPDATE `parse_logs` SET parse_logs.notified = 1 WHERE parse_logs.notified = 0";
    $result=$inDB->query($sql);
    }
    Надеюсь логика понятна
     
  3. AnrDaemon

    AnrDaemon Продвинутый новичок

    Сообщения:
    4.708
    Ваш город:
    Moscow, Russia
    Address:
    Moscow, Russia
    Country:
    Location on Map:
    [​IMG]
     
    whirlwind нравится это.
  4. Webmaster911

    Webmaster911 Новичок

    Сообщения:
    4
    Ваш город:
    Москва, Россия
    Address:
    Moscow, Russia
    Country:
    Location on Map:
    )) ок разберемся я недавно только зарегился