Вывод из БД без перезагрузки

819
14 февраля 2017, 21:26

Всем привет, подскажите пожалуйста как выводить записи из таблицы БД MySQL без перезагрузки страницы? Допустим если в БД добавилась новая строка, то мне ее выведет на страницу без перезагрузки. Скиньте хорошую статью где описывается реализация или может у вас есть простой пример чтобы посмотреть и понять хотя бы суть как это должно работать.

Answer 1

Вот рабочий пример реализации ajax с помощью jquery файл index.php:

<?php
function is_ajax() {
    return isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest';
}
if (is_ajax() && isset($_POST['get_data'])) {
    $pdo = new PDO("mysql:host=localhost;dbname=DBNAME;charset=utf8", 'root', 'PASSWORD');
    $pr = $pdo->prepare("SELECT * FROM `main` ");
    $pr->execute();
    $data=$pr->fetchAll();

    echo json_encode(array(
        'ok' => 'AJAX OK!!!',
        'data'=>$data
    ));
    exit();
}
?>
<html>
    <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
    </head>
    <body>
      <a id="get_data">Получить данные в браузер</a>
        <script>
            $("document").ready(function () {
                $("#get_data").click(function (event) {
                    event.preventDefault();
                    var data = {"get_data":1};
                    $.ajax({
                        type: "POST",
                        dataType: "json",
                        url: "index.php",
                        data: data,
                        success: function (r) {
                            console.log(r);
                            // r будет содержать "ответ" из PHP 
                        }
                    });
                    return false;
                });
            });
        </script>

    </body>
</html>

С помощью echo json_encode(array('ok' => 'AJAX OK!!!')); мы отправляем ответ нашему браузеру и в панели разработчика можем увидеть ответ.

Нужно обратить внимание что пароли и важные данные принято передавать post методом.

Используйте например PDO для выборки своих данных из mysql или oracle :D затем вы получите массив и сможете отправить этот массив данных в браузер без перезагрузки страницы.

Answer 2

Тут есть 2 основных подхода:

1) polling - опрашивать сервер (например при помощи ajax) раз в промежуток времени и выводить новые записи из БД, если они там появились. Этот подход имеет ряд недостатков: - данные появляются не мнгновенно, а только при следующем опросе сервера - большая нагрузка на сервер - больше трафика от клиента частично 2 последних недостатка можно уменьшить, если использовать заголовки кэширования HTTP

2) поддерживать постоянное соединение с сервером и со стороны сервера отправлять данные сразу после их добавления. Для этого можно использовать, например, websocket. Это решение несколько сложнее в реализации, но не имеет таких недостатков как у polling.

READ ALSO
Проблема с таймерами

Проблема с таймерами

Суть всей задачи, которую я себе придумал - нужно сделать так, чтобы первый объект запускался функцией setInterval, причём не важно сколько раз,...

283
Работа промисов

Работа промисов

Добрый ВечерНаткнулся на такой пример с промисами :

382
Как обновить в контроллере изменение в фабрике?

Как обновить в контроллере изменение в фабрике?

Почему не обновляются storage? Как сделать так чтобы данные приходя, записывались и на моей странице автоматически изменялись? Если выполнить...

321
Изменение документа в mongodb по времени

Изменение документа в mongodb по времени

В MongoDB можно создать индекс для удаления документа по времени (TTL)Имеется ли подобные средства для обновления документа

334