PDA

View Full Version : سوال: زمان ثبت اطلاعات کاربر به صورت یک ساعت پیش یا دقایقی پیش....



ساراعلی
پنج شنبه 17 اردیبهشت 1394, 13:37 عصر
سلام و خسته نباشید به همه دوستان لطفا اگه کسی در مورد مشکلی که برام پیش اومده توضیح کاملی بده ممنون میشم

من یک فرم دارم که با php اعتبار سنجی کردم و پس از دریافت اطلاعات کاربر در دیتابیس ذخیره میشه حالا میخوام زمان ثبت اطلاعات کاربر هم در دیتابیس ذخیره بشه و بعد به صورت (یک روز پیش ، یا یک ساعت پیش، یا دقایقی پیش )در سایت نمایش داده بشه چطوری اینکارو باید انجام بدم خواهشا اگه کسی میدونه فوری راهنماییم کنه ممنووووووووووووووووووووون :ناراحت:

prans.info
پنج شنبه 17 اردیبهشت 1394, 13:52 عصر
function ago($tm, $lang = 'fa', $ashtml = true) {
$local = array('style' => array('fa' => 'style="direction:rtl;"', 'en' => 'style="direction:ltr"'), 'times' => array('fa' => array('ثانیه', 'دقیقه', 'ساعت', 'روز', 'هفته', 'ماه', 'سال', 'دهه'), 'en' => array('second', 'minute', 'hour', 'day', 'week', 'month', 'year', 'decade')), 'ago' => array('fa' => 'پیش', 'en' => 'ago'));
if (intval($tm) > 0) {
$cur_tm = time();
$dif = $cur_tm - $tm;
$lngh = array(1, 60, 3600, 86400, 604800, 2630880, 31570560, 315705600);
for ($v = sizeof($lngh) - 1; ($v >= 0) && (($no = $dif / $lngh[$v]) <= 1); $v--)
; if ($v < 0)
$v = 0; $_tm = $cur_tm - ($dif % $lngh[$v]);
$no = floor($no);
if ($no <> 1 && $lang == 'en')
$local['times'][$lang][$v] .= 's'; $x = sprintf("%d %s ", $no, $local['times'][$lang][$v]);
if ($ashtml)
return " " . $x . ' ' . $local['ago'][$lang] . "";
else
return $x . ' ' . $local['ago'][$lang];
} else {
return '-';
}
}



echo ago($time,'fa',false);

ساراعلی
پنج شنبه 17 اردیبهشت 1394, 17:10 عصر
function ago($tm, $lang = 'fa', $ashtml = true) {
$local = array('style' => array('fa' => 'style="direction:rtl;"', 'en' => 'style="direction:ltr"'), 'times' => array('fa' => array('ثانیه', 'دقیقه', 'ساعت', 'روز', 'هفته', 'ماه', 'سال', 'دهه'), 'en' => array('second', 'minute', 'hour', 'day', 'week', 'month', 'year', 'decade')), 'ago' => array('fa' => 'پیش', 'en' => 'ago'));
if (intval($tm) > 0) {
$cur_tm = time();
$dif = $cur_tm - $tm;
$lngh = array(1, 60, 3600, 86400, 604800, 2630880, 31570560, 315705600);
for ($v = sizeof($lngh) - 1; ($v >= 0) && (($no = $dif / $lngh[$v]) <= 1); $v--)
; if ($v < 0)
$v = 0; $_tm = $cur_tm - ($dif % $lngh[$v]);
$no = floor($no);
if ($no <> 1 && $lang == 'en')
$local['times'][$lang][$v] .= 's'; $x = sprintf("%d %s ", $no, $local['times'][$lang][$v]);
if ($ashtml)
return " " . $x . ' ' . $local['ago'][$lang] . "";
else
return $x . ' ' . $local['ago'][$lang];
} else {
return '-';
}
}



echo ago($time,'fa',false);


مرسی اگه در موردش توضیح هم بدید ممنون میشم این $time که echo کردید تو خط پایین فک کنم ایراد داره بعدم تو دیتابیس این چطوری کار میکنه؟؟

prans.info
پنج شنبه 17 اردیبهشت 1394, 17:22 عصر
مرسی اگه در موردش توضیح هم بدید ممنون میشم این $time که echo کردید تو خط پایین فک کنم ایراد داره بعدم تو دیتابیس این چطوری کار میکنه؟؟
باید تاریخ رو در دیتابیس به صورت استاتیک ثبت کنید (2014-01-24 13:25:59) بعد تاریخ رو از دیتابیس بگیرید و بدید به تابع ago

ساراعلی
پنج شنبه 17 اردیبهشت 1394, 17:59 عصر
تو رو خدا بیشتر توضیح بدید من هیچی در مورد ثبت تاریخ نمیدونم اخه مبتدی هستم چطوری تاریخ رو به صورت استاتیک تو دیتابیس ثبت کنم؟؟؟ وقتی کاربر یک فرم رو submit میکنه چطوری میشه زمان ثبت اطلاعاتش رو به دیتابیس داد و بعد تو سایت به صورت بالا نشون داد؟؟

prans.info
پنج شنبه 17 اردیبهشت 1394, 18:18 عصر
تاریخ رو اینطوری در دیتابیس ذخیره کنید :


$date = date ('Y-m-d H:i:s');
mysql_query ("INSERT INTO `post` (`title`,`date`) VALUES ('test','{$date}')");

و اینطوری نشون بدید :


$result = mysql_fetch_assoc (mysql_query ("SELECT * FROM `post`"));
echo ago (strtotime($result ['date']),'fa',false);

ساراعلی
پنج شنبه 17 اردیبهشت 1394, 18:49 عصر
من$result اینطوری نوشتم که با result شما فرق داره چیکارش کنم؟جواب نمیده



$result = mysql_query("SELECT * FROM client",$con);
while($row = mysql_fetch_array($result)){ echo "<br>";

prans.info
پنج شنبه 17 اردیبهشت 1394, 23:29 عصر
کد کامل بخش مورد نظر رو بزارید تا براتون درست کنم

ساراعلی
جمعه 18 اردیبهشت 1394, 11:19 صبح
این تابع رو از اینترنت گرفتم ولی نمی دونم چطوری بر اساس زمان ثبت اطلاعات کاربر در دیتابیس، ازش خروجی بگیرم!!!!!!! تو دیتابیسم یک ردیف دارم که date هست و نوعش رو datetime تعیین کردم






function timeAgo($time_ago){ $cur_time = time(); $time_elapsed = $cur_time - $time_ago; $seconds = $time_elapsed ; $minutes = round($time_elapsed / 60 ); $hours = round($time_elapsed / 3600); $days = round($time_elapsed / 86400 ); $weeks = round($time_elapsed / 604800); $months = round($time_elapsed / 2600640 ); $years = round($time_elapsed / 31207680 );// Seconds if($seconds <= 60){ echo "$seconds seconds ago"; }//Minutes else if($minutes <=60){ if($minutes==1){ echo "one minute ago"; } else{ echo "$minutes minutes ago"; } }//Hours else if($hours <=24){ if($hours==1){ echo "an hour ago"; }else{ echo "$hours hours ago"; } }//Days else if($days <= 7){ if($days==1){ echo "yesterday"; }else{ echo "$days days ago"; } }//Weeks else if($weeks <= 4.3){ if($weeks==1){ echo "a week ago"; }else{ echo "$weeks weeks ago"; } }//Months else if($months <=12){ if($months==1){ echo "a month ago"; }else{ echo "$months months ago"; } }//Years else{ if($years==1){ echo "one year ago"; }else{ echo "$years years ago"; } }

tuytoosh
شنبه 19 اردیبهشت 1394, 03:05 صبح
از این پکیج خیلی معروف استفاده کنید : carbon.nesbot.com (http://carbon.nesbot.com/)
کلی امکانات دیگه هم داره...