Veri Eklendiğinde Sayfa Güncellensin

Başlatan sudusleri, 01 Kasım 2013 - 17:23:45

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

sudusleri

Merhaba,

Giriş ile orta seviyede PHP bilgim var. Şu anda goster.php adında bir sayfada MySQL veritabanından çektiğim verileri bir Content slider ile gösteriyorum. İhtiyacım olan şey veri tabanına yeni veri eklendiğinde goster.php'nin tekrar yüklenmesi. Yani sayfanın yenilenmesi. Bu işin ajax ile yapıldığını biliyorum. Ancak javascript ile ilgili hiç bilgim yok. Yardımcı olabilecek arkadaşlara şimdiden teşekkürler..
Düşten yumak oldun... alıp gittin günahları...

furkankalkan

http://www.webinfopedia.com/autoload-refresh-div-in-jquery.html

Küçük bir ilan panosu sitemizde bu yöntemi kullanmıştık. Basit ama etkili bir yöntemdir.
Lover
twitter.com/furkan_kalkan1

sudusleri

Kod için teşekkürler.. Ancak benim istediğim belirli aralıklarla bir kodun çalıştırılıp o sayfanın koddan gelecek sonuca göre yeniden yüklenmesi.. yani bir php if yapısının sürekli kontrol edilmesini istiyorum.
Düşten yumak oldun... alıp gittin günahları...

furkankalkan

Bu koddan varsa otomatik yenileme bölümünü kaldırıp PHP döngüleriyle tetikleyebilirsiniz. Sonuçta PHP içerisinde HTML kodu kullanılabiliyor.
Lover
twitter.com/furkan_kalkan1

alquirel

@sudusleri, şöyle bir sistem yapabilirsin. goster.php dosyanın haricinde "kontrolet.php" gibi bir dosya oluşturursun. Ajax ile bu dosyayı çağırırsın. Çağırırken de önce kendisine sayfadaki son verinin ID değerini gönderirsin. O da sunucuda bu ID değerinin veritabanındaki son ID değeriyle örtüşüp örtüşmediğini kontrol eder. Eğer yeni veri yoksa kontrolet.php dosyan 0 (sıfır) döner mesela, varsa da 1 döner. Javascript kodun eğer 1 döndüyse sayfanı yeniler.

Kabaca kontrolet.php dosyan şu şekilde olur:

<?php
// Önce veritabanı bağlantı ayarlarını yaparsın
// Ajax ile gelen ID değerini değişkene atarsın.
$gelen $_GET['id'];

// (kabaca) veritabanından son ID değerini alalım
// id sütununu auto_increment yaptığını varsayıyorum
$sql mysql_query "SELECT MAX(id) FROM table" );
$row mysql_fetch_row$sql);
$son $row[0];

if ( 
$gelen == $son ) echo "0";
else echo 
"1";
exit;


jQuery ile yazacağınız ajax fonksiyonunuz da şu şekilde olur:


<?php
// Javascript kodudur, forumdaki code etiketi renklendirme yapsın diye başına php ekledim ;)
$(document).ready(function(){
  function 
kontrolet() {
    $.
get('kontrolet.php', { id: $("#son-id").val() }, function(resp) {
      if ( 
resp == "1" location.reload(true);
      else 
setTimeout('kontrolet()'10000);
    });
  }
  
setTimeout('kontrolet()'10000);
});


Bu JavaScript kodunu "goster.php" dosyasına yerleştirirsin ya da ayrı bir js dosyası şeklinde kullanacaksan goster.php dosyasında o js dosyasını da çağırırsın, ancak bir de şöyle bir şey yapman gerekir. "goster.php" dosyası yüklenirken aynı zamanda veritabanındaki son ID değerini de alıp sayfanın içinde bir yerlere yerleştirmesi gerekir ki Javascript kodu da o son ID değerini alıp kontrolet.php'ye gönderebilsin. Ben burada ID değeri "son-id" ve "hidden" türünde olan bir "input" elemanı yerleştirdim. Yani : <input type="hidden" id="son-id" value="<?php echo $son;?>" /> gibi.

Yani goster.php dosyanın başlarında da kontrolet.php'de yaptığım gibi son ID değerini bulan bir kod kısmı eklemen lazım.

Yine de aklına takılan kısım olursa cevaplamaya çalışırız.

sudusleri

Şimdi oldu :) Şu an deneyemiyorum kodu ..Denediğimde sorun olursa dönerim Teşekkür ederim @alquirel, @dewilman
Düşten yumak oldun... alıp gittin günahları...

hit85

#6
Alıntı yapılan: alquirel - 08 Kasım 2013 - 16:57:49
@sudusleri, şöyle bir sistem yapabilirsin. goster.php dosyanın haricinde "kontrolet.php" gibi bir dosya oluşturursun. Ajax ile bu dosyayı çağırırsın. Çağırırken de önce kendisine sayfadaki son verinin ID değerini gönderirsin. O da sunucuda bu ID değerinin veritabanındaki son ID değeriyle örtüşüp örtüşmediğini kontrol eder. Eğer yeni veri yoksa kontrolet.php dosyan 0 (sıfır) döner mesela, varsa da 1 döner. Javascript kodun eğer 1 döndüyse sayfanı yeniler.

Kabaca kontrolet.php dosyan şu şekilde olur:

<?php
// Önce veritabanı bağlantı ayarlarını yaparsın
// Ajax ile gelen ID değerini değişkene atarsın.
$gelen $_GET['id'];

// (kabaca) veritabanından son ID değerini alalım
// id sütununu auto_increment yaptığını varsayıyorum
$sql mysql_query "SELECT MAX(id) FROM table" );
$row mysql_fetch_row$sql);
$son $row[0];

if ( 
$gelen == $son ) echo "0";
else echo 
"1";
exit;


jQuery ile yazacağınız ajax fonksiyonunuz da şu şekilde olur:


<?php
// Javascript kodudur, forumdaki code etiketi renklendirme yapsın diye başına php ekledim ;)
$(document).ready(function(){
  function 
kontrolet() {
    $.
get('kontrolet.php', { id: $("#son-id").val() }, function(resp) {
      if ( 
resp == "1" location.reload(true);
      else 
setTimeout('kontrolet()'10000);
    });
  }
  
setTimeout('kontrolet()'10000);
});


Bu JavaScript kodunu "goster.php" dosyasına yerleştirirsin ya da ayrı bir js dosyası şeklinde kullanacaksan goster.php dosyasında o js dosyasını da çağırırsın, ancak bir de şöyle bir şey yapman gerekir. "goster.php" dosyası yüklenirken aynı zamanda veritabanındaki son ID değerini de alıp sayfanın içinde bir yerlere yerleştirmesi gerekir ki Javascript kodu da o son ID değerini alıp kontrolet.php'ye gönderebilsin. Ben burada ID değeri "son-id" ve "hidden" türünde olan bir "input" elemanı yerleştirdim. Yani : <input type="hidden" id="son-id" value="<?php echo $son;?>" /> gibi.

Yani goster.php dosyanın başlarında da kontrolet.php'de yaptığım gibi son ID değerini bulan bir kod kısmı eklemen lazım.

Yine de aklına takılan kısım olursa cevaplamaya çalışırız.


Konuyu hortlattığım için şimdiden özür diliyorum.

PHP ile amatör/hobi olarak ilgileniyorum.Çok fazşla teknik bilgiye sahip değilim.

Sayfa yenileme işlemini veritabanında sayfayenileme değeri ne göre yapmak istiyorum.
Veri tabanında veri güncellemesi yaptığımda sayfayenileme değeri=1 olacak şekilde düzenledim.
kontrolet.php  kontrolden sonra sayfayenileme değerini 0 yapıyor.
Adres satırına /kontrolet.php yaptığımda sayfayenileme değeri 0 oluyor.
Ama goster.php de sayfayenileme değerini değiştiremiyorum.
Yani goster.php sayfayenileme değerine göre işlem yapmıyor.(scrip kodu çalışmıyor.)

Kodlarım aşağıdaki gibi ama bir türlü çalıştıramadım.

goster.php


<?php
// Javascript kodudur, forumdaki code etiketi renklendirme yapsın diye başına php ekledim ;)
.
.
.
.
<
script>

$(
document).ready(function(){
 function 
kontrolet() {
    $.
get('kontrolet.php', { id: $("#kontrolid").val() }, function(resp) {
      if ( 
resp == "1" location.reload(true);
      else 
setTimeout('kontrolet()'10000);
    });
  }
  
setTimeout('kontrolet()'1000);
});
</
script>


<
body>
<
input type="hidden" id="kontrolid" value="sorr" />
.
.
.



kontrolet.php

<?php

$gelen 
$_GET['id'];

$sorgu=$baglanti-> query("select * from genel_ayar ");
$kayit=$sorgu->fetch_array();
$sayfayenileme=$kayit["sayfayenileme"];
if (
$sayfayenileme==1){
$iid="1";
$sayfayenileme=0;
sleep(1);
$sorgu=$baglanti-> query("update genel_ayar set sayfayenileme='$sayfayenileme' where id='$iid'");
echo "1";
}else{

$iid="1";
$sayfayenileme=0;
sleep(1);
$sorgu=$baglanti-> query("update genel_ayar set sayfayenileme='$sayfayenileme' where id='$iid'");

echo "0";
}

// (kabaca) veritabanından son ID değerini alalım
// id sütununu auto_increment yaptığını varsayıyorum
/*
$sql = mysql_query ( "SELECT MAX(id) FROM table" );
$row = mysql_fetch_row( $sql);
$son = $row[0];

if ( $gelen == $son ) echo "0";
else echo "1";
exit;*/
?>






Yardımlarınızı bekliyorum.
TEŞEKKÜRLER