• 29-08-2010, 21:24:16
    #1
    merhaba arkadaşlar,

    kullancılar aylık olarak ödeme yapıyorlar.

    SQL yapısı

    id tutar1 tarih1 tutar2 tarih2 tutar3 tarih3

    1 100 2010-08-30 200 2010-09-30 300 2010-10-30
    2 150 2010-08-30 250 2010-09-30 350 2010-10-30

    ödemesi yaklaşan (7gün içinde) üyelerinin id lerini ve tutarı ekrana nasıl bastırabilirim?
    kullanıcıya ait diğer ödemeleri gözükmesi sadece yaklaşan ödemesi ve id si ekranda olsun.
  • 29-08-2010, 21:38:05
    #2
    bu iş o tarih tablolarını epoch olarak değiştirmezseniz zordur
    örneğin
    bugün
    29-09-2010 18:37:27
    epoch değeri = 1283107048

    bir saniye sonraki epoch değeri 1283107049 olacaktır aradaki kolaylığı siz anlayabilirsiniz umarım
  • 29-08-2010, 21:43:33
    #3
    Deimosx adlı üyeden alıntı: mesajı görüntüle
    bu iş o tarih tablolarını epoch olarak değiştirmezseniz zordur
    örneğin
    bugün
    29-09-2010 18:37:27
    epoch değeri = 1283107048

    bir saniye sonraki epoch değeri 1283107049 olacaktır aradaki kolaylığı siz anlayabilirsiniz umarım
    epoch olarak değiştirdiğimi varsayarsak nasıl olucak sorgusu?
  • 29-08-2010, 22:16:04
    #4
    baktım nasıl birşey olabilir diye böyle bir fonksiyon yaptım epocha çevirmene gerek kalmıcak
    function tarihcevir($tarih){
    list($y, $m, $d) = explode('-', $tarih);
    $tarih = mktime(0, 0, 0, $m, $d, $y);
    return $tarih;
    }
    örneğin tarih1 sütunundan gelen veri $tarih1 değişkeninde
    2010-08-14 olsun
    fonksiyon içerisine soktuğumuzda
    echo tarihcevir($tarih1);
    1281733200
    değeri döndürüyor

    sonra bir hafta öncesini sokuyoruz
    1 hafta öncesini öğrenmek için bunu kullanıyorsunuz
    $tarih2=tarihcevir(date("Y-m-d", strtotime("-1 weeks")));
    echo $tarih2;
    getireceği değer
    1281128400
    bu iki tarih arasındaki fark 7 gündür epoch düzeninde 7 gün
    604800 dür
    kontrolüne geçelim
    if(($tarih1-$tarih2) <= 604800){
    echo 'Ödeme için 7 günden az bir süre var';
    }else {
    echo 'Ödeme için daha zamanınız var';
    }
    içindeki sayılar çok karışık beynim allak bullak oldu bi an baya zorlandım yarım saattir buna kafa yoruyorum
  • 29-08-2010, 22:19:19
    #5
    yukarıda cevap verilmiş geç kaldım.
  • 29-08-2010, 22:27:27
    #6
    Deimosx php tarafında nasıl yapacağını anlatmış ama bu işlemin daha performanslı olmasını istiyorsan MYSQL tarafında yapman gerekir.

    MYSQL için DATE SUB ve DATE FORMAT fonksiyonlarını araştırırsan çok daha kolay bir şekilde yapabilirsin bu işlemleri.
  • 29-08-2010, 23:17:02
    #7
    Üyeliği durduruldu
    tarih alanları "date,datetime,timestamp" tiplerinden biriyse mysqlin to_unixtime fonksiyonunu kullanabilirsiniz. eğer varchar ise to_unixtime(to_date( alan_adi )) kullanırsınız.
  • 29-08-2010, 23:49:31
    #8
    kafanız karıştı ise tek bir fonksiyon olarak bunu kullanabilirsiniz yapmanız gereken odeme_bildirim7gun fonksiyonuna mysqlden tarih sütununu aktarmanızdır

    function odeme_bildirim7gun($tarih){
    list($y, $m, $d) = explode('-', $tarih); 
    $tarih = mktime(0, 0, 0, $m, $d, $y); 
    $tarih2=tarihcevir(date("Y-m-d", strtotime("-1 weeks")));  
    if(($tarih-$tarih2) <= 604800){ 
    $odeme= 'Ödeme için 7 günden az bir süre var'; 
    }else { 
    $odeme= 'Ödeme için daha zamanınız var'; 
    }
    return $odeme;
    }
  • 30-08-2010, 00:42:22
    #9
    Deimosx adlı üyeden alıntı: mesajı görüntüle
    kafanız karıştı ise tek bir fonksiyon olarak bunu kullanabilirsiniz yapmanız gereken odeme_bildirim7gun fonksiyonuna mysqlden tarih sütununu aktarmanızdır

    function odeme_bildirim7gun($tarih){
    list($y, $m, $d) = explode('-', $tarih); 
    $tarih = mktime(0, 0, 0, $m, $d, $y); 
    $tarih2=tarihcevir(date("Y-m-d", strtotime("-1 weeks")));  
    if(($tarih-$tarih2) <= 604800){ 
    $odeme= 'Ödeme için 7 günden az bir süre var'; 
    }else { 
    $odeme= 'Ödeme için daha zamanınız var'; 
    }
    return $odeme;
    }
    bu sekılde yaptım halen 7den fazla zamannız var dıyor
    bir yerde mantık hatası mı yaptım acaba hocam?

       <?php
    $tarih="2010-09-01";
    
    date_default_timezone_set('Europe/Istanbul');
    function tarihcevir($tarih){
    list($y, $m, $d) = explode('-', $tarih);
    $tarih = mktime(0, 0, 0, $m, $d, $y);
    return $tarih;
    }
    
    function odeme_bildirim7gun($tarih){
    list($y, $m, $d) = explode('-', $tarih); 
    $tarih = mktime(0, 0, 0, $m, $d, $y); 
    $tarih2=tarihcevir(date("Y-m-d", strtotime("-1 weeks")));  
    echo "$tarih<br>";
    echo "$tarih2<br>";
    if(($tarih-$tarih2) <= 604800){ 
    $odeme= 'Ödeme için 7 günden az bir süre var'; 
    }else { 
    $odeme= 'Ödeme için daha zamanınız var'; 
    }
    return $odeme;
    }
    echo odeme_bildirim7gun($tarih); 
    
    ?>
    daha zamanınız var diyor halbuki 2gün sonra..