الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

السادة المبرمجون الأفاضل ..

مغلق
بدأه عاشق السحاب في 1 يناير 2006 · 0 رد · 375 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1

السلام عليكم ورحمة الله ..

أعيتني السبل .. واسأل الله العلي القدير أن أجد ضالتي عندكم ..

في الكود المرفق المختص بحساب عدد المتواجدون في منتدي خلال 24 ساعة .. ويقوم باعادة الحساب في منتصف كل يوم .. وعند محاولتي تعديله ليقوم بالحساب كل 24 ساعة متتالية ولا يقف عند حاجز منتصف الليل .. اي عند منتصف الليل يجب ان يكون عدد المتواجدون هم الذين تواجدوا اخر 24 ساعة دون النظر عن توقيت معين ..

المهم .. ها هو الكود بين أيديكم .. وأسأل الله منكم العون والفائدة ..

// ### WHO WAS ONLINE TODAY ########################
if ((int)$maxusers['maxonline'] <= $totalonline)
{
	$time = time();
	$maxloggedin = "$totalonline " . $time . " " . $maxusers['maxonline'] . " " . $maxusers['maxonlinedate'];
	$maxusers[0] = $totalonline;
	$maxusers[1] = $time;
}

$todayloggedinusers = "";
$numbertodayonline = 0;
$numbertodayonlineinvisible = 0;

$todayusers=$DB_site->query("SELECT userid, username, usergroupid, lastactivity, options FROM ".TABLE_PREFIX."user
     	 WHERE lastactivity > " . (mktime(0,0,0,date("m"),date("d"),date("Y")) + (($bbuserinfo['timezoneoffset']-$vboptions[timeoffset])*3600)) . "
     	 ORDER BY username");

while ($todayuser=$DB_site->fetch_array($todayusers))
{
	$todayuser['options'] = intval($todayuser['options']);
	foreach($_USEROPTIONS AS $optionname => $optionval)
	{
  $todayuser["$optionname"] = iif($todayuser['options'] & $optionval, 1, 0);
	}

	$numbertodayonline++;
	$invisibleuser = '';
	$userid = $todayuser['userid'];
	$lastactivetime = vbdate($vboptions['timeformat'], $todayuser[lastactivity]);

	if ($todayuser['invisible']==1 and $bbuserinfo['usergroupid']!=6)
	{
  $numbertodayonlineinvisible++;
  continue;
	}
	if ($todayuser['invisible'] == 1)
	{ // Invisible User but show to Admin
  $invisibleuser = '*';
	}

	$username = fetch_musername($todayuser);

	if (!$todayloggedinuser)
	{
eval("\$todayloggedinuser = \"".fetch_template('forumhome_todayloggedinuser')."\";");
	}
	else
	{
eval("\$todayloggedinuser .= \", ".fetch_template('forumhome_todayloggedinuser')."\";");
	}
}




$DB_site->free_result($todayusers);

if ($bbuserinfo[usergroupid] == 6) {
	$todayonline = $numbertodayonline;
} else {
	$todayonline = $numbertodayonline - $numbertodayonlineinvisible;
}

if ((int)$maxusers[2] <= $numbertodayonline) {
	$time = time();
	$maxloggedin = $maxusers[0] . " " . $maxusers[1] . " $numbertodayonline " . $time;
	$maxusers[2] = $numbertodayonline;
	$maxusers[3] = $time;
}

$todayrecordusers = $maxusers[2];
$todayrecorddate = vbdate($vboptions['dateformat'],$maxusers[3]);

eval("\$todayloggedinusers = \"".fetch_template('forumhome_todayloggedinusers')."\";");

حين قمت بالتعديل في هذه الجزئية ..( المعادلة )

$todayusers=$DB_site->query("SELECT userid, username, usergroupid, lastactivity, options FROM ".TABLE_PREFIX."user
     	 WHERE lastactivity > " . (mktime(0,0,0,date("m"),date("d"),date("Y")) + (($bbuserinfo['timezoneoffset']-$vboptions[timeoffset])*3600)) . "
     	 ORDER BY username");

قمت بتغيير الرقم من 3600 الي 84600 .. كانت النتائج جيدة .. ولكن بالنسبة للمستخدم الخاص بي فقط ..

شكرا لاهتمامك وتعاونكم مقدما ..

هذا الموضوع مغلق.

مواضيع مشابهة