Bir tarih fonksiyonu buldum nette. 2 ayrı tarih alıp güne bölüyor.
Yalnız bu kadar karmaşaya gerek var mı bilmiyorum. Sanki tarihlerin unix zamanını alıp 0'a eşitlesek daha mantıklı. Ama benim kod bilgim yetmiyor.
Amaç şu;
Müşteri bir sipariş oluşturdu. müşterinin buna ödeme yapması için 3 gün süresi var.
3 gün geri sayacak ve müşteri ödeme yapmazsa unix zaman 0'a eşitlendiğinde veritabanından sipariş silinecek.
Aşağıdaki kodu bu şekilde düzenlememe yardım ederseniz çok sevinicem.
Birde tarih değişkeninin orada şu hatayı veriyor;
Notice: A non well formed numeric value encountered in /home/xxxxx/public_html/xxxxxxx/siparislerim.php on line 91
Bunu da vermesin diye @ ile bastırdım. Ama hiç vermese daha iyi tabi.
Ayrıca $kalan_sure değişkenindeki $saat kısmını görmezden gelebilirsiniz. onu başka yerden çekiyorum.
function tarihFark($tarih1,$tarih2,$ayrac)
{
list($y1,$a1,$g1) = explode($ayrac,$tarih1);
list($y2,$a2,$g2) = explode($ayrac,$tarih2);
$t1_timestamp = mktime('0','0','0',$a1,$g1,$y1);
$t2_timestamp = mktime('0','0','0',$a2,$g2,$y2);
if ($t1_timestamp > $t2_timestamp)
{
$result = ($t1_timestamp - $t2_timestamp) / 86400;
}
elseif ($t2_timestamp > $t1_timestamp)
{
$result = ($t2_timestamp - $t1_timestamp) / 86400;
}
return $result;
}
$bugun = date("Y-m-d"); //burdan aldığı tarihi unix alsın istiyorum
$tarih = @date("Y-m-d", $gecmis_zaman); // Bunu da unix almalı ve başındaki @ işaretini kaldırmam lazım.
$gun = tarihFark($tarih,$bugun,'-');
if($bugun == $tarih ){
$satis_kaldir = $db->prepare("DELETE FROM Siparis WHERE satis_no=?");
$satis_kaldir->execute(array($satis_no));
}else{
$kalan_sure = $gun." gün ".date("H:i:s",$saat);
}
Birde şunu kendim yazdım ama ne kadar sağlıklı emin değilim. Fikrinizi söylerseniz sevinirim.
$siparis_zamani = "1499136466"; //unix time sipariş oluşturma zamanı
$bugun = time(); //unix time bu gün
$fark = $siparis_zamani - $bugun; //iki tarih arasındaki zaman farkı
if($fark <= "259200"){ //3 günden küçükse bunu yap
$saat = date("H:i:s",$fark);
echo "2 gün ".$saat;
}elseif ($fark <= "172800") { //2 günden küçükse bunu yap
$saat = date("H:i:s",$fark);
echo "1 gün ".$saat;
}elseif ($fark <= "84600") { //1 günden küçükse bunu yap
$saat = date("H:i:s",$fark);
echo $saat;
}elseif ($fark <= "0") { // sıfıra ulaştıysan siparişi sil
$satis_kaldir = $db->prepare("DELETE FROM Siparis WHERE satis_no=?");
$satis_kaldir ->execute(array($satis_no));
}else {
echo "işlem başarısız";
}