Здравствуйте. Не могу понять как обновлять данные на странице без перезагрузки? Примеры в Интернете видел, но что-то не понимаю. Суть такая, на странице есть такой код: PHP: $dbconn = pg_connect("host=localhost port=5432 dbname=677 user=postgres password=666777"); $result = pg_query($dbconn, "SELECT change, price, name FROM usd_eur ORDER BY exchange_name DESC"); if (!$result) { echo "Произошла ошибка.\n"; exit; } while ($row = pg_fetch_row($result)) { echo "$row[2] <b>$row[1]</b> $row[0]% "; } данные в базе меняются, по этому я хочу чтобы раз в 10 секунд на странице они обновлялись, помогите плз это сделать
Такая технология, как Ajax, вам знакома? Если нет, то начните знакомиться. Сложного там ничего нет, т.к. по сути - это те же самые запросы, только выполняются в фоновом режиме. P.S. Если используете в проекте jQuery, то там так же предусмотрены ajax-методы. И примеров в инете полно
я знаю что Ajax, но как не пойму. Я же написал, что испробовал кучу примеров, но все не работает. Ну например, это Код (Javascript): setInterval(function(){ $("#block").load("index.php #block"); }, 30000); Дело в том что нет у меня никакого index.php, данные из базы, а значит скрипт должен быть другой.
@flautr скрипт должен отдавать только нужный текст. в примере index.php #block будет попытка загрузить index.php и там найти тег с id block
ну или вот Код (Javascript): // Отправляем номер страницы в обработчик $.ajax({ type: "POST", url: "/load_images.php", // Обработчик data: "page="+page, // Переменная с номером страницы dataType: "html", cache: false, beforeSend: function(){ $('#content-load').html('Загружаю...'); // Изменяем надпись кнопки на "Загружаю..." }, что за обработчик? Что в нем должно быть, раз это отдельный файл... Короче не понимаю(
пробовал и файл создавать. Где-то пишут что туда тоже содержимое ставить, так через 10 секунд я вместо обновления таблицы оказываюсь в этом самом index.php ну и зачем? --- Добавлено --- все что я хочу, чтобы раз в 10 секунд увидеть новые данные из базы оставаясь там же где был. А вместо этого, меня перебрасывают в обработчик, например сюда. index.php Все примеры что видел такие.
у тебя как называется скрипт и как его нужно вызвать чтобы получить те данные из базы и только их один раз?
никакого скрипта у меня нет. На странице thml стоит такой код PHP: $dbconn = pg_connect("host=localhost port=5432 dbname=677 user=postgres password=666777"); $result = pg_query($dbconn, "SELECT change, price, name FROM usd_eur ORDER BY exchange_name DESC"); if (!$result) { echo "Произошла ошибка.\n"; exit; } while ($row = pg_fetch_row($result)) { echo "$row[2] <b>$row[1]</b> $row[0]% "; } соединяемся с базой, показываем колонку change, price... Все. Ничего больше нет. Все работает, да только чтобы увидеть новые данные в этих колонках нужно постоянно F5 нажимать, утомительно это(
Надеюсь этот пример поможет: PHP: <?php if (isset($_POST['test'])) { exit(date("H:i:s")); } ?> <!DOCTYPE html> <html> <head> <title></title> <script type="text/javascript" src="https://code.jquery.com/jquery-3.1.0.js"></script> </head> <body> <div id="result"></div> <script type="text/javascript"> $(function() { (function worker() { $.ajax({ url: 'ajax.php', method: 'POST', data: {'test':'yes'}, success: function(data) { $('#result').html(data); }, complete: function() { setTimeout(worker, 1000); } }); })(); }); </script> </body> </html> --- Добавлено --- создай файл ajax.php и запусти его --- Добавлено --- 1000 это одна секунда
Вещь отличная, только есть одно но, как сделать, чтобы содержимое страницы не дублировалось? Получается все, что есть на странице дублируется еще раз чуть ниже. И уже там все работает.
Обратите внимание на третью строку кода у @denis01 и то, что код ответа расположен в самом начале страницы.
да я уже понял, только вот еще можете подсказать один момент. time.php PHP: <?php require "db.php"; $now = time(); $id = $_SESSION['logged_user']->id; $books = R::load('users', $id); $v_time = $books->v_time; $left_time=$v_time-$now; $left_min=floor($left_time/60); $left_sec=$left_time-$left_min*60; echo"Next : <b>$left_min</b> min. <b>$left_sec</b> sec."; ?> является ли это безопасным решением? в таком варианте все работает как надо=)
О какой опасности идёт речь (CSRF, XSS, SQL-injection и т.д.)? Многое зависит от того, что у вас находится в файле "db.php". Если предположить, что там всё сделано по уму и учитывая, что запрос скорее всего на получение данных, а не на запись или обновление, то особо криминального как бы и нет. Но это субъективная оценка, не дающая никаких гарантий.