PHP/mySQL का उपयोग करके, उपयोगकर्ता को प्रत्येक दिन अपने सदस्य खाते में एक पूर्णांक बिंदु प्रदान किया जाता है। डेटा का उपयोग यह निर्धारित करने के लिए किया जाएगा कि क्या एक बिंदु दिया जाना चाहिए ये mysql फ़ील्ड हैं: निर्माण दिनांक (टाइमस्टैम्प) और अंतिम लॉगिन (यूनिक्स टाइम)।अनुदान उपयोगकर्ता एक बिंदु प्रत्येक दिन
उपयोगकर्ता इन लॉग इन करने के लिए इन बिंदुओं को प्रदान करने की प्रक्रिया निर्धारित होती है। मेरा सवाल यह है कि अंतिम लॉगिन के बाद से कितने दिन बीत चुके हैं यह निर्धारित करने का सबसे प्रभावी तरीका क्या है? दूसरा, यदि कोई उपयोगकर्ता प्रत्येक दिन लॉग इन करता है, तो मैं कैसे निर्धारित करूं कि 24 घंटे बीत चुके हैं और एक बिंदु दिया जाना है? पिछले दिन दिए गए बिंदुओं के बराबर (1 प्रति दिन)।
वर्तमान में मैं इस कोड का उपयोग कर रहा हूँ:
/*
** Updates Points based on days since last visit
*/
static function UpdatePoints($username)
{
$getlog = System::$mySQL->Select("lastLog, creation FROM users WHERE username='$username'");
$log = System::$mySQL->Fetch($getlog);
$offset = (TIME() - $log['lastLog'])/86400; // 24hrs
$lastlog = round($offset); // in days
if($lastlog > 0)
{
System::$mySQL->Update("users SET points=points+".$lastlog." WHERE username='$username'");
}
}
मार्कअप एक तरफ, यह स्पष्ट मेरी कोड अदूरदर्शा है। यदि उपयोगकर्ता रोजाना एक बार लॉग इन करता है, तो उन्हें कोई अंक नहीं मिलता है। इसलिए मुझे निर्माण तिथि फ़ील्ड का उपयोग करके ऐसा करने के लिए सही विधि निर्धारित करनी होगी। मैं आज अपने सिर को इसके चारों ओर लपेट नहीं सकता, कोई सुझाव? धन्यवाद।
मध्यरात्रि में बताए गए समय में निश्चित बिंदु पर अंक दिए जाने पर शायद आसान हो सकता है। उन लोगों के लिए बहुत ही अनुचित, जो 12:01 बजे पंजीकरण करते हैं, जो 11:59 बजे पंजीकृत होते हैं, लेकिन सदस्यता के कुछ महीनों के बाद, इस तरह का अंतर एक गोल करने वाली त्रुटि है। –
आपने कभी भी गणित की तारीख नहीं की है (उर्फ, 86400 से विभाजित करके)। किसी भी वर्ष में, एक 23 घंटे का दिन और एक 25 घंटे का दिन होता है। हमेशा एक बुद्धिमान डेटाटाइम ऑब्जेक्ट का उपयोग करें। अन्यथा ऐसा करने के लिए अपने कार्यक्रम में छिपी हुई बग प्रोग्राम करना है। – riwalk
@ Stargazer712 टिप के लिए धन्यवाद, मैंने कभी ऐसा नहीं माना। – mrtwidget