PDA

View Full Version : سوال: مشکل در نمایش تاریخ ثبت شده با استفاده از datapicker در دیتا بیس



mahbooob
چهارشنبه 10 آبان 1391, 00:12 صبح
دوستای محترم می دونم سوالم تکراریه ، ولی لطفا کمک کنید.
من یک فرم طراحی کردم که کاربر تاریخ را با datapicker به صورت شمسی وارد می کند ولی در دیتا بیس به صورت 00000 نمایش داده می شود.با سرچ هایی که انجام دادم متوجه شدم که باید به timetamp ،سپس به تابع jdate به فرمت صحیح تبدیل کرد ،ولی در عمل این اتفاق نمی افتد.
کدهایی که استفاده کردم بدین صورت می باشند:


$time = strtotime($_POST['date']);
$timestamp= mktime($time);

$mysqldate = jdate( 'Y-m-d', $timestamp);

mahdi_1986
چهارشنبه 10 آبان 1391, 00:33 صبح
یه جایی رو داری اشتباه می‌کنی،
کد رو کامل قرار بده

plague
چهارشنبه 10 آبان 1391, 01:18 صبح
تو دیتابیست فیلد تاریخ رو از چه نوعی گزاشتی ؟

mahbooob
چهارشنبه 10 آبان 1391, 01:26 صبح
require_once('jdf.php');
$time = strtotime($_POST['date']);
$timestamp= mktime($time);
$mysqldate = jdate( 'Y-m-d', $timestamp);
$query = "INSERT INTO `my_up2`.`register` (`id` ,`title` ,`date` ,
)
VALUES (NULL , '$title','$mysqldate'));";
$result = $dbLink->query($query);
if($result) {echo 'Success! '; }
else {echo 'Error! Failed '
. "<pre>{$dbLink->error}</pre>";
}

mahbooob
چهارشنبه 10 آبان 1391, 01:29 صبح
از نوع date ..تاریخ میلادی را ثبت می کند ولی شمسی را نه

mahbooob
چهارشنبه 10 آبان 1391, 13:40 عصر
دوستی نیست منو کمک کنه :ناراحت:؟؟؟؟؟؟؟؟؟؟؟؟؟

Reza1607
چهارشنبه 10 آبان 1391, 16:47 عصر
دليلش اينه كه شما دارين تاريخ شمسي رو به timestamp‏ تبديل ميكنيد

mahbooob
چهارشنبه 10 آبان 1391, 17:01 عصر
خوب میشه شما بفرمایید چکار باید کنم؟

MMSHFE
چهارشنبه 10 آبان 1391, 18:00 عصر
اجازه بدین مرحله به مرحله جلو بریم. مستقیماً خروجی datepicker رو توی صفحه echo کنید ببینیم چی چاپ میشه.

mahbooob
چهارشنبه 10 آبان 1391, 18:26 عصر
وقتی Echo میکنم تاریخ را درست چاپ می کند

MMSHFE
چهارشنبه 10 آبان 1391, 18:52 عصر
میدونم درست چاپ میکنه. میخوام بدونم دقیقاً چی مینویسه. میخوام بگم چطوری تبدیل به شمسی کنید.

mahbooob
چهارشنبه 10 آبان 1391, 20:26 عصر
میدونم درست چاپ میکنه. میخوام بدونم دقیقاً چی مینویسه. میخوام بگم چطوری تبدیل به شمسی کنید.

معذرت می خوام :1391/08/10

MMSHFE
چهارشنبه 10 آبان 1391, 20:30 عصر
نوع فیلد تاریختون توی دیتابیس چیه؟ DATE یا INT ؟ پیشنهاد میکنم INT بگذارین. بعد از انجام این کار، بفرمایید تا مرحله بعد رو بگم.

mahbooob
چهارشنبه 10 آبان 1391, 20:36 عصر
نوع فیلد تاریختون توی دیتابیس چیه؟ DATE یا INT ؟ پیشنهاد میکنم INT بگذارین. بعد از انجام این کار، بفرمایید تا مرحله بعد رو بگم.
date بود.int کردم

MMSHFE
چهارشنبه 10 آبان 1391, 23:35 عصر
بسیار خوب. به کد زیر دقت کنید:


<?php
require_once 'path/to/jdf.php';

// assume the date from datepicker is stored in $date
list($y, $m, $d) = explode('/', $date);
$ts = jmktime(0, 0, 0, $m, $d, $y);
?>

توی این کد فرض کردم که تاریخی که از datepicker خوندین رو توی متغیر date$ ذخیره کردین. همونطور که میبینید ابتدا سال و ماه و روز استخراج میشن و بعد، با کمک تابع jmktime از کتابخانه JDF (http://jdf.scr.ir) اون رو تبدیل به TimeStamp کردیم و توی متغیر ts$ ذخیره میکنیم. حالا میتونید این متغیر رو توی دیتابیس توی فیلد تاریخ ذخیره کنید. تنها کاری که باقی مونده، اینه که موقع نمایش تاریخ، به فرمت مناسب تبدیلش کنید. برای این کار هم میتونید به روش زیر عمل کنید:


// gregorian date
echo date('Y/m/d', $ts);
// jalali date
require_once 'path/to/jdf.php';
echo jdate('Y/m/d', $ts);

میبینید که با کمک تابع date خود PHP میتونید تاریخ میلادی معادل TimeStamp موجود در دیتابیس و با کمک تابع jdate موجود در JDF (http://jdf.scr.ir) تاریخ شمسی متناظر با اون TimeStamp رو نمایش بدین. اینطوری مقایسه دو تاریخ هم خیلی راحتتره. مثلاً اگه بخواین ببینید یک تاریخ بین دو تاریخ دیگه هست یا نه، کافیه ببینید TimeStamp اون تاریخ بین TimeStamp دو تاریخ موردنظر قرار میگیره یا نه و چون همه این موارد، اعداد صحیح معمولی هستن، با یک مقایسه ساده به نتیجه دلخواه خواهید رسید.
اگه باز هم مشکل یا سؤالی بود، در خدمتم (اگه بلد باشم).
موفق باشید.

mahbooob
پنج شنبه 11 آبان 1391, 00:42 صبح
واقعا ممنون کمک بزرگی کردین..این کارو انجام دادم و echo کردم درست بود .ولی متاسفانه هنوز در دیتا بیس 000000 نشون می ده با تابع
date('Y/m/d', $ts)
تاریخ میلادی را ثبت می شود ...

mahbooob
پنج شنبه 11 آبان 1391, 00:55 صبح
وای خیلی خیلی ممنون درست شد..برای خواندن ،تاریخ را به شمسی تبدیل کردم:لبخند::لبخند: