Basit Javascript MYSQL fonksiyonunu kontrol

3 Cevap php

Ben şu an gelişmekte olan web çok yetenekli değilim ama ben bir MySQL veritabanı ve HTML gösterileri verileri sorgular PHP ile bir web uygulaması oluşturmak için idare ettik.

Ben tablo zaten oluşturulan bir zaman damgası alanı kullanarak değişti ve her eklemede güncelleştirmeleri, olmadığını kontrol etmek istiyorum. İki zaman (önceki ve şimdiki) Karşılaştırılması anahtar,

ama ben o kadar javascript kolu yok.

How can I pass a parameter to my hastablechanged.php file (the previous timestamp) and simply return a flag (1: changed, 0: not changed) to javascript? and... how would be a basic javascript function to run a timer and call hastablechanged.php posting old_timestamp and receiving the flag and then update the div?

Googling oldum ama ben bulduk çözümler çok karmaşık ve ben sadece ben yazmak nasıl bulmuyorum bir javascript işlevi gerek biliyorum.

Bu hastablechanged.php olduğunu:

<?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'];
?>

Ve bu benim 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" veri ve görüntüler bir html tablo çizim seçer php kodudur.

Benim derece projeyi bitirme için bu konuda sıkışmış kulüpler olarak ben, bir sürü herhangi bir yardım teşekkür ederim

3 Cevap

Sonunda bunu nasıl anladım. Bu herkes için yararlı olabilir bu yüzden gönderme.

Bu php ve javacript bir arada bulunuyor:

  • php dosyası return_timestamp.php sadece = 0 ID (bu sadece bir tetikleyici ile her ekleme onun damgası gerçek kimliği güncelleştiren) ile bir satır damgası döndürür

  • javascript (bu yüzden başında div güncelleştiren çok ilki 0'a ayarlanır) daha önce alınan biri ile alınan damgası karşılaştırır

bu yüzden:

önemli şey (i siz mysql veri alma php kod varsayalım) olan javascript kodu:

<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>

SİZİN yardım için de yardımcı olur, ve teşekkürler umut!

Sen Ajax ve setInterval gerekir.

Here is how SetInterval works http://www.elated.com/articles/javascript-timers-with-settimeout-and-setinterval/

SetInterval temelde sadece her x milisaniyede bir javascript işlevi çağırmak için tarayıcı söyler.

Here is a few Ajax Examples http://www.w3schools.com/Ajax/ajax%5Fexamples.asp

Ajax temelde javascript bir sayfayı talep ve sayfayı yeniden olmadan içeriğini almak için bir yoldur. Aşağıdaki örnekte tüm tarayıcılarda (ne yazık ki bu gibi bitti) için bir XMLHttpRequest oluşturmak için çalışır ve daha sonra isteği gönderir. Bir cevap geri döndüğümüzde biz çağrılacak fonksiyonu olarak STATE_CHANGE tanımlar. Bu örnekte sadece yanıtı alır ve görüntüler, ama bununla ne istersen yapabilirsin.

Aşağıda, değiştirilmiş bir örnektir. Bu çalışması gerekir.

<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>

Sadece temiz olması için: Eğer have ajax kullanmak gerekmez. Sadece düzenli aralıklarla sayfayı yeniden sana istediğini verecek. Eğer uygulama pürüzsüz olmasını istiyorsanız ANCAK - daha sonra diğer yanıtlar belirtildiği gibi AJAX kazmak gerekir.

-CF