بایگانی دستهٔ PHP

تبدیل تاریخ استاندارد MySql به فرمت دلخواه


سلام. باز هم Snippet جدیدی نوشتم! اما در آن حد پیچیده نبود که تبدیل به کلاس شود و در PHPClasses بالاگذاری کنم.

دیتابیس پرووایدر MySql نوع داده‌ای دارد به اسم DateTime که با فرمتی استاندارد تاریخ و ساعت را ذخیره می‌کند. یکی از مزیت‌های روش استاندارد MySql، این است که می‌توان بجای محاسبه تاریخ و ساعت به کمک تابع Date، از توابع SQL استفاده کرد:

INSERT INTO `table` ( `id` , `time date` ) VALUES ( NULL , NOW() );

با استفاده از تابع NOW، هسته‌ی MySql تاریخ و زمان را به فرمت استاندارد محاسبه و ذخیره می‌کند. مثلا:

2010-08-14 14:19:21

خب شاید این روش ذخیره تاریخ، روش دلخواه برنامه نویس نباشد، ولی باید استاندارد ها را رعایت کرد. یک راه غلط ذخیره تاریخ به صورت رشته در دادگان(DataBase) است که متاسفانه بعضی از آن استفاده می‌کنند و حتی تاریخ شمسی را هم به صورت رشته ذخیره می‌کنند!

خب خوشبختانه اینجا من و PHP به کمک شما می‌شتابیم و تابعی (که هنوز هم جای بهبود دارد-دیشب در خواب روش بهبودش را دیدم! اما الان یادم نمی‌آید) را قرار می‌دهیم برای این کار:

/* Analyses time-date and returns mktime!*/
function analyse_time_date($tdstr)
{
	// tdstr : 2010-08-12 11:41:14
	//         0000000000111111111
	//         0123456789012345678
	$year   = (int)substr($tdstr,0,4);
	$month  = (int)substr($tdstr,5,2);
	$day    = (int)substr($tdstr,8,2);
	
	$hour   = (int)substr($tdstr,11,2);
	$minute = (int)substr($tdstr,14,2);
	$second = (int)substr($tdstr,17,2);
	
	return mktime($hour,$minute,$second,$month,$day,$year);
}

/* Changes The MYSQL standard time format to ideal time/date format */
function format_time_date($tdstr,$format,$jalali=true)
{
	if($jalali && function_exists('jdate'))
		return jdate($format,analyse_time_date($tdstr));
	else
		return date($format,analyse_time_date($tdstr));
}

تابع analyse_time_date ساعت و تاریخ استاندارد را می‌گیرد و با mktime آن را به تعدا ثانیه‌های گذشته از زمان مبدا PHP تبدیل می‌کند. حالا این عدد را با تابع format_time_date می‌توان به فرمت دلخواه در آورد.

مثال:

<?php
require 'formattimedate.php';

// make connection to mysql
// .
// .
// .

$queryID = mysql_query('SELECT * FROM `post` WHERE `id` = 50 LIMIT 1;');
$info = mysql_fetch_array($queryID);

$time_date = format_time_date($info['time date'] , 'F j, Y H:i');

echo 'The post ' , $info['post title'] , ' has been sent in ' , $time_date , ' .';

unset($queryID,$info,$time_date);
exit();
?>

بیان دیدگاه

یکبار برای همیشه: تمام PHP Manual را آفلاین داشته باشید!


هیچ برنامه نویس PHP ای از Manual بی نیاز نمی‌شود. بارها و بارها ممکن است مجبور شوید به Manual مراجعه کنید تا درباره‌ی تابع ناشناخته ای که دیدید یا درباره‌ی تابعی که کامل آن را نمی‌شناسید اطلاعات کاملتری کسب کنید. اما ممکن است در آن موقع دسترسی به اینترنت نداشته باشید یا وصل شدن به اینترنت و پیداکردن تابع و خواندن راهنمای آن کار وقت گیری باشد.

اما مشکلی نیست شما میتوانید تمام مستندات PHP را چه انگلیسی چه فارسی و چه به زبان‌های دیگر روی رایانه‌تان بارگیری کنید.

بارگیری مستندات PHP به زبان انگلیسی:

HTML.GZ – 3.845 MB – Dowload Here
TAR.GZ –
5.747 MB – Download Here
CHM – 10.613 MB – Download Here

بارگیری مستندات PHP به زبان قند پارسی:

HTML.GZ – 3.956 MB – Dowload Here
TAR.GZ – 5.875 MB – Download Here
CHM – 10.900 MB – Download Here

اینکه PHP مستنذاتش را فارسی هم ارائه می‌کند خیلی خوب است، نه؟ کمی هم به ما اهمیت داده اند! همه‌ی سایت های خارجی زبان یونانی و عبری و آنگولایی و بورکینا فاسوی رو پشتیبانی می‌کنند ولی فارسی را نه(جز گوگل و php) اما PHP بجای آنگولایی و بورکینا فاسوی مستنداتش را به این زبان ها ارائه می‌کند:
انگلیسی، برزیلی، فرانسوی، آلمانی، ژاپنی، لهستانی، رومانیایی، فارسی، اسپانیایی، ترکی

PHP Manual

by:
Mehdi Achour

Friedhelm Betz

Antony Dovgal

Nuno Lopes

Hannes Magnusson

Georg Richter

Damien Seguy

Jakub Vrana

And several others

2010-07-30

Edited By: Philip Olson

© 1997-2010 the PHP Documentation Group

پ.ن1: من شدم کاشف ایرانی ها! در فایر فاکس ، در پریزن بریک ، در GTA ، در کتاب Active Skills For Reading ، و در گروه مستندات PHP : مهدی آشور

پ.ن2: بعضی لینک‌های پ.ن1 را نمی‌توانید ببینید تا زمان انتشار نهایی مطلب.

, ,

۱ دیدگاه

به سادگی آب خوردن فید RSS2 بسازید!


سلام. اگر با PHP آشنایی دارید، اکیدا بهتون توصیه می‌کنم که این مطلب رو بخونید.

اگر مطلب چند نکته در باره سرعت رو خونده باشید، متوجه می‌شید که من در حال نوشتن یک CMS هستم! بله نوشتن یک CMS! و هر از چند گاهی اگر تجربه جدیدی پیدا کردم، کلاسی نوشتم که به درد عموم برنامه نویسهای PHP بخوره و از این دست کارها کردم، مطلبی در باره اش می‌نویسم. الان هم نوبت کلاسی است که امروز ظهر توسط مدیر PHP Classes تایید شد، RSS2 Feed Maker.

کلاسی که با اینکلود کردن آن در برنامه تان به سادگی و بدون نیاز به بلد بودن ذره ای از XML، یک فید(خوراک-خبرمایه) تر و تمیز و مهمتر از همه Validate شده بسازید.

روش کار با کلاس هم خیلی سادس. من اینطور استفاده کردم- قسمت های مهم Bold شده اند و مهمتر از اونها Italic:

<?php
header(«Content-Type: application/atom+xml»);
require ‹rssfeed.class.php‹;

$rss = new RSSFeed();

$rss->setinfo(‹encoding›,‹utf-8›);
$rss->setinfo(‹title›,’Page title’);
$rss->setinfo(‹link›,’https://raindigital.wordpress.com/’);
$rss->setinfo(‹description›,’نوشته های گاه و بیگاه یک معتاد به اینترنت’);
$rss->setinfo(‹language›,’fa-IR);
$rss->setinfo(‹lastbuilddate›,date(‹D, d M Y H:i:s‹));

$l = $db->select(‹*›,’post›,’`show` = \’1\»,$info[‹max_rss›],array(‹id›,’DESC›));

خط بالایی + چند خط پایین رو لزوما نباید عیناً مثل من استفاده کنید. فقط تابعیست برای به دست آوردن مطالب از دیتابیس و حلقه ای برای اضافه کردن آنها به فید.

if(mysql_num_rows($l)!=0)
{
while($res=mysql_fetch_assoc($l)){
$rss->addcontent(array(
‹title› => $res[‹title›],
‹link› =>
’https://raindigital.wordpress.com/index.php?post=› . $res[‹id›],
‹guid› => ’https://raindigital.wordpress.com/index.php?post=› . $res[‹id›],
‹pubdate› => $res[‹time date›],
‹content› => $res[‹post›]
));
}
}

$rss->renderfeed();

exit();

?>

برای دانلود RSSfeed.class.php از سایت معتبر PHP Classes روی لینک زیر کلیک کنید.

Download RSS2 feed Maker class now!

, , ,

بیان دیدگاه

Error Logger Class


سلام.

کلاس Error Logger کلاسی است که به وسیله آن به آسانی می‌توانید در برنامه های PHP ارور ها و پیام ها و… را Log کنید.

با ساختن یک نمونه از کلاس($err = new ErrorLogger;) شما به سادگی به توابع کلاس دسترسی دارید و با فراخوانی یک تابع، Error های ایجاد شده را به صورت:

— ذخیره در یک آرایه

— ذخیره در یک فایل

— نمایش روی سایت(echo)

— چاپ مخفی Error در کدهای HTML به صورت توضیح

— چاپ Error به صورت trigger یعنی درست شبیه Error هایی که هسته php تولید می‌کند.

ذخیره کنید.

در مقایسه با چند کلاس دیگر که کار مشابهی می‌کردند، دیدم که این کلاس امکانات بیشتری دارد و البته امکانات آن کاربردی است. گاهی در برخی نرم افزارهای تحت وب بی جهت امکاناتی می‌گذارد که جز بالا بردن حجم فایل و پردازش سرور به درد دیگری نمی‌خورد. من به شدت از این جور امکانات بیزارم. چون فقط برای زرق و برق دادن بی فایده به برنامه است و طولانی تر کردن لیست ویژگی ها. بگذریم…

استفاده از این کلاس رایگان است. برنامه نویس آن بنده حقیر بوده ام(در حدود نیم ساعت وقتم رو گرفت). مثال های خوبی دارد. به خوبی توضیح گذاری شده است(Well Commented   -   inline Documenting).

Inline Documenting : کلمه‌ی جالبی است! الان اختراعش کردم!! یعنی مستندات توسعه و استفاده نرم افزار لابه لای کد ها نوشته شده. (کسی جز من قبلا این کلمه را بکار برده؟؟!)

آن را از phpClasses دانلود کنید:

Download Error Logger php Class

پ.ن:دلم نمیاد اینو ارسال به آینده کنم!! تا هفته دیگر 5-6 مطلب به صورت خودگار، یک روز درمیان پست می‌شود. DIY را در همین مدت خواهید دید…

پ.ن: کسی هست که مطالبی که در phpfa.ir نوشته بودم را ذخیره کرده باشد؟ به آموزش گام به گام آن نیاز دارم.

۱ دیدگاه

عمل نکردن mod_rewrite در Apache


سلام.

اگر شما با زبان php یا هر زبان تحت سرویس دهنده دیگری آشنا باشید، احتمالا کم و بیش نام mod_rewrite را شنیده باشید یا آن را به کار برده باشید.

چند وقت پیش من به مشکلی با فایل .htaccessبرخوردم و آن این بود که با این که mod_rewrite فعال بود اما سرور، rewriteRule ها رو نادیده می‌گرفت و به درستی عمل نمی‌کرد. برای حل این مشکل، تنظیمات Apache رو باز کردم(httpd.conf)و بعد به کمک find and replace تمام AllowOverride None ها رو به AllowOverride All  تبدیل کردم.

<Directory />
    Options FollowSymLinks
    AllowOverride All
    Order deny,allow
    Deny from all
    Satisfy all
</Directory>

پ.ن 1: یک DIY  در راه است.

, , ,

۱ دیدگاه