Premium üyelik
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
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (6)
<?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
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.
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.