GORAGOD.com

freelance, web developer, web designer, hosting, domain name

มีปัญหาเรื่องของเวลาค่ะ

พอดี เป็นโปรเจคค่ะ เป็นการประมูลค่ะ นับเวลาเป็นนาที
ประมาณเว็บนี้ค่ะ http://bidleaders.com/ จะนับเวลาถอยหลังทุก ๆ 2 นาที(หากมีผู้มาประมูลใหม่) โดย อิงเวลาจาก server

ต้องทำอย่างไรดีค่ะ
ขอบคุณค่ะ
ตอนนี้ปวดหัวมาก
02 มี.ค. 2552 6 3,346

ถ้าเวลาจาก server คงเป็น Ajax แหละครับ มีตัวอย่างการอ่านเวลาจาก server บนเว็บครับ

สำหรับส่วนอื่นๆ คงต้องอาศัยการตรวจสอบด้วย php แหละครับ

1.ลองออกแบบการอ่านเวลาจาก server ก่อน เพื่อแสดงการนับถอยหลัง
2.ตอนอ่านเวลาให้ตรวจสอบว่ามีการเคาะราคาใหม่หรือไม่ด้วย ถ้ามีให้ reset เวลาใหม่
3.ไม่จำเป็นต้องส่ง request หลายครั้ง สามารถใช้ request แค่ครั้งเดียวแต่สามารถส่งกลับค่าหลายๆค่าได้ อาจลองศึกษาเกี่ยวกับ XML หรือ JSON เพิ่มเติม
4.ที่เหลือ สามารถจัดการได้ด้วย Javascript บนเวบ หลังจากส่งค่ากลับแล้ว
#1

ลองทำตามตัวอย่างที่อยู่ ในเว็บแล้วค่ะ ช่วยได้มาก
แต่ยังติดที่ การกำหนดค่า เวลาให้นับถอยหลังค่ะ ยังไม่ได้

คิดไม่ออกจริง ๆ ค่ะ

-------- test.html --------------------
<html>
<head>

<script language=JavaScript>

var xmlhttp

function Inint_AJAX () {
var xmlhttp = false;
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {
xmlhttp = false;
}
}

if(!xmlhttp && document.createElement){
xmlhttp = new XMLHttpRequest();
}
return xmlhttp;
}

function startCallback() {
if (xmlhttp.readyState == 4) {
if (xmlhttp.status == 200) {
document.getElementById("time").innerHTML=xmlhttp.responseText; //รับค่ากลับมา

delete xmlhttp;
setTimeout("doStart()", 1000);
}
}
}

function doStart() {
xmlhttp = Inint_AJAX();
var url = "time.php";
xmlhttp.open("GET", url, true);
xmlhttp.onreadystatechange = startCallback;
xmlhttp.send(null);
}

</script>
</head>

<body>
<div id="time"> </div>
<script language=JavaScript>doStart();</script>

</body>
</html>

---- enc test.html ---------------------------------------

--------- time.php ----------------------------------
<?

$mtime= date("s",mktime(0,0,0,0,0,0) - time());

header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header ("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header ("Pragma: no-cache"); // HTTP/1.0
header("content-type: application/x-javascript; charset=tis-620");

echo "$mtime";

?>

-------------------------------------- end time.php -------------------------


#2

555+++

นับถอยหลังก็ลบเวลาเอาสิครับ เก็บเวลาเริ่มต้นไว้ ลบ ออกจากเวลาปัจจุบัน ก็รู้แล้วว่าเวลาผ่านไปเท่าไร มันคงบอกเวลานับถอยหลังกันตรงๆไม่ได้หรอกครับ คงต้องดัดแปลงกันนิดนึง

มีบทความเกี่ยวกับเวลาหลายอันบนเว็บ ลองหาอ่านดูครับ
#3

ทำนับเวลาถอยหลังได้แล้วค่ะ

function time_diff_mins($start_time, $end_time) {
  
        $start_time = explode(':',$start_time);
        $end_time = explode(':',$end_time);
        $end_ts = $end_time[0] * 60 + $end_time[1];
        $start_ts = $start_time[0] * 60 + $start_time[1];
    
        if ($start_time[0] > $end_time[0]) {          
            $diff_ts = (24*60) - $start_ts + $end_ts;
        } else {
            $diff_ts = $end_ts - $start_ts;      
        }

        return $diff_ts;
    }

 $mtime=date("H:i:s",mktime( date("H")+$hour, date("i")+$min ));
$diff_time = time_diff_mins($mtime,"18:15:00");

แต่ยังเหลือ การอ่านเวลาของหลาย ๆ product ที่ไม่เท่่ากัน
<เบื่อการเป็นผู้หญิงจริง ๆ คิดไรไม่ออกเลย >

ขอบคุณสำหรับคำแนะนำค่ะ
#4

555+++

คิดอะไรให้วุ่นวาย

1.ต้องเก็บเวลาเริ่มต้นการเคาะราคาขาย ของแต่ละสินค้าอยู่แล้ว เราก็เอาตัวนั้นแหละ เป็นการเริ่มต้นนับถอยหลัง ของแต่ละรายการสินค้า โดยนำมาหาเวลที่เหลือด้วย time_diff_mins ทีละรายกสรนั่นแหละ

ผมมองว่าปัญหาที่ยากที่สุดน่าจะไปอยู่ที่จะรับส่งข้อมูลหลายๆตำแหน่งพร้อมกันยังไงมากกว่า ซึ่งทางออกจริงๆก็ไม่ไ้ด้ยากอย่างที่คิด ถ้าจะศึกษาเรื่อง JSON หรือ XML ครับ
#5

ขอบคุณค่ะ

ลองเทสอยู่ค่ะตอนนี้ ก็มีปัญหาที่ว่า รัน ไปแล้วเวลาค้างซะงั้น
-..-
#6
ความคิดเห็น
ไฟล์อัปโหลด ชนิด jpg, jpeg ขนาดไฟล์ไม่เกิน 2M
^