v2.5.2
Giriş yap

Premium üyelik

wwx
359 defa görüntülendi

merhabalar süreli premium üyelik sistemi yapmak istiyorum

başlagıç tarihi
bitiş tarihi

olarak iki verim var if sorgusu ile eğer bitiş tarihi geldiyse premium olan sütunu 0 yapıyorum ama tekrar premium almak isterse sistem bunu sağlamıyor premium sütunu direkt 0 oluyor ne yapabilirim

Cevap yaz
Cevaplar (6)
h4ckdr0
533 gün önce
<?php

// 1. PDO veritabanı bağlantısı
try {
    $db = new PDO("mysql:host=localhost;dbname=premium", "root", "");
} catch ( PDOException $e ){
    print $e->getMessage();
}

// 2. Kullanıcı bilgilerini al
$query = $db->prepare("SELECT * FROM users WHERE id = ?");
$query->execute([1]);
$user = $query->fetch(PDO::FETCH_ASSOC);

// 3. Kullanıcı premium değilse ve bitiş tarihi geçmişse premium sütununu 0 yap
if($user['premium'] == 0 && $user['premium_end'] < time()){
    $query = $db->prepare("UPDATE users SET premium = 0 WHERE id = ?");
    $update = $query->execute([1]);
}

// 4. Kullanıcı premium ise ve bitiş tarihi geçmişse premium sütununu 0 yap
if($user['premium'] == 1 && $user['premium_end'] < time()){
    $query = $db->prepare("UPDATE users SET premium = 0 WHERE id = ?");
    $update = $query->execute([1]);
}

// 5. Kullanıcı tek seferlik premium ise ve bitiş tarihi geçmişse premium sütununu 0 yap
if($user['premium'] == 2 && $user['premium_end'] < time()){
    $query = $db->prepare("UPDATE users SET premium = 0 WHERE id = ?");
    $update = $query->execute([1]);
}

// 6. Kullanıcı tekrar premium almak istiyorsa premium sütununu 1 yap
if($user['premium'] == 0 && $user['premium_end'] > time()){
    $query = $db->prepare("UPDATE users SET premium = 1 WHERE id = ?");
    $update = $query->execute([1]);
}

Kod uzerinden ornekle gostermek gerekirse basitce bu sekilde denebilir

adroit
535 gün önce

Kodları göremediğimizi için pek yardımcı olamayacaz kardeşim. Mantık yürüterek ilerleyecez
İf ile başlangıç tarihi eğer bitiş tarihinden küçükse değer 0 yapılsın diye komut vermişsin.
Yeni premium aldığında premium değerini 1 olarak güncellerken bitiş tarihinide güncelliyor musun?
Otomatik 0 oluyorsa tarih güncellenmediği için olabilir.

m100
536 gün önce

bitiş tarihi geldikten sonra otomatik 0 yaptırıyorsan bir kontrol koyman lazım oraya veya bitiş tarihini ütopik bir değere çekersin fakat premium 0 kalır eğer alırsa yenilersin tarihi

weisse
542 gün önce

Bahsettiğin olayı tam olarak anlayamadım.

mek
548 gün önce

kodları paylaşırsan yardımcı olabiliriz.

house2k
548 gün önce

Sorunu anlayamadım yani zaten çalışıyor gibi görönüyor. Kişi premium alırsa veri sütununa 1 giriyor süre bitince 0 tekrar satın alıncada 1 giriyor.

Sanırım senin yaşadığın sorun şu şekilde sen direkt veri kaydettiriyorsun her satın almada, ama zaten bir veri kayıtlı ise senin onu güncellemen gerekiyor.