PDA

View Full Version : مبتدی: ذخیره کردن تاریخ جاری سیستم بوسیله php در mysql



hadinajafi
یک شنبه 23 مرداد 1390, 17:28 عصر
سلام
چطوری میشه تاریخ جاری سیستم رو بوسیله php به mysql بفرستم
من کوئری زیر رو امنحان کردم ولی در قیلد تاریخ جدول مورد نظر که نوعش هم date هستش 000-00-0000 دخیره میشه!!!!!!!!!

$qry = "insert into news values('$id','$newsTitle','$Content','NOW();','$ab srtact')";

MSN_Issue
یک شنبه 23 مرداد 1390, 18:25 عصر
جدول دیتابیس رو int یا varchar بگیرید و از Date(U) برای ذخیره زمان کنونی استفاده کنید ...
اطلاعات بیشتر در مورد تابع Date ... (http://www.php.net/manual/en/function.date.php)

amin1softco
یک شنبه 23 مرداد 1390, 23:31 عصر
تابع 'NOW();' رو باید بدون نیم کت و سمیکولن قرار بدی NOW()

hadinajafi
یک شنبه 23 مرداد 1390, 23:43 عصر
تابع 'NOW();' رو باید بدون نیم کت و سمیکولن قرار بدی NOW()
این کارو کردم ولی جواب نداد

amin1softco
یک شنبه 23 مرداد 1390, 23:50 عصر
نمی دونم ولی خوب من تست کردم جواب داد!!؟


$query="INSERT INTO `tt`.`on` VALUES ('10', NOW())";
73807

Metal Gear Solid
دوشنبه 24 مرداد 1390, 06:13 صبح
دوست عزیز نمیدونم چرا اصرار دارید تا با خود mysql تاریخ رو بفرستید.
اما اگر میخواید خیلی راحت تر از اینها به نتیجه برسید. کافیه نوع فیلد تاریخ رو در جدولتون به INT(10) تغییر بدید. نوع INT و طول 10
وقتی هم میخواید تاریخ رو به بانک بفرستید کافیه به صورت Timestamp تبدیل کنید و بفرستید که مطمئن ترین روش و بهینه ترینش هست.

$time = time();

$insert = "INSERT INTO news VALUES('$id','$newsTitle','$Content','$time','$abs rtact')";

تابع time() تاریخ فعلی رو به ثانیه تبدیل میکنه که شروعش از 1949 یا 1959 یا یه چیزی شبیه به این بود خاطرم نیست. در هر حال، تاریخ فعلی رو به ثانیه تبدیل میکنه که نتیجتاً یه عدد 10 رقمیه.
و هرگز هم از 10 رقم بیشتر نمیشه. برای همین گفتم INT رو طول 10 بگیری. حالا تاریخ رو به صورتی کاملاً استاندارد در داخل بانکت ذخیره داری
وقتی هم خواستی تاریخت رو نمایش بدی به این صورت عمل کن. فرض بر این میگیریم که رکورد رو از جدولت خوندی و ریختی داخل مثلاً $tablerows :


echo date( "Y/m/d H:i:s", $tablerows['date'] );

البته اون y m d و باقی موارد رو میتونی تغییر بدی که خروجیت به روش های دیگه ای تغییر میکنه.
موفق باشی.

eshpilen
دوشنبه 24 مرداد 1390, 16:17 عصر
بحث Timestamp و اینا شد.
هیچ میدونستید خیلی از سیستمها و نرم افزارهای یونیکس در سال 2038 دچار مشکل میشن؟
بخاطر اینکه متغییر 32 بیتی علامتدار استانداردی که روی بیشتر سیستمها ازش برای ذخیرهء Timestamp یونیکس استفاده میشه در این زمان به حداکثر مقدار خودش میرسه و بعد عدد داخلش منفی میشه (که در نتیجه به عددی قبل از یکم ژانویه 1970 اشاره میکنه).
اینم قضیش بصورت مشروح: http://en.wikipedia.org/wiki/Year_2038_problem
البته به گمانم این رو هم مثل Year 2000 problem (http://en.wikipedia.org/wiki/Year_2000_problem) با دردسر کمی حل و فصل بکنن. همین الان هم بعضی سیستمها این محدودیت رو ندارن.

amin1softco
دوشنبه 24 مرداد 1390, 16:22 عصر
آره من کلاس مهندسی نرم افزار روش کنفرانس دادم یادش بخیر........................ دمت گرم کل خاطراتم زنده شد