تغطية مباشرة لأحداث منتدى الإعلام الجديد المقام بمدينة أبوظبي
هل تقترح تمديد مسابقة سوالف كاست؟

 

العودة   سوالف سوفت > قسم تطوير وبرمجة المواقع للمتقدمين > PHP
المدوّنات البحث مشاركات اليوم اجعل كافة المشاركات مقروءة

رد  
 
LinkBack أدوات الموضوع
عضو سوبر نشيط
تاريخ التسجيل: Aug 2004-
#1 (permalink)  
س: أنسب نوع حقل للتاريخ والوقت!


ماهو أنسب نوع حقل لتخزين التاريخ والوقت في MySQL ??

وماهي طريقة توليد هذا التاريخ لتخزينه في الحقل في PHP ??






__________________
نحن أمة إقرأ التي لا تقرأ
مبرمج إنترنت غير متواجد حالياً   قديم 18-02-2008, 03:37 AM
رد مع اقتباس
Moderator
تاريخ التسجيل: Aug 2004-
#2 (permalink)  

DATETIME لان عمرة اكثر من العام 2032، المبرمج المحترف هو ايضا مبرمج كسول ولا يريد ان يضغط على ازرار اكثر، فالحل هو ()NOW
اي اذا كان الجدول اسمة topics وله الحقول (id,title,body,post_date)
فتخزينة في الMySQL هو
كود PHP:
mysql_query('insert into topics values (NULL,"'.$title.'","'.$body.'",NOW()'); 






__________________
هلابي افضل المواقع العربية تصميماً
انصح باستخدام ابونتو
hilaby غير متواجد حالياً   قديم 18-02-2008, 09:06 AM
رد مع اقتباس
عضو سوبر نشيط
تاريخ التسجيل: Apr 2006-
#3 (permalink)  

اقتباس:
المشاركة الأصلية كتبت بواسطة hilaby مشاهدة المشاركة
DATETIME لان عمرة اكثر من العام 2032، المبرمج المحترف هو ايضا مبرمج كسول ولا يريد ان يضغط على ازرار اكثر، فالحل هو ()NOW
اي اذا كان الجدول اسمة topics وله الحقول (id,title,body,post_date)
فتخزينة في الMySQL هو
كود PHP:
mysql_query('insert into topics values (NULL,"'.$title.'","'.$body.'",NOW()'); 
السلام عليكم
اخي هيلابي الا تعتقد ان احسن طريق هي تخزين الوقت بدالة time الموجودة في php لسهولة التحقق من الوقت ...

دالة now الموجودة مع mysql تخزن الوقت بهذه الطريقة
2008-02-18 08:03:24
اعتقد ان هناك صعوبة في التحقق من الوقت بهذه الطريقة والله اعلم






عبد الواحد البشيري غير متواجد حالياً   قديم 18-02-2008, 11:09 AM
رد مع اقتباس
عضو سوبر نشيط
تاريخ التسجيل: Aug 2004-
#4 (permalink)  

hilaby : شكراً على ردك الجميل


Nadorino : كأني أرى الحل عندك






__________________
نحن أمة إقرأ التي لا تقرأ
مبرمج إنترنت غير متواجد حالياً   قديم 18-02-2008, 12:57 PM
رد مع اقتباس
Moderator
تاريخ التسجيل: Aug 2004-
#5 (permalink)  

Nadorino اريد ان ارى حلك، ربما تعرف شيء انا لا اعرفة، شاركنا






__________________
هلابي افضل المواقع العربية تصميماً
انصح باستخدام ابونتو
hilaby غير متواجد حالياً   قديم 18-02-2008, 07:36 PM
رد مع اقتباس
مشرف قسم PHP
تاريخ التسجيل: Apr 2002-
#6 (permalink)  

- اعتقد الافضل يكون حسب برنامج , احيانا تحتاج فقط السنه ولا تحتاج الوقت او العكس.
- الافضل في الادء هو اصغرها حجما , بحيث لا يستهلك مساحه عند الفهرسه او التخزين ولا يستهلك موارد عن الترتيب( عباره order by).
نجد ان TIMESTAMP هو اصغرها حجما ويحتوى على الوقت والتاريخ (4 بايت)
MySQL AB :: MySQL 5.0 Reference Manual :: 9.5 Data Type Storage Requirements






__________________
I Love PHP (d4d@hotmail.com)
http://www.daif.net/
daif غير متواجد حالياً   قديم 18-02-2008, 08:42 PM
رد مع اقتباس
عضو سوبر نشيط
تاريخ التسجيل: Apr 2006-
#7 (permalink)  

اقتباس:
المشاركة الأصلية كتبت بواسطة hilaby مشاهدة المشاركة
Nadorino اريد ان ارى حلك، ربما تعرف شيء انا لا اعرفة، شاركنا
بل تعرفه ...

ما قصدته انا, هو ان يتم تخزين الوقت عن طريق دالة
كود PHP:
time() 
في حقل من نوع
كود:
varchar(15)
كود PHP:
$date=time();
mysql_query('insert into topics values (NULL,"'.$title.'","'.$body.'",".$date."'); 
وعند الاستخراج يتم التعامل معه عن طريق دالة date

كود PHP:
// $row['date'] = استخراج من القاعدة ...
// التاريخ كامل
echo date("Y m d h:m:s",$row['date']);
echo 
'<br />';
// الساعة فقط
echo date("h:m:s",$row['date']); 
واسف على هذا التدخل ...






عبد الواحد البشيري غير متواجد حالياً   قديم 18-02-2008, 11:09 PM
رد مع اقتباس
Moderator
تاريخ التسجيل: Aug 2004-
#8 (permalink)  

Nadorino معليش المرة هذة انا لا اوافقك في الرأي، الاسباب
1- الحقل varchar ماهو الا مجموعة من الاحرف characters اي اذا جعلته في هذة الحالة، يمكنك فقط اضهار المعلومة كما هي، بدون اي تعديلات
2- الحقل varchar العمليات الحسابية فيها بطيئة، لان الMySQL سيصعب عليه عملية البحث في ذالك الحقل و ايضا سيصعب علية عملية الترتيب، لان اكثر برامج قواعد البيانات تتعامل مع التواريخ بنظام الUNIX TIME وهو عدد الثواني من العام 1/1/1970. فاذا اردت مثلا ان تستعلم عن الواضيع بين تواربخ معينة، ستضطر اولا الى تخزين البيانات بهاذة الطريقة "اليوم-الشهر-السنة باربع ارقام"
الحل
انا مع الTIMESTAMP ولكن هذا فقط اذا تريد تخزين توقيت حدوث الامر او التاريخ اصدار المقالة مثلا، اما اذا تريد تخزين تاريخ في المستقبل، انا مع الDATETIME في هذة الحالة
1- لان الMySQL لا يحتاج لاي عمليات اضافية لكي يبحث على التاريخ المعين
2- الMySQL له عمليات ودوال عديدة تتعلق بالتاريخ، فلماذا لا تستخدمها

خالد






__________________
هلابي افضل المواقع العربية تصميماً
انصح باستخدام ابونتو
hilaby غير متواجد حالياً   قديم 19-02-2008, 07:35 AM
رد مع اقتباس
عضو سوبر نشيط
تاريخ التسجيل: Apr 2006-
#9 (permalink)  

وصلت المعلومة وفقك الله اخي خالد






عبد الواحد البشيري غير متواجد حالياً   قديم 19-02-2008, 11:58 AM
رد مع اقتباس
Moderator
تاريخ التسجيل: Aug 2004-
#10 (permalink)  

Nadorino
اذا تريد اي امثلة برمجية على هذا الموضوع، انا تحت امرك






__________________
هلابي افضل المواقع العربية تصميماً
انصح باستخدام ابونتو
hilaby غير متواجد حالياً   قديم 19-02-2008, 01:03 PM
رد مع اقتباس
عضو سوبر نشيط
تاريخ التسجيل: Apr 2006-
#11 (permalink)  

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






عبد الواحد البشيري غير متواجد حالياً   قديم 19-02-2008, 07:23 PM
رد مع اقتباس
مشرف قسم PHP
تاريخ التسجيل: May 2007-
#12 (permalink)  

Timestamp هي الطريقة الأمثل لتخزين التاريخ والوقت بشكل كامل،
يمكنك البحث ضمنها أيضاً بتحديد Range للوقت أو التاريخ الذي تبحث عنه ..
مع الانتباه إلى رد الأخ ضيف حول طول البيانات المخزنة وتأثيرها على الأداء، هذا يعني أنه عليك دائماً اختيار الحل الأنسب لمشروعك ..

كلام الأخوة جميل جداً ، وكل الردود مفيدة ما شاء الله ..

لكن [سؤال] هل يتم تخزين Timestamp في حقل Integer ؟ لاني أستخدم Integer حالياً ولا أعلم إن كان سيحدث مشاكل في المستقبل .. ؟!

تحياتي، أشرف السمهوري






أشرف السمهوري متواجد حالياً   قديم 20-02-2008, 05:32 AM
رد مع اقتباس
عضو فعال
تاريخ التسجيل: Dec 2004-
#13 (permalink)  

انا ارى ان انسب طريقة لتخزين التاريخ والوقت هو استخدام دالة time()

ويكون حقلها في قاعدة البيانات int(11)

طبعاً لما اخزنها بالـ time() اقدر بعدين اختار طريقة عرضي للتاريخ والوقت

سواء هكذا
2\2\07
او 02\02\2007
او طرق كثيره

هذا ماعندي






__________________
سبحان الله وبحمده ،، سبحان الله العظيم
تذكر هذه الآيه قبل ان تشارك( مَا يَلْفِظُ مِن قَوْلٍ إِلَّا لَدَيْهِ رَقِيبٌ عَتِيدٌ)
طير شلوى غير متواجد حالياً   قديم 20-02-2008, 06:46 AM
رد مع اقتباس
عضو سوبر نشيط
تاريخ التسجيل: Aug 2004-
#14 (permalink)  

أنا أشوف أحسن طريقة هي تخزين التاريخ باستخدام ()time في متغير من نوع varchar






__________________
نحن أمة إقرأ التي لا تقرأ
مبرمج إنترنت غير متواجد حالياً   قديم 20-02-2008, 11:26 AM
رد مع اقتباس
مشرف قسم PHP
تاريخ التسجيل: Apr 2002-
#15 (permalink)  

كما ذكرت وذكر hilaby بشكل مفصل الافضل هو ان يكون نوع الحقل TIMESTAMP ويمكن التحويل بسهوله الى عدد الثواني لكي تخرج الوقت ب date باستخدام دالة UNIX_TIMESTAMP(TIMESTAMP_field) الموجوده في Mysql نفسها , او استخدام FROM_TIMESTAMP(TIMESTAMP_field) لاعادتها بالتنسيق المطلوب مباشره .
مثال
كود PHP:
SELECT UNIX_TIMESTAMP();// 1203507041 
كود PHP:
SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(),'%Y %d %m %h:%i:%s %x');//2008-02-20 14:30:41 
- أشرف السمهوري, طير شلوى ربما يكون افضل من استخدام varchar كنوع , لكن ستفقد ميزة التعامل مع الحقل بدوال التاريخ التى تقدمها mysql لك .
- Nadorino, مبرمج إنترنت اطلاقا لا يمكن ان يكون تخزين timestamp في حقل varchar صحيح.

الخلاصه: استخدم حقل TIMESTAMP لتخزين التاريخ والوقت في قاعدة البينات . هل هذا منصف ؟






__________________
I Love PHP (d4d@hotmail.com)
http://www.daif.net/
daif غير متواجد حالياً   قديم 20-02-2008, 02:50 PM
رد مع اقتباس
Moderator
تاريخ التسجيل: Aug 2004-
#16 (permalink)  

وليش تجنن نفسك مع PHP اذا MySQL تعطيك ماتريد، احد من تلك الخصائص هو: تحويل التاريخ الى الطريقة او الشكل اللذي تريدة
مثال .. اذا اخدت الجدول articls وفيها الحقول (id,title,body,post_date)
فيمكنك مثلا تحويل الناتج من عملية الاستعلام عن الحقل post_date بالشكل Friday 1st April 2005 بدون ان تكتب سطر واحد بالPHP
الطريقة هو باستخدام DATE_FORMAT
كود PHP:
mysql_query('select DATE_FORMAT(post_date,"%W %D %M %Y") from articles'
لامثلة اخرى اذهب الى الرابط Dan Winchester - MySQL date_format






__________________
هلابي افضل المواقع العربية تصميماً
انصح باستخدام ابونتو
hilaby غير متواجد حالياً   قديم 20-02-2008, 03:48 PM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: Sep 2006-
#17 (permalink)  

UNIX timestamp قولا واحدا ‎






DNSerror غير متواجد حالياً   قديم 21-02-2008, 09:41 PM
رد مع اقتباس
مشرف قسم PHP
تاريخ التسجيل: Apr 2002-
#18 (permalink)  

اقتباس:
المشاركة الأصلية كتبت بواسطة DNSerror مشاهدة المشاركة
UNIX timestamp قولا واحدا ‎
ماذا عن التاريخ العربي التاريخ العربي غير مدعوم ... ماهو انسب جقل لتخزينه؟
- ما افعله هو تخزين التاريخ الميلادي ومن ثم تحويله الى الهجري عن الطلب او العكس , لكن اعتقد ان عملي التحويل غير دقيقه 100%






__________________
I Love PHP (d4d@hotmail.com)
http://www.daif.net/
daif غير متواجد حالياً   قديم 22-02-2008, 07:23 PM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: Sep 2006-
#19 (permalink)  

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

Calendar Converter

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






__________________
خالد الشمعة - Khaled Al-Shamaa
PHP, MySQL and Arabic language
DNSerror غير متواجد حالياً   قديم 25-02-2008, 10:13 AM
رد مع اقتباس
عضو سوبر نشيط
تاريخ التسجيل: Aug 2004-
#20 (permalink)  

اقتباس:
المشاركة الأصلية كتبت بواسطة daif مشاهدة المشاركة
- Nadorino, مبرمج إنترنت اطلاقا لا يمكن ان يكون تخزين timestamp في حقل varchar صحيح.
لماذا ؟






__________________
نحن أمة إقرأ التي لا تقرأ
مبرمج إنترنت غير متواجد حالياً   قديم 26-02-2008, 05:19 PM
رد مع اقتباس
مشرف قسم PHP
تاريخ التسجيل: Apr 2002-
#21 (permalink)  

لان الحل الذي نوعه varchar مخصص لتخزين النصوص الصغيره و timestamp هو رقم يفترض ان يخزن في حقل رقمي وفي حالة الوقت فان هناك حل رقمي مخصص له وهو النوع timestamp نفسه , اتباع الحقول المناسبه في برنامجك يجعله اسرع وياخذ مساحة اقل .






__________________
I Love PHP (d4d@hotmail.com)
http://www.daif.net/
daif غير متواجد حالياً   قديم 27-02-2008, 12:28 AM
رد مع اقتباس
رد


 

أدوات الموضوع

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

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


المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
ما حل مشكلة تغير الخطوط وتلخبط شكل الاستايلات في نسخة Explorer7 البـ أحمد ـرنس إصلاح وصيانة المنتديات 5 11-06-2007 05:45 PM
نبي حل لمشكلة اكسبلور7 raeed إصلاح وصيانة المنتديات 14 14-02-2007 10:40 AM
استفسار بسيط بخصوص تركيب قاعدة بيانات من نوع 3.0.6 على منتدى نوع 3.5.2 GirL إصلاح وصيانة المنتديات 3 23-12-2005 07:54 PM
استشاره الجابر سوالف عامة 5 01-09-2005 05:58 PM
كيف : حقل من نوع Text يكون Primary Key Smart Solutions PHP 8 26-01-2005 05:02 PM


الساعة الآن: 09:44 PM بتوقيت المملكة العربية السعودية