netbozum
tr.link

İki zaman arası işlem yaptırma PDO

2 Mesajlar 711 Okunma
acebozum
tr.link

berkaykrx berkaykrx WM Aracı Kullanıcı
  • Üyelik 14.09.2015
  • Yaş/Cinsiyet 28 / E
  • Meslek PHP Developer
  • Konum Ankara
  • Ad Soyad İ** K**
  • Mesajlar 974
  • Beğeniler 269 / 229
  • Ticaret 17, (%100)
Aşağıdaki kod ile iki zaman arasındaki farkı bulup işlem yaptırabilirsiniz.


$zsor=$db->prepare("SELECT * FROM tablo");
$zsor->execute(array());
while($zcek=$zsor->fetch(PDO::FETCH_ASSOC))
{
$zamanım=$zcek['veri_zaman'];
$zaman=strtotime($zamanım);
$fark = time()-$zaman;
if($fark < 187000)
{ //2 Günden BÜYÜKSE GÖSTERİLECEK ALAN.
//işlem gelicek
}

}
?>

 

 

googleasistan
reklam

SancarSaran SancarSaran WM Aracı Kullanıcı
  • Üyelik 14.01.2018
  • Yaş/Cinsiyet 52 / E
  • Meslek Programcı
  • Konum İzmir
  • Ad Soyad S** S**
  • Mesajlar 319
  • Beğeniler 4 / 111
  • Ticaret 0, (%0)
Buda optimize edilmiş hali.

$gun = 86400;
$simdi = time();
$zsor=$db->prepare("SELECT unix_timestamp(veri_zamanı) AS an FROM tablo");
$zsor->execute(array());
while($zcek=$zsor->fetch(PDO::FETCH_ASSOC))
{
if((simdi-$zcek['an']) < $gunSaniye * 2)
{ //2 Günden BÜYÜKSE GÖSTERİLECEK ALAN.
//işlem gelicek
}

}
?>

Unix timestamp işleri mysqlde yapıldı.
Bir gündeki saniye sayısı değişkene atıldı ki böylece birden farklı gün için kolayca değişim yapılsın.
döngü içindeki time() dışa alınarak her seferde çalıştırılması engelledi (100 satır olsa 100 defa çağırmaktansa 1 sefer çağırmak daha iyi).

* Ek
Zaman değerlerini mysqlde unix_timestamp olarak tutun.
değişkenlerde, mysql alan adlarında türkçe karakter kullanmayın, nerde nezaman sıkıntı çıkaracağı belli olmaz.

berkaykrx

kişi bu mesajı beğendi.

wmaraci
wmaraci
Konuyu toplam 2 kişi okuyor. (0 kullanıcı ve 2 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al