Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
7
Cevap
514
Tıklama
0
Öne Çıkarma
Tarihle alakalı bir uzman sorusu
G
11 yıl
Er
Konu Sahibi

Merhaba
uzaman sorusu dedim çünkü iki gün boyunca istediğim gibi birşeyi anlatan tek bir web sayfası bulamadım.

sorunum şu:

talep formuna veri girerken kayittarihi sutununa current_timestamp olarak otomatik tarih atıyor.
ben ikinci bir tarih alanı daha oluşturup kayittarihi2 desem ve bu alana da otomatik olarak iki gün sonrasının tarihini nasıl attırabilirim?
herkes aynı şeyleri anlatmış
fakat phpmyadminde cinsi date olan sutunda 'tanımlandığı gibi' yazan default value de bi örnek veren olmamış.

Aslında amacım bir talep formunda gelen bir talep e iki gün geçmesine rağmen cevap verilmezse ('sonuc' sutununda hala değer 'Onay Bekliyor' ise) uyarı verdireceğim.

şöyle düşüncelere gittim ama beceremedim
mysql_query("select * from talepler where kayittarihi between kayittarihi and DATE_ADD kayittarihi, INTERVAL +2 DAY AND sonuc='Onay Bekliyor'");


sonra bu düşünceden vazgeçip yukarda anlattığım gibi bir ikinci tarih (zamanaşımı) sutunu koymaya karar verdim..
kod yada fikir olarak birde kullanım örneği olarak yardım ederseniz sevinirim.
Teşekkürler

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



B
11 yıl
Yarbay

Naptın sen öyle. Kayıt tarihi zaten var. Hesaplama esnasında iki gün ekle. Ayrı field açılmaz bunun için.



< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @gayferengi
G
11 yıl
Er
Konu Sahibi

anlatamadım sanırım.
benim amacım iki günden fazla bekleyen talepleri işlyebilmek...
cronjob ile mail bildirimleri yada zamanında destek için prim vs işleri için düşünmüştüm..
belki ben hala anlamadım

am sanıyorumki anlatamadım.


Bu mesaja 1 cevap geldi.
G
11 yıl
Er
Konu Sahibi

hiç extra form verisi göndermeden
sql içinde aynı anda current timestamp olarak biri o anki tarihi diğerine ise o anki tarihe iki gün ekleyerek otomatik veri girdirmek mümkün değilmi yani?


Bu mesaja 1 cevap geldi.
G
11 yıl
Er
Konu Sahibi

yahu arkadaş nere yazdıysam bi cevap alamadım.
yine de teşekkürler.



A
11 yıl
Yüzbaşı

Yapmak istediğin şey için bir zaman fonksiyonuna ihtiyacın var.

Örneğin elinde bir tablon var

tabloadı: talep

id
icerik
tarih


Bu şeklde varsayalım. talep oluşturulduğu zaman tarih stununa belirli şekilde bir tarih yönlendirmen lazım. tarih stunun türü date olmalı. ve şu şekilde olmalı 2014-03-28

talebin ekendiği php kodlarında otomatik atıyorsa tarhi tarih yapısını buna çevir. date("Y-m-d") bunu veritabanına insert ettir.

Bitş tarihi diye yeniden bir alan oluşturman gerekmez. bunun için tarih fonksiyonu nu alıp eğer bitiştarihinden 2 sonra ise şu işlemleri yap diye fonksiyon yazman lazım.


ayrıca talep işlemlerinin yapısını değiştirmen lazım. tablona ayrıca bir alan ekleyeceksin örneğin : durum

durum değeri sayısal içerikler alacak. örneğin birisi talep oluşturdu diyelim. talep oluştururken status u onay bekliyor ise durum değeri 0 omalı.

inset ederken status='0' şeklinde yapman lazım. bunun amacı yapacağımız fonksiyonda kontrolleri sağlamak.



function tarihfarki($tarih_gir){ 
$yeni_tarih=explode("-",$tarih_gir);
$son_gun=$yeni_tarih[2];
$son_ay=$yeni_tarih[1];
$son_yil=$yeni_tarih[0];

$ilk_gun=date("d");
$ilk_ay=date("m");
$ilk_yil=date("Y");

$ek[1]=31;
$ek[2]=28;
$ek[3]=31;
$ek[4]=30;
$ek[5]=31;
$ek[6]=30;
$ek[7]=31;
$ek[8]=31;
$ek[9]=30;
$ek[10]=31;
$ek[11]=30;
$ek[12]=31;


$yil_fark=($son_yil-$ilk_yil) * 365 ;
for($i=1;$i<$son_ay;$i++){

$son_ay_toplam=$son_ay_toplam+$ek[$i];
}

$toplam_son_gun=$son_ay_toplam+$son_gun;

for($m=1;$m<$ilk_ay;$m++){
$ilk_ay_toplam=$ilk_ay_toplam+$ek[$m];
}

$toplam_ilk_gun=$ilk_ay_toplam+$ilk_gun;
$sonuc=$toplam_son_gun-$toplam_ilk_gun+$yil_fark;
return $sonuc;

}





bu senin tarih fonksiyonun olacak. kendi kullandığım fonksiyon.

şimdi bunu derleyelim dosya adımız index.php



 
<?
session_start();
ob_start();
include "baglan.php";




function tarihfarki($tarih_gir){
$yeni_tarih=explode("-",$tarih_gir);
$son_gun=$yeni_tarih[2];
$son_ay=$yeni_tarih[1];
$son_yil=$yeni_tarih[0];

$ilk_gun=date("d");
$ilk_ay=date("m");
$ilk_yil=date("Y");

$ek[1]=31;
$ek[2]=28;
$ek[3]=31;
$ek[4]=30;
$ek[5]=31;
$ek[6]=30;
$ek[7]=31;
$ek[8]=31;
$ek[9]=30;
$ek[10]=31;
$ek[11]=30;
$ek[12]=31;


$yil_fark=($son_yil-$ilk_yil) * 365 ;
for($i=1;$i<$son_ay;$i++){

$son_ay_toplam=$son_ay_toplam+$ek[$i];
}

$toplam_son_gun=$son_ay_toplam+$son_gun;

for($m=1;$m<$ilk_ay;$m++){
$ilk_ay_toplam=$ilk_ay_toplam+$ek[$m];
}

$toplam_ilk_gun=$ilk_ay_toplam+$ilk_gun;
$sonuc=$toplam_son_gun-$toplam_ilk_gun+$yil_fark;
return $sonuc;

}


?>




veritabanı bağlantı dosyanı yukarıdakiyle değiştir. include "baglan.php";



daha sonra tablomuzdan verileri çekeceğiz. ve while döngüsü ile tüm sorgulayacağız.



$sql = mysql_query("SELECT * FROM talep");
while($cek = mysql_fetch_assoc($sql)){

şimdi gelelim kontrolleri sağlayacağımız kısıma


if($cek['durum'] == "0") {

durum değeri 0 ise şu işlemleri yap diyeceğiz.


if($cek['durum'] == "0"){ $bitistarihi = date("Y-m-d" ,strtotime("+2 days",strtotime($cek['kayittarihi']))); }


burada ise zaman kontrol fonksiyonumuzu oluşturduk. yani durum değeri 0 ise $bitistarihi kayt tarihinden 2 gn sonra olsun dedik.


şimdi kayıt tarhi ile zaman fonksiyonumuz arasından farkını alıp kullanacağız

$fark = tarihfarki($bitistarihi);


fark değişkeni oluşturup önceden oluşturmuş olduğumuz tarihfarki fonksiyonumuz içerisinde $bitistarihi tarihini çalıştırdık


bundna sonrası ise çok basit

if($fark <= "0"){

şayet fark 0 ise yani taep eklenme tarihi 2014-04-15 ise bugünün tarihi 201-04-17 eğer aradaki fark sıfır ise yani kayıt tarihinden 2 gün sonra ise şunları yap diyoruz



bundna sonrası sana kalmış birşey olacaktır. nasıl bir uyarı verdirtmek istiyorsan onun eklersin dilersen mail atarsın.




Şimdi dosyalarımızı derleyeip tek bir şablon haline sokalım.





<? 
session_start();
ob_start();
include "baglan.php";



///zaman fonksiyonu başlangıç
function tarihfarki($tarih_gir){
$yeni_tarih=explode("-",$tarih_gir);
$son_gun=$yeni_tarih[2];
$son_ay=$yeni_tarih[1];
$son_yil=$yeni_tarih[0];

$ilk_gun=date("d");
$ilk_ay=date("m");
$ilk_yil=date("Y");

$ek[1]=31;
$ek[2]=28;
$ek[3]=31;
$ek[4]=30;
$ek[5]=31;
$ek[6]=30;
$ek[7]=31;
$ek[8]=31;
$ek[9]=30;
$ek[10]=31;
$ek[11]=30;
$ek[12]=31;


$yil_fark=($son_yil-$ilk_yil) * 365 ;
for($i=1;$i<$son_ay;$i++){

$son_ay_toplam=$son_ay_toplam+$ek[$i];
}

$toplam_son_gun=$son_ay_toplam+$son_gun;

for($m=1;$m<$ilk_ay;$m++){
$ilk_ay_toplam=$ilk_ay_toplam+$ek[$m];
}

$toplam_ilk_gun=$ilk_ay_toplam+$ilk_gun;
$sonuc=$toplam_son_gun-$toplam_ilk_gun+$yil_fark;
return $sonuc;

}

///zaman fonksiyonu bitiş

//tablo sorgusu
$sql = mysql_query("SELECT * FROM talep");
while($cek = mysql_fetch_assoc($sql)){

///durum değeri o ise işlem yap
if($cek['durum'] == "0") {

///durum değeri 0 ise bir değişken ürettik $bitistarihi bitiş tarihi kayıt tarihinden 2 gün sonra dedik
if($cek['durum'] == "0"){ $bitistarihi = date("Y-m-d" ,strtotime("+2 days",strtotime($cek['kayittarihi']))); }


/// bitiş tarihi ile kayıt tarihi arasındaki farkı aldık
$fark = tarihfarki($bitistarihi);


/// şayet tarihler ararsındaki fark 0 ise şu işlemleri yap dedik
if($fark <= "0"){




/// şayet kayıt tarihinden 2 gün sonra ise şunları yap dediğimiz alandır burası buraya istediğin fonksiyonu yazablrsin örneğin eposta atabilirsin.


}
}
}

?>




takıldığın biryer olursa yardımcı olurum.

İyi çalışmalar.


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @gayferengi
G
11 yıl
Er
Konu Sahibi

hallettim çok teşekkür ederim baya zahmet verdim


Bu mesaja 1 cevap geldi.
A
11 yıl
Yüzbaşı

Rica ederim.



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.