• 25-02-2017, 15:30:43
    #1
    Arkadaşlar elimde bir oyun var. Oyunda bir item alınıyor ve aldığı tarihten itibaren belirlediğim güne kadar geçerlilik süresi olsun istiyorum. O tarihten belli bir gün sonra veritabanından silinsin istiyorum.

    Yalnız aynı itemden 1 den fazla alınabiliyor. Aynı itemden alan kişi mesela farklı farklı tarihlerde aynı şeyden 5 tane almışsa aldığı günden itibaren geçerlilik süresi başlasın ve belirlediğim tarihte kaybolsun istiyorum.

    Bunu nasıl yapabilirim ? Google de felan buna benzer bir kodlama yardımcı döküman vs göremedim. Yardımcı olabilecek PHP konusunda bilgili deneyimli arkadaşlar var mı ?
  • 26-02-2017, 00:48:48
    #2
    Yardımcı olmasına olalım ama birkaç tane yol var.

    Birincisi daha kolayına gelecek bir işlem. Biraz karışık gibi gözükebilir.

    buy_items adlı bir tablon olsun ve bu tabloda satın alınan itemleri kayıt et. id, item_name, userID, created_time vs gibi sütunların olsun. Mesela her satın alınan itemin 1 ay kullanım hakkı var diyelim. PHP ile veritabanından itemleri çekeceksin, daha sonra foreach ile döngüye sokup süresi dolanları o tablodan sileceksin. Örnek kod;

    $getRows = $db->get_results("SELECT * FROM buy_items");
    if ($getRows){
         foreach($getRows as $row){
              $fark = time() - $row->created_time;
              if ( $fark > 360000 OR $fark === 360000 ){
                   #silme işlemi kodları
              }
         }
    }
    Basit bir yol göstermesi için yazdım bunu. Cron dosyasıyla her dakika çalıştırarak kontrol edebilirsin.

    Diğer ikinci yol ise mySQL ile trigger olarak aratma yaparsan detaylı bilgiler bulabilirsin.

    İyi çalışmalar.
  • 26-02-2017, 01:01:45
    #3
    Hangi veritabanını kulanıyorsun bilmiyorm ama profesyonel olarak olsun istiyorsan veritabanı için event yazmalısın oda cron gibi belirlediğin zaman aralığında sql kodlarını çalıştırır. crondan tek farkı veritabanında olmasıdır