İftar-Sahur Sayacı ve Ezan Vakitleri
Ezan vakitlerini gösteren, iftara ve sahura ne kadar kaldığını gösteren uygulama yapımı.
Dikkat: Değerli ziyaretçimiz. Vakitler temkinli saatlerdir.
Bu çalışmayı Ezan Vakitleri ile Geri Sayım Sayacı uygulamalarından uyarladım.
Böyle bir sayaç yapmak için öncelikle buradaki uygulamayı bitirmiş olmanız gerekiyor.
Sayaç için ayrı bir js dosyası kayıt edeceğim. Önce 9. satırın altına, html kayıt dosyasını belirttiğim satırın altına, js dosyamı belirtiyorum.
10 |
$cacdosjs="$klasoryolu/$gunno.js"; |
Bugüne ait verileri çekmiştim. Yatsıdan sonraki vakti belirlemek için yarının bilgilerini de çekiyorum. Mevcut vakitleri yarının vakti gibi ekleyip o şekilde değerlendirerek sayacı çalıştırabilirim. Sadece gece yarısına kadar 1-2 dakika hata ile çalışır, gün girince düzelir. Ancak ben öyle yapmayacağım.
Yarının bilgilerini kayıt etmek için daha önce hicritarihi belirlediğim 26. satırdan sonra (şimdi 27. satır oldu) aşağıda ki kodları kullanıyorum.
28 29 30 31 32 33 |
//Yarın Bilgisi Başla $yarinkacincigun=$simdi["yday"]+2; //yday 0'dan 365'e kadardır. xml dosyamızda gün 1 den başladığı için +1 yapıyoruz $yarintimesprayer=$xml->prayertimes[$yarinkacincigun]; list($imsak2,$sabah2,$gunes2,$israk2,$kerahet2,$ogle2,$ikindi2,$asrisani2,$isfirarisems2,$aksam2,$istibakinucum2,$yatsi2,$isaisani2,$kible2) = explode(" " , $yarintimesprayer); $yarinhicritarih = (new hijri\datetime())->modify("+1 day")->format('_j _M _Y')." ".iconv("windows-1254" , "UTF-8" , strftime("%A")); //Yarın Bilgisi Bitir |
Buradan sonra HTML cache yazımı başlıyor zaten. (eski 27. şimdi 34. satır) O kısım kalıyor, eski kodda 45. satırda bitmişti. Şimdi 52. satırda bitti. 53. satırdan başlıyorum. Artık değişikliğe göre güncel satırlar numaraları bilgisini vererek devam edeceğim.
53 54 |
//JS cache yazıyoruz ob_start(); |
Önce vakitlerimi javascript değişkenlerine atıyorum. Sadece burada yapacağım işlemler ile de tablo basabilir, yukarıdaki html kayıt olayını bu js ile değiştirerek kullanabilirim.
55 56 57 58 59 60 61 |
$tumzamanlar = ""; $bugunler=array("imsak" , "ogle" , "ikindi" , "aksam" , "yatsi"); foreach($bugunler AS $value){echo "var $value = '".date('Y-m-d')."T".date('H:i:s' , strtotime($$value))."';\n"; $tumzamanlar .= "[$value , '$value'] , ";} $yarinlar=array("imsak2" , "ogle2" , "ikindi2" , "aksam2" , "yatsi2"); foreach($yarinlar AS $value){echo "var $value = '".date('Y-m-d', strtotime("+1 day"))."T".date('H:i:s' , strtotime($$value))."';\n"; $tumzamanlar .= "[$value , '$value'] , ";} echo "var vakitler = [$tumzamanlar];\n"; ?> |
Dikkat ederseniz phpyi kapattım. Çünkü dosyayı javascript olarak kayıt edeceğim ve dolayısıyla kaydı javascript ile yazacağım. Aşağıda sıradaki vaktin hangisi olduğunu belirleyip yazısını kırmızıya boyadım.
62 63 64 65 66 67 68 69 70 71 72 |
for (let i = 0; i < vakitler.length; i++) { var vakitsimdi = new Date(); var vakitnew = new Date(vakitler[i][0]); var nmr = i; if (vakitsimdi < vakitnew) { document.getElementsByClassName(vakitler[i][1])[0].style.color += "red"; break; } } |
Yukarıdaki if sorgusunu sadece iftar-sahur arasında yapmak istersem şöyle değiştirerek yapabilirim.
67 |
if(vakitsimdi<vakitnew && (vakitler[i][1]=='imsak' || vakitler[i][1]=='aksam' || vakitler[i][1]=='imsak2' || vakitler[i][1]=='aksam2')) |
Yazıları da aşağıdaki kodda şununla değiştiririm.
74 |
var yaziicin = ['Sahura' , 'İftara' , 'İftara' , 'İftara' , 'Sahura' , 'Sahura' , 'İftara' , 'İftara' , 'İftara' , 'Sahura']; |
Şimdi de geri sayım için gereken kodları yazıyorum.
73 74 75 76 77 78 79 80 81 82 83 84 85 |
var aradakifarkift = new Date((vakitnew-vakitsimdi)); var yaziicin = ['İmsağa' , 'Öğleye' , 'İkindiye' , 'Akşama' , 'Yatsıya' , 'İmsağa' , 'Öğleye' , 'İkindiye' , 'Akşama' , 'Yatsıya']; function iftbas() { var hoursift = Math.floor((aradakifarkift % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)); var minutesift = Math.floor((aradakifarkift % (1000 * 60 * 60)) / (1000 * 60)); var secondsift = Math.floor((aradakifarkift % (1000 * 60)) / 1000); aradakifarkift.setSeconds(aradakifarkift.getSeconds() - 1); document.getElementById('iftarsayac').innerHTML = '' + yaziicin[nmr] + ' ' + hoursift + ' saat ' + minutesift + ' dakika ' + secondsift + ' saniye kaldı'; if (aradakifarkift < 0) {clearInterval(iftsay);} } clearInterval(iftsay); var iftsay = setInterval(iftbas, 1000); |
Script dosyamı yazıyorum.
86 87 88 89 90 91 92 93 94 95 96 |
<?php $cachejs = ob_get_contents(); ob_end_clean(); $dosyajs = fopen($cacdosjs , 'w+'); //dosya oluşturma işlemi fwrite($dosyajs , "/** CACHE START-->\n"); fwrite($dosyajs , "ibrahimay.net \n **/\n"); fwrite($dosyajs , $cachejs); fwrite($dosyajs , "/**CACHE END**/\n"); fclose ($dosyajs); } ?> |
Bu dosyamda yazıldı ve işlem bitti. Sayacı görebilmek için index.phpyi javascript formatında gösterecek olan koda bu dosyayı include ediyorum.
97 98 99 100 101 102 103 104 105 106 107 108 109 |
<?php if(isset($_GET["tip"]) AND $_GET["tip"]=="js") { if(isset($_GET["sty"])){$sty=$_GET["sty"];}else{$sty=6;} header("Content-type: text/javascript; charset=utf-8"); echo "document.getElementById('NV').innerHTML+=`"; echo "<link rel='stylesheet' href='".$GLOBALS["urls"]."Betikler/ezan-vakitleri/styles/NVstyle.php?sty=$sty' media='all' />"; include($cacdoshtml); echo "`;"; include($cacdosjs); } else {include($cacdoshtml); echo "<script>"; include($cacdosjs); echo "</script>";} ?> |
Daha önceki uygulamamda artık sayaç görünecektir.
Vakit geldiğinde ezan okumasını istersem Ezan mp3 ü bulup 82. satırı şöyle yapabilirim.
Bir çok tarayıcı artık autoplay özelliğini eskisi gibi rahat ve serbestçe desteklemiyor, bilginiz olsun. muted yani sessizse oluyor ki neme yarar öyle auto play 🙂
82 |
if (aradakifarkift < 0){document.getElementById('iftarsayac').innerHTML =`<video autoplay><source src='/ezan-vakitleri/ezan.mp3' type='audio/mp3'></video>`; clearInterval(iftsay);} |
Değişik örnekler için demolar sayfama bakabilirsiniz.
Hazır dosyaları indirmek isterseniz :
Dosyalar üyelere özeldir: Giriş Yap
Yeni misin? Kayıt ol