PDA

View Full Version : سوال: خواندن زمان از دیتابیس !



iman65
شنبه 27 شهریور 1389, 08:38 صبح
سلام
نمی دونم عنوان مطلب رو درست نوشتم یا نه
از دوستان عزیز یک راهنمایی می خوام
من تو دیتابیسم زمان رو به دو صورت نگه داری می کنم و طبق کد زیر می خوام زمان پایان (finish) رو از زمان شروع (start) کم کنم که طبیعتا باید یک عدد مثبت تو خروجی نشون داده بشه و لی نتونستم این کار رو انجام بدم
دوستان ممنون میشم راهنمایی کنید کد درست رو درج کنم.
کدهایی که من قرار می دم به صورت زیر هستن:

دیتابیس من:


http://705688.20upload.net/files/sh2/12847839381.png




$start_date = explode('/', jdate("Y/m/d", $nextWeek));
$finish_date = explode('/', mysql_result($result,$i,'date_end'));
$finish_hour = explode(':', mysql_result($result,$i,'time_end'));
$start_hour = explode(':', mysql_result($result,$i,'time_start'));
$start_time = explode('/', mysql_result($result,$i,'date_start'));
$start_month_name = name_month($start_time[1]);
$finish_month_name = name_month($finish_date[1]);
// کد زیر زمان پایان رو میگیره
list($gYear, $gMonth, $gDay) = jalali_to_gregorian($finish_date[0], $finish_date[1], $finish_date[2]);
$gMonth--; //Will Work?
$myH = $finish_hour[0];
$myM = $finish_hour[1];
// کد زیر زمان شروع رو میگیره
list($sYear, $sMonth, $sDay) = jalali_to_gregorian($start_time[0], $start_time[1], $start_time[2]);
$sMonth--; //Will Work?
$myHs = $start_hour[0];
$myMs = $start_hour[1];


$autojs = <<< EOT
<script type="text/javascript" id='autojs5'>
dateFuture5 = new Date($gYear,$gMonth,$gDay,$myH,$myM,0);
function GetCount5(){
divId = 'countbox5';
dateNow = new Date($sYear,$sMonth,$sDay,$myHs,$myMs,0); //grab current date
amount = dateFuture5.getTime() - dateNow.getTime(); //calc milliseconds between dates
delete dateNow;

if(amount < 0){
document.getElementById(divId).innerHTML="پایان مسابقه";
}

Hell Lord
شنبه 27 شهریور 1389, 09:35 صبح
چرا زمان را اینطور ذخیره میکنید؟
استفاده از فرمت خود پی اچ پی که راحتر است!؟
time() یک عدد مثبت را خروجی میدهد که عدد آن هر ثانیه افزایش میابد، با استفاده از آن راحت میتوانید این کار را انجام دهید!.

iman65
شنبه 27 شهریور 1389, 10:00 صبح
ممنون میشم با کد راهنماییم کنید
من تو بحث برنامه نویسی تخصصی ندارم
تشکر

iman65
شنبه 27 شهریور 1389, 10:35 صبح
البته من فکر می کنم تو خوندن زمان پایان مشکلی نیست و فقط زمان شروع رو دارم اشتباه می کنم
به هر حال ممنون می شم راهنمایی کنید و یا راه حل بهتری اگه دارید بگید
تشکر

Hell Lord
شنبه 27 شهریور 1389, 11:07 صبح
برای ان حالت :
اول باید جایی که اطلاعات را در دیتا بیس میریزید را ویرایش کنید که فقط مقدار time() را داخل آن بریزد.
سپس، بعد از گرفتن اطلاعات کد شما باید تغییر کند. که فکر کنم برای شما سخت باشد.

بگید دقیقا میخواهید چه کار کنید تا برایتان درستش کنم.

iman65
شنبه 27 شهریور 1389, 11:17 صبح
من تو سایتم یک زمان دارم که به صورت معکوس زمان باقیمانده رو برای شرکت تو مسابقه نشون میده
ولی این زمان از سیستم کاربر گرفته میشه و می خوام اینطور نباشه چون وقتی کاربر میاد ساعت سیستمش رو تغییر میده زمان سایت به هم میریزه و غیر واقعی نشون داده میشه
حالا فکر کردم اگه زمان شروع مسابقه و زمان پایان مسابقه که تو سایت قرار میدم رو بگیرم و از هم کم کنم مشکل حل میشه و دیگه با ساعت سیستم کاربر درگیر نیست
تشکر

Hell Lord
شنبه 27 شهریور 1389, 11:34 صبح
$reHs = $finish_hour[0] - $start_hour[0];
$reMs = $finish_hour[1] - $start_hour[1];
$reSs = $finish_hour[2] - $start_hour[2];
$remainTime = $reHs . ':' . $reMs . ':' . $reSs;شما اصلا قسمتی برای تفریق آن زمان نداشتید، این کد این کار را خواهد کرد، تستش کنید (بگذارید زیر $myMs = $start_hour[1]; )

iman65
شنبه 27 شهریور 1389, 11:51 صبح
ممنونم
ولی کل کد به صورت زیره فقط مشکل تو گرفتن زمان از طرف سرور و یا زمان داخل دیتابیسم هست




// کد زیر زمان پایان رو میگیره
list($gYear, $gMonth, $gDay) = jalali_to_gregorian($finish_date[0], $finish_date[1], $finish_date[2]);
$gMonth--; //Will Work?
$myH = $finish_hour[0];
$myM = $finish_hour[1];
// کد زیر زمان شروع رو میگیره
list($sYear, $sMonth, $sDay) = jalali_to_gregorian($start_time[0], $start_time[1], $start_time[2]);
$sMonth--; //Will Work?
$myHs = $start_hour[0];
$myMs = $start_hour[1];


$autojs = <<< EOT
<script type="text/javascript" id='autojs5'>
dateFuture5 = new Date($gYear,$gMonth,$gDay,$myH,$myM,0);
function GetCount5(){
divId = 'countbox5';
dateNow = new Date($sYear,$sMonth,$sDay,$myHs,$myMs,0); //grab current date
amount = dateFuture5.getTime() - dateNow.getTime(); //calc milliseconds between dates
delete dateNow;

if(amount < 0){
document.getElementById(divId).innerHTML="پایان مسابقه";
}
else{
days=0;hours=0;mins=0;secs=0;out="";
amount = Math.floor(amount/1000);
//days=Math.floor(amount/86400);
//amount=amount%86400;
hours=Math.floor(amount/3600);
amount=amount%3600;
mins=Math.floor(amount/60);
amount=amount%60;
secs=Math.floor(amount);
if(days != 0){out += (days) +" روز و "+", ";}
if(days != 0 || hours != 0){out += (hours) +" ساعت و "+", ";}
if(days != 0 || hours != 0 || mins != 0){out += (mins) + " دقیقه و "+ ", ";}
out += (secs) +" ثانیه";
document.getElementById(divId).innerHTML=out;
setTimeout("GetCount5()", 1000);
}
}
GetCount5();
</script>
<div id="countbox5"></div>
EOT;

Hell Lord
شنبه 27 شهریور 1389, 11:55 صبح
:متفکر:
:لبخند:
آها خب من بد گرفتم!
قسمتی که اطلاعات را از دیتابیس میگیرد اینجا هست که :متفکر: :

$finish_date = explode('/', mysql_result($result,$i,'date_end'));
$finish_hour = explode(':', mysql_result($result,$i,'time_end'));
$start_hour = explode(':', mysql_result($result,$i,'time_start'));
$start_time = explode('/', mysql_result($result,$i,'date_start'));
کد را خودتان نوشتید!؟

iman65
شنبه 27 شهریور 1389, 12:02 عصر
کد نه کار من نیست
من برنامه نویس نیستم
ولی سعی کردم دستکاری کنم که جواب نداد
براتون مقدوره تو مسنجر آن بشید ؟
iman_izma
تشکر