در خواست تکمیل این تابع php

Alidesign

تازه وارد
سلام دوستان من یه کدی دارم که  تاریخ میلادی بهش میدی و میگه تا چند روز دیگه به اون تاریخ خواهید رسید
برای مثال تاریخ سرور 2015-7-20 باشه شما در این کد در جای مشخص شده تاریخ دیگه رو بزنید برای مثال 2015-7-25
کد نشون میده که 5 روز مانده
من میخوام این تاریخی که ما بهش دستی میدیم رو از دیتابیس بخونه
چند راهی رو تست کردم نشد تو کد فراخوان بدم اساتید خواهشا کد تکمیل شده این و در اختیار من بزان
ممنون

کد:
<?php$futureDate = '2015-07-25';$d = new DateTime($futureDate);echo $d->diff(new DateTime())->format('%a');?>
 
آخرین ویرایش توسط مدیر:

send

تازه وارد
دوست عزیز چند راه رو تست کردید نشد ؟ 

یه جدول درست کن که 2 تا فیلد داشته باشه id و futureDate

بعد هم یه insert 

بعداً که کافیه مقدار ایدی رو رو دستور select زیر بدی 

نمونه کد  : 

کد:
<?php $result = mysql_query("SELECT * FROM *نام جدول* where id='' limit 1 ");while ($row = mysql_fetch_array($result)){	$futureDate= $row['futureDate'];}?>
 

hannanstd.ir

مدیر انجمن و توسعه دهنده ووکامرس پارسی
عنوان تاپیک اصن مناسب نیست . باید عنوان میزدید مثلا فراخونی یک مقدار از دیتابیس و مشابه آن .

اما چند نکته تکمیلی : کد بالا فقط برای php 5.3 به بالا کار میکنه ....

در ضمن اگه میخواید + یا - هم نشون بده بهتره از کد زیر استفاده کنید . چون مثلا اگه تاریخ سرور 2015-7-20 باشه و 2015-7-15 باز هم مثل 25 مقدار 5 رو نشون میده که اینطوری به صورت +5 یا -5 نشون میده .

کد:
echo $d->diff(new DateTime())->format('%R%a');
 

Alidesign

تازه وارد
داداش حل شد دمت گرم یه کوچولو اشتب نوشته بودم کداشو

 

Alidesign

تازه وارد
دوستان اگه بخواییم این به صورت شمسی کار کنه باید چیکار کنم؟

 

send

تازه وارد
از تابع زیر استفاده نمایید . 



 
آخرین ویرایش توسط مدیر:

hannanstd.ir

مدیر انجمن و توسعه دهنده ووکامرس پارسی
<?php$shamsiDate = '1394-06-01';$shamsiDate = explode( '-' , $shamsiDate );$futureDate = jalali_to_gregorian($shamsiDate[0],$shamsiDate[1],$shamsiDate[2],'-');$d = new DateTime($futureDate);echo $d->diff(new DateTime())->format('%a');function jalali_to_gregorian($j_y,$j_m,$j_d,$mod=''){ $d_4=($j_y+1)%4; $doy_j=($j_m<7)?(($j_m-1)*31)+$j_d:(($j_m-7)*30)+$j_d+186; $d_33=(int)((($j_y-55)%132)*.0305); $a=($d_33!=3 and $d_4<=$d_33)?287:286; $b=(($d_33==1 or $d_33==2) and ($d_33==$d_4 or $d_4==1))?78:(($d_33==3 and $d_4==0)?80:79); if((int)(($j_y-19)/63)==20){$a--;$b++;} if($doy_j<=$a){ $gy=$j_y+621; $gd=$doy_j+$b; }else{ $gy=$j_y+622; $gd=$doy_j-$a; } foreach(array(0,31,($gy%4==0)?29:28,31,30,31,30,31,31,30,31,30,31) as $gm=>$v){ if($gd<=$v)break; $gd-=$v; } return($mod=='')?array($gy,$gm,$gd):$gy.$mod.$gm.$mod.$gd;}بجای تاریخ شمسی گذاشته شده تاریخ مد نظر رو بذارید . به صورت شمسی .

 
آخرین ویرایش توسط مدیر:

Alidesign

تازه وارد
داداش دقیقا همونی که میخواستم فقط یه مشکلی داره امروز 10 من تاریخ 21 رو بهش دادم

باید بزنه 11 میزنه 10 تنها مشکلش همینه

وگرنه عالیه

کد:
<?php$shamsiDate = '1394-06-21';$shamsiDate = explode( '-' , $shamsiDate );$futureDate = jalali_to_gregorian($shamsiDate[0],$shamsiDate[1],$shamsiDate[2],'-');$d = new DateTime($futureDate);echo $d->diff(new DateTime())->format('%a');function jalali_to_gregorian($j_y,$j_m,$j_d,$mod=''){ $d_4=($j_y+1)%4; $doy_j=($j_m<7)?(($j_m-1)*31)+$j_d:(($j_m-7)*30)+$j_d+186; $d_33=(int)((($j_y-55)%132)*.0305); $a=($d_33!=3 and $d_4<=$d_33)?287:286; $b=(($d_33==1 or $d_33==2) and ($d_33==$d_4 or $d_4==1))?78:(($d_33==3 and $d_4==0)?80:79); if((int)(($j_y-19)/63)==20){$a--;$b++;} if($doy_j<=$a){  $gy=$j_y+621; $gd=$doy_j+$b; }else{  $gy=$j_y+622; $gd=$doy_j-$a; } foreach(array(0,31,($gy%4==0)?29:28,31,30,31,30,31,31,30,31,30,31) as $gm=>$v){  if($gd<=$v)break;  $gd-=$v; } return($mod=='')?array($gy,$gm,$gd):$gy.$mod.$gm.$mod.$gd;}?>
 
آخرین ویرایش توسط مدیر:

send

تازه وارد
میلادی به شمسی

gregorian_to_jalali(2011,2,11,' / ');// خروجی: 1389 / 11 / 22تابع شمسی به میلادی

jalali_to_gregorian(1389,11,22,' - ');// خروجی: 2011 - 2 - 11فایل پیوست رو دانلود و کنار فایل که این کد هست قرار بده و دستور زیر رو هم بالا همین فایلت قرار بده

کد:
include_once("jdf.php");
 
آخرین ویرایش توسط مدیر:

hannanstd.ir

مدیر انجمن و توسعه دهنده ووکامرس پارسی
داداش دقیقا همونی که میخواستم فقط یه مشکلی داره امروز 10 من تاریخ 21 رو بهش دادم

باید بزنه 11 میزنه 10 تنها مشکلش همینه

وگرنه عالیه
کد:
echo ($d->diff(new DateTime())->format('%a') + 1);
 
آخرین ویرایش توسط مدیر:
بالا