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

أستخدمت كلاس خالد شمعة ArDate .. للتاريخ الهجري بس عندي استفسار

بدأه AboSami في 9 أغسطس 2010 · 7 رد · 1,226 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

نزلت كلاس أخونا وأستاذنا خالد شمعة ..

لإستخدام التاريخ الهجري ..

أنا عرفت كيف أحدد تاريخ اليوم أو أستدعي تاريخ اليووم ..

?PHP 
 date_default_timezone_set('Asia/Riyadh');
 $time = time();
 include('Arabic.php');
 $Ar = new Arabic('ArDate');
$fix = $Ar->dateCorrection ($time);
 $date = $Ar->date('dS-m-Y', $time, $null, $fix);
 echo  $date."<br />";

?>

أللي أبغاااه زيادة شهر أو يوم أو سنة على التاريخ الهجري ..

كيف ..

الغرض من ذلك إستخدامه في البحث في قاعدة البيانات :

$sql = "SELECT * FROM mytable WHERE 'date' BETWEEN '$dateNow' And '$NextMonth'"
$query =mysql_query($con , $sql);

أبغى أستخرج البيانات من تاريخ اليوم إلى شهر من تاريخ اليوم يعني تاريخ اليوم : 28/8/1431 إلى 28/9/1431 هـ ..

أنتظر ردووودكم ..

#2

لا أدري كيف يعمل كلاس الاستاذ شمعة ولكن هناك سكربت للتاريخ الهجري أسهل بكثير من سكريب الاستاذ شمعة وهو على الرابط /index.php?showtopic=193230&st=0&p=964361&fromsearch=1entry964361

فإذا كانت حقل التاريخ في قاعدة البيانات لديك يستعمل رقم طويل long يتم تخزين فيه رقم linuxtimestamp كما هو المستعمل في أغلب المنتديات فإن الحل هو

include('HijriDate.php');
$dateNow=time();
$NextMonth=hejri2time(adate("_j").'-'.(adate("_n")+1).'-'.adate("_Y"))

أما كيفية استعمال السكربت فهي واضحة من الرابط

تم تعديل هذه المشاركة بواسطة ناصر الأثر في 9 أغسطس 2010 في 16:20

#3

أما إذا كنت تستعمل حقل من نوع date في mysql فتحتاج الدالة FROM_UNIXTIME داخل عبارة sql لتحويل التاريخ إلى تنسيق mysql

#4

جاري تجريبها ..

طيب أخوي بالنسبة للتاريخ أنا عندي في قاعدة البيانات نوعه date .

ما ني فاهم موضوع FROM_UNIXTIME يا ليت تعطيني مثال عليه ..

وهل هو أفضل أني أجعل نوع الحقل date أو int(11

الله يجزاك خير يا أخوووي ..

على تعاونك معاااي ..

اللهم بلغنا رمضان ..

^_^

#5

الأفضل أن تستخدم int(11) لأنه أسهل في التعامل مع php ولا يحتاج دالات وسيطة، وكل المنتديات تستعمله ولا تستعمل date، لأنه date يحتاج دالات تحويل لتفهمه لغة php أما إذا كنت مصرًا على استعمال date فإن عبارة sql ستكون

$sql = "SELECT * FROM mytable WHERE 'date' BETWEEN FROM_UNIXTIME($dateNow) And FROM_UNIXTIME($NextMonth)"
#6

أنصحك في هذه الحالة إتباع ذات العرف القائم مع التواريخ الميلادية في حالات مشابهة حيث نقوم بتحويل التاريخ المرجعي الذي سيتم الحساب على أساسه إلى صيغة Unix time stamp ومن ثم يجري إضافة أو طرح عدد الأيام المرغوبة (على شكل رقم يمثل عدد الثواني، مثلا من أجل إضافة فترة 30 يوم، عليك إضافة المقدار 3600 * 24 * 30 حيث 3600 هو عدد الثواني في الساعة الواحدة، و 24 عدد ساعات اليوم، وأخيرا 30 هو عدد الأيام المرغوبة)، بالنتيجة ستحصل على رقم يمثل التاريخ بعد أو قبل النقطة المرجعية لكن بصيغة Unix time stamp وهي صيغة يمكن استخدامها ضمن استعلام SQL (في نهاية المطاف التاريخ بهذه الصيغة ليس سوى عدد صحيح)، لكن هذا الإجراء يتطلب منك حفظ التواريخ أساسا بصيغة Unix time stamp ضمن قاعدة البيانات أيضا.

تقدم مكتبة PHP واللغة العربية دالة تقوم بتحويل التاريخ الهجري إلى صيغة Unix time stamp يمكنك استخدامها لهذه الغاية، يمكنك الإطلاع على المثال التالي:

http://ar-php.org/ar-example-Mktime-php-arabic.html

أرجو أن أكون قد أوصلت الفكرة، برجاء عدم التردد في طرح أي استفسار أو تعليق أو ملاحظة تتعلق بهذا الموضوع

1
#7

مشكور أستاذنا خالد شمعة ..

وصلت المعلومة ..

وبارك الله فيك في رمضان ..

#8

على الرحب والسعة أخي أبو سامي

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…