منتديات مدينة الاحلام

فيس بوك مدينة الاحلام twitter RSS 

 
 

 

 

معجبو مدينة الاحلام علي الفيس بوك

  #1  
قديم 01 - 07 - 2010, 12:04
php pro غير متصل
..:: من سكان المدينة ::..
 


php pro is on a distinguished road
افتراضي التعامل مع الملفات والمجلدات










البداية وكمقدمة للموضوع أود الإشارة الا أن الطريقة المشروحة في هذا الدرس تعتمد على التاريخ الميلادي ، وبالتاكيد يمكن استخدامها مع التاريخ الهجري ولكن تحتاج الى تعديل وحسابات خاصة ، وباذن الله سيتم شرحها في المستقبل .

دالة التاريخ في البي اتش بي هي Date ، ولها معاملين ( أي قيمتين لاعداد مخرجات الدالة ) ، احد المعاملين اجباري والثاني اختياري ، اما الاول وهو الاهم تعتمد عليه مخرجات التاريخ بشكل اساسي مثل ضبط السنة بخانتين أو ضبط الشهر باسم الشهر .. وغيرها ، اما المعامل الثاني فهو ما يسمى بـ ( UNIX time stamp) وهو خاص بنظام اليونكس وكيفية تخزين التاريخ فيه ، عموماً ما يهمنا هنا هو المعامل الأول وهو ما يسمى بـ ( Format String ) ، وكمثال على ما ذكرنا :

[PHP]<?
$today = date(Y-m-d);
echo $today;
?>[/PHP]


هذا المثال سيقوم بطباعة تاريخ اليوم على الشكل التالي 2002-03-13 ، ولاهمية الرموز التي يمكن استخدامها مع الـ Date ساذكر اهمها :
d رقم اليوم في الشهر على شكل خانتين من 01 الى 31 .
D اسم اليوم في الاسبوع على شكل 3 خانات مثل Mon أي الاثنين .
g رقم الساعة في اليوم من 1 الى 12 .
j رقم اليوم في الشهر من 1 الى 31 بدون وضع الصفر .
m رقم الشهر في السنة على شكل خانتين من 01 الى 12 .
y رقم السنة على شكل خانتين ، مثلا 02 .
Y رقم السنة على شكل اربع خانات ، ومثالها 2002 .

هذه من اهم الرموز لكي تتضح الصورة فقط ، ولعلنا نتطرق لها بشكل اوسع قريباً .

لتحويل التاريخ الى اللغة العربية نحتاج أن ننشئ جدولاً في قاعدة البيانات ، فلذلك قم بنسخ الكود التالي والصقه في خانة Run SQL query في الـ PHPMyadmin أو بأي طريقة اخرى تراها ، الاهم انشاء الجدول .


[PHP]
CREATE TABLE month_name (
id tinyint(4) NOT NULL default '0',
month text NOT NULL
) TYPE=MyISAM;

INSERT INTO month_name VALUES (1, 'يناير');
INSERT INTO month_name VALUES (2, 'فبراير');
INSERT INTO month_name VALUES (3, 'مارس');
INSERT INTO month_name VALUES (4, 'ابريل');
INSERT INTO month_name VALUES (5, 'مايو');
INSERT INTO month_name VALUES (6, 'يونيو');
INSERT INTO month_name VALUES (7, 'يوليو');
INSERT INTO month_name VALUES (8, 'اغسطس');
INSERT INTO month_name VALUES (9, 'سبتمبر');
INSERT INTO month_name VALUES (10, 'اكتوبر');
INSERT INTO month_name VALUES (11, 'نوفمبر');
INSERT INTO month_name VALUES (12, 'ديسمبر');
[/PHP]


بعد انشاء هذا الجدول يجب أن يكون لديك جدول اخر يحتوي على التاريخ المراد تحوليه ، ولنفترض أن لديك الجدول ( news ) يحتوي على الحقول ( title , date ) ويحتوي على البيانات التالية :
date title
2002-04-20 الخبر الأول
2002-04-25 الخبر الثاني
2002-05-01 الخبر الثالث
قم بانشاء الجدول :

[PHP]
CREATE TABLE news (
title text NOT NULL,
date date NOT NULL default '0000-00-00'
) TYPE=MyISAM;


INSERT INTO news VALUES ('الخبر الأول','2002-04-20');
INSERT INTO news VALUES ('الخبر الثاني','2002-04-25');
INSERT INTO news VALUES ('الخبر الثالث','2002-05-01');
[/PHP]


بقي أن نقوم بتحويل التاريخ الى العربية ، وادراجه في صفحة PHP ، ولعمل ذلك سنقوم باستخدام دالة تسمى Date_Format من خلال طلب لقاعدة البيانات ، نحدد من خلاله طريقة جلب البيانات ووضعها بالصورة المطلوبة .

بقي أن نذكر أننا سوف نضطر الى كتابة طلبين لقاعدة البيانات احدهما لجلب حقول العنوان ( title ) والاخر لجلب حقول التاريخ ( date ) كما يلي :



[PHP]
<?
$result = mysql_query("select * from news");
$sql = "SELECT CONCAT(DATE_FORMAT(date,'%d'),\"
\",month_name.month,\" \",DATE_FORMAT(date,'%Y'))
AS date FROM news ,month_name
WHERE month_name.id = month(date)";
$result2 = mysql_query("$sql");
while ($row=mysql_fetch_array($result)
and $row2=mysql_fetch_array($result2))
{
$title = $row["title"];
$date = $row2["date"];
echo "$title , $date<br>";
}
?>
[/PHP]



عند تنفيذ السكربت ، سترى ما يلي :
الخبر الأول , 20 ابريل 2002
الخبر الثاني , 25 ابريل 2002
الخبر الثالث , 01 مايو 2002

في حالات كثيرة تكون كتابة السكربت السابق بهذا الشكل مسببه للكثير من المشاكل ، و خاصة عند طلب ترتيب للجدول على حسب حقل معين ، وهذه المشاكل هي في توافق البيانات مع بعضها البعض ، فلو افترضنا في مثالنا السابق أن الخبر الأول الذي يحمل التاريخ 2002-04-20 كان باسم آخر ، مثلا ( العنوان الأول ) ، وبعد اضافة حقول ترتيب لجلب البيانات كالتالي :






[PHP]
<?
$result = mysql_query("select * from news
order by title");
$sql = "SELECT CONCAT(DATE_FORMAT(date,'%d'),\"
\",month_name.month,\" \",DATE_FORMAT(date,'%Y'))
AS date FROM news ,month_name
WHERE month_name.id = month(date)";
$result2 = mysql_query("$sql");
while ($row=mysql_fetch_array($result)
and $row2=mysql_fetch_array($result2))
{
$title = $row["title"];
$date = $row2["date"];
echo "$title , $date<br>";
}
?>[/PHP]


ستجد أن النتائج هي :
الخبر الثالث , 20 ابريل 2002
الخبر الثاني , 25 ابريل 2002
العنوان الأول , 01 مايو 2002 وهذا بطبيعة الحال مشكلة في توافق البيانات .

ولحلها يجب أن نوافق بين الطلبين لقاعدة البيانات ، بمعنى أنه اذا رتبنا الطلب الاول حسب ( title ) يجب أن نفعل ذلك مع الطلب الثاني بتعديله ليصبح :



[PHP]
<?
$sql = "SELECT CONCAT(DATE_FORMAT(date,'%d'),\"
\",month_name.month,\" \",DATE_FORMAT(date,'%Y'))
AS date FROM news ,month_name
WHERE month_name.id = month(date)
order by title";
?>
[/PHP]

وبالتالي تصبح البيانات المخرجه كالتالي :
الخبر الثالث , 01 مايو 2002
الخبر الثاني , 25 ابريل 2002
العنوان الأول , 20 ابريل 2002

وهي بالتاكيد صحيحة



hgjuhlg lu hglgthj ,hgl[g]hj

 
 
 
 
 





رد مع اقتباس
إضافة رد

مواقع النشر (المفضلة)


تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة


المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
برنامج حماية الملفات والمجلدات بكلمة سر Folder Lock v6.4.1 همسات الامل قسم البرامج , برامج مجانية 0 18 - 04 - 2010 12:53
برنامج Hide Folders 2009 v3.3.17.599 لاخفاء الملفات والمجلدات همسات الامل قسم البرامج , برامج مجانية 1 09 - 01 - 2010 19:22
كيفية استخدام "معالج نقل الملفات والإعدادات" في نظام التشغيل Windows XP DreamsCity قسم الكمبيوتر والانترنت 0 11 - 09 - 2009 05:35
شرح كامل 100% وكل ما يتعلق بال ( Dos ) الدوس حسين حبيب قسم البرامج المشروحة 2 02 - 10 - 2008 22:33
مقدمة عن الدوس البرق قسم البرامج المشروحة 2 11 - 12 - 2007 17:05


الساعة الآن 15:56.

    Powered by vBulletin Version 3.8.7
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd
ترقية وتطوير: مجموعة الدعم العربى
  

SEO by vBSEO