PDA

View Full Version : مبتدی: تایمر در php



mbf5923
چهارشنبه 07 دی 1390, 11:46 صبح
سلام خدمت دوستان
بنده یه سئوال برام پیش اومده و اون هم این که در php چیزی شبیه یک تایمر برای تکرار منظم یک کار و یا دستور وجود نداره؟
مثلا فرض کنید که بخواهیم ساعت رو درون یک تکست باکس نمایش بدیم و با تغییر ساعت(ساعت،دقیقه و ثانیه) اون هم تغییر کنه دقیقا مثل تایمر در بقیه زبان های برنامه نویسی.
تا حالا من هرچی گشتم از کد جاوا برای این کار ها استفاده شده و خود php ظاهرا از انجام چنین کاری عاجز هستش؟!

mohsen24000
چهارشنبه 07 دی 1390, 12:27 عصر
php یه یک زبان سمت سرور است و خواسته شما می بایست سمت کلاینت اجرا بشه که اونهم با جاوا اسکریپت قابل اجراست...

mbf5923
چهارشنبه 07 دی 1390, 12:37 عصر
از پاسخ شما متشکرم دوست عزیزم
اما در ASP ک اون هم در سمت سرور اجرا میشه تابع تایمر داخلی داره و به راحتی میشه باهاش کارکرد

Keramatifar
چهارشنبه 07 دی 1390, 16:33 عصر
از پاسخ شما متشکرم دوست عزیزم
اما در ASP ک اون هم در سمت سرور اجرا میشه تابع تایمر داخلی داره و به راحتی میشه باهاش کارکرد
اون تابع در ASP.NET بعد از کامپایل شدن، تبدیل به یک تابع ClientSide به زبان جاوا اسکریپت می شود.
باید با جاوا اسکریپت یا جی کوئری این کار رو انجام بدید، در صورت نیاز به ارتباط با PHP هم می تونید از AJAX و یا از hidden field ها استفاده کنید

MMSHFE
چهارشنبه 07 دی 1390, 17:16 عصر
از پاسخ شما متشکرم دوست عزیزم
اما در ASP ک اون هم در سمت سرور اجرا میشه تابع تایمر داخلی داره و به راحتی میشه باهاش کارکرد
دوست گرامی، اگه منظورتون کلاس System.Web.UI.Timer هست، باید بگم که این شئ بعد از تولید خروجی صفحه که اصطلاحاً Page Render بهش میگن، یک کد JavaScript برای سمت کلاینت تولید میکنه که در فواصل زمانی مشخص، کار خاصی رو از سمت سرور درخواست میکنه. درواقع یک مکانیزم راحت برای استفاده از AJAX هست. شما به راحتی میتونید با jQuery همین کار رو انجام بدین. اینکه میگم از jQuery استفاده کنید بخاطر اینه که به شما اجازه اجرای درخواستهای AJAX رو به هر دو روش Asynchronous و Synchronous میده. بنابراین، باید دقت کنید که نه تنها PHP و ASP.NET بلکه هیچ زبان سمت سروری نمیتونه رویدادهای سمت کلاینت رو کنترل کنه. برای امتحان، میتونید JavaScript مرورگر رو از کار بندازین تا ببینید شئ Timer شما دیگه کار نمیکنه! درنتیجه بهتره در اینگونه موارد کلمه عجز رو بکار نبریم چون انصافاً در اینگونه موارد، شایسته PHP نیست. موفق باشید.

mbf5923
چهارشنبه 07 دی 1390, 17:43 عصر
جناب MMSHFE خیلی از شما متشکرم
قبلا از آموزش های خوب شما استفاده کرده ام.
منظور بنده از عجز ناتوانی کلی PHP نبود چرا که با وجود اینکه بنده با ASP کار میکنم اما قبول دارم که زبان PHP بهتر از ASP عمل میکنه.
خوب حالا قصدم از سئوال این بود که:
من در یک فرم باید مقداری رو از کاربر دریافت کرده و یک عملیات شمارش معکوس از اون عدد تا صفر را اجرا کنم.حالا با استفاده از PHP جطور میتونم این کار رو انجام بدم؟
متشکرم

MMSHFE
چهارشنبه 07 دی 1390, 19:29 عصر
این کاری که شما میخواین انجام بدین، اصلاً نیاز به AJAX هم نداره. برای مثال، کد زیر رو ببینید:


<!doctype html>
<html>
<head>
<title>CountDown</title>
<meta charset="utf-8"/>
<script type="text/javascript">
function start() {
var start = parseInt(document.getElementById("counter").innerHTML);
countDown(start);
}
function countDown(number) {
document.getElementById("counter").innerHTML = number;
number--;
if(number >= 0) {
setTimeout("countDown("+number+")", 1000);
}
else {
alert("Game Over!!!");
}
}
</script>
</head>
<body onload="start()">
<div id="counter"><?php echo isset($_GET['start']) ? $_GET['start'] : 0; ?></div>
</body>
</html>

این کد رو توی یک فایل PHP ذخیره کنید (مثلاً countdown.php) و مقدار شروع رو براش به روش GET بفرستید. مثلاً اینطوری صداش بزنید:
countdown.php?start=10
تا کار شمارش معکوس رو انجام بده و وقتی شمارش تمام شد، پیغام !!!Game Over ظاهر و شمارش متوقف بشه.
موفق باشید.