Простая функция проверки Javascript MYSQL - PullRequest
2 голосов
/ 09 октября 2009

На данный момент я не очень разбираюсь в веб-разработке, но мне удалось создать веб-приложение на PHP, которое запрашивает базу данных MYSQL и показывает данные в HTML.

Я хотел бы проверить, изменилась ли таблица, используя поле метки времени, которое я уже создал, и которое обновляется при каждой вставке. Сравнение двух временных меток (предыдущей и текущей) является ключом

но я не очень разбираюсь в javascript.

Как я могу передать параметр в свой файл hastablechanged.php (предыдущая временная метка) и просто вернуть флаг (1: изменен, 0: не изменен) в javascript? и ... как бы была базовая функция JavaScript для запуска таймера и вызова hastablechanged.php, отправив old_timestamp и получив флаг, а затем обновив div?

Я гуглил, но решения, которые я нашел, очень сложны, и я знаю, что мне просто нужна функция javascript, которую я не понимаю, как писать.

Это hastablechanged.php:

<?php 
include 'config.php';
include 'opendb.php';

$table = "data_table";
$query_timestamp = "select timestamp from {$table} where id = 0;";
$timestamp = mysql_query("{$query_timestamp}");
if (!$timestamp) {
die("query failed");
}

$row_timestamp = mysql_fetch_array($timestamp);
echo $row_timestamp['timestamp'];
?>

А это мой index.php

<!DOCTYPE HTML PUBLIC>


<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta http-equiv="Content-Style-Type" content="text/css">
    <title>Data values</title>
</head>

<body>

<div id=data>
    <? include("table.php");?>
</div>
</body>

</html>

где "table.php" - это php-код, который выбирает данные и отображает их, рисуя HTML-таблицу.

Я очень благодарен за любую помощь, так как я застрял в этом выпуске для завершения моего дипломного проекта

Ответы [ 3 ]

1 голос
/ 09 октября 2009

Вам нужен Ajax и setInterval.

Вот как работает SetInterval http://www.elated.com/articles/javascript-timers-with-settimeout-and-setinterval/

SetInterval в основном просто говорит браузеру вызывать функцию javascript каждые x миллисекунд.

Вот несколько примеров Ajax http://www.w3schools.com/Ajax/ajax_examples.asp

Ajax - это в основном способ для javascript запрашивать страницу и получать ее содержимое без перезагрузки страницы. В приведенном ниже примере он пытается создать xmlhttprequest для всех браузеров (к сожалению, это делается так) и затем отправляет запрос. Мы определяем state_change как функцию, вызываемую при получении ответа. В этом примере он просто принимает ответ и отображает его, но вы можете делать с ним все, что захотите.

Ниже приведен модифицированный пример. Это должно работать.

<html><head>
<script type="text/javascript">
var xmlhttp;
function loadPage()
{
xmlhttp=null;
if (window.XMLHttpRequest)
  {// code for IE7, Firefox, Opera, etc.
  xmlhttp=new XMLHttpRequest();
  }
else if (window.ActiveXObject)
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
if (xmlhttp!=null)
  {
  xmlhttp.onreadystatechange=state_Change;
  xmlhttp.open("GET","hastablechanged.php?tablename=awesometable",true);
  xmlhttp.send(null);
  }
else
  {
  alert("Your browser does not support XMLHTTP.");
  }
}

function state_Change()
{
if (xmlhttp.readyState==4)
  {// 4 = "loaded"
  if (xmlhttp.status==200)
    {// 200 = "OK"
    document.getElementById('A1').innerHTML=xmlhttp.responseText;
    }
  else
    {
    alert("Problem retrieving ata:" + xmlhttp.statusText);
    }
  }
}
</script>
</head>

<body onLoad="setInterval('loadPage()', 10000)">

<p><b>Status:</b>
<span id="A1"></span>
</p>

<button onclick="loadPage()">Check Updates</button>

</body>
</html>
0 голосов
/ 20 октября 2009

Я наконец-то понял, как это сделать. Разместите его так, чтобы он мог быть полезен любому.

Это комбинация php и javacript, где:

  • php-файл return_timestamp.php просто возвращает временную метку строки с ID = 0 (без реального идентификатора, он просто обновляет свою временную метку в каждой вставке с помощью триггера)

  • javascript сравнивает полученную метку времени с ранее полученной (самая первая установлена ​​на 0, поэтому он обновляет div в начале)

так:

JavaScript-код, который является важным (я полагаю, что вы, ребята, можете кодировать php, извлекая данные из mysql):

<script type="text/javascript">
$(document).ready(function() {

    $timestamp1='0';
    var refreshId = setInterval(function() {
    $.get(('return_timestamp.php', function(data) {
    $timestamp2 = data; } )

    if ( $timestamp2 != $timestamp1 ) { 

        $('#data').load('data.php');

        $timestamp1 = $timestamp2; }

}, 1000);
});
</script>

Надеюсь, это поможет, и спасибо за вашу помощь!

0 голосов
/ 09 октября 2009

Просто чтобы прояснить: у вас нет для использования ajax. Просто перезагрузка страницы на регулярной основе даст вам то, что вы хотите. НО, если вы хотите, чтобы приложение было гладким - вам придется копаться в AJAX, как указано в других ответах.

-CF

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...