ช่วยหน่อยค่ะเรื่อง mktime เช่น เวลา 10:00:00-12:00:00 ก็จะแสดงข้อมูลจากฐานข้อมูลตามช่วงเวลาที่เราเลือกน่ะค่ะ
ถ้าดูตามนี้ ในฐานข้อมูลของคุณก็จะบันทึก วันที่ และเวลา อยู่ในฟิวด์เดียวกันใช่ไหมครับ แล้วคุณต้องการที่จะแสดงข้อมูลที่เป็นวันที่เท่านี้ ในช่วงเวลาเท่านี้ ถึงเท่านั้น ใช่หรือเปล่าครับ
Date :
2009-09-25 17:25:06
By :
NanoTHoro
ยู้ฮู้ อยู่ไหมเนี่ยยยย
Date :
2009-09-25 17:28:47
By :
NanoTHoro
มารายงานหน่อย ได้ไม่ได้ เดี่ยวช่วย
Date :
2009-09-25 18:51:34
By :
danya
สงสัยว่าเขาโพสตอนอยู่ที่ ม ตอนนี้คงกลับบ้านไปแล้วล่ะคุณดุนยา
Date :
2009-09-25 20:26:08
By :
NanoTHoro
ถูกต้องนะครับ....
ขอโทษนะค่ะที่ไม่ได้เข้ามาดูน่ะค่ะ....ที่พูดมานั้นถูกต้องทุกประการเลยค่ะ
คือว่าเก็บข้อมูลในฟิลด์เดียวกันเลยค่ะ
Date :
2009-09-26 14:03:16
By :
krataiss
ดีจ้า.....โทษทีค่ะรายงานตัวช้าค่ะ...ยังไงช่วยหน่อยค่ะ
Date :
2009-09-26 19:43:34
By :
krataiss
โพสไว้ดูผลลัพธ์ข้ามวันเลยนะเนี่ย
สมมุติว่ามีข้อมูลวันที่และเวลาดังนี้
2009-02-21 10:10:00
2009-02-21 11:00:44
2009-02-21 12:15:25
2009-02-21 13:20:11
2009-02-21 13:35:52
2009-02-21 14:20:00
2009-02-22 09:02:33
2009-02-23 09:40:44
2009-02-23 10:10:10
จากข้อมูลตัวอย่างลองสมมุติข้อมูลที่ต้องการแส ดงมาสิครับ
Date :
2009-09-26 20:22:59
By :
NanoTHoro
และแล้วเธอก็หายไป
สงสัยโพสไว้วันนี้ พรุ่งนี้ค่อยมาดูอีกมั้งเนี่ย
Date :
2009-09-26 20:38:40
By :
NanoTHoro
ป่าวค่ะ...ใช้เน็ตมือถือช้าหน่อยนะค่ะ
ต่อจากของพี่เลยนะค่ะดังนี้
2009-02-21 10:10:00 wanwisa ทำงาน A
2009-02-21 11:00:44 siriwan ทำงาน B
2009-02-21 12:15:25 jutamas ทำงาน A
2009-02-21 13:20:11 wanwisa ทำงาน B
2009-02-21 13:35:52 jutamas ทำงาน C
2009-02-21 14:20:00 siriwan ทำงาน C
2009-02-22 09:02:33 siriwan ทำงาน A
2009-02-23 09:40:44 wanwisa ทำงาน D
2009-02-23 10:10:10 jutamas ทำงาน D
หากเราเลือก 2009-02-21 12:00:00-14:00:00
ผลคือ
2009-02-21 12:15:25 jutamas ทำงาน A
2009-02-21 13:20:11 wanwisa ทำงาน B
2009-02-21 13:35:52 jutamas ทำงาน C
แบบนี้เลยค่ะ
Date :
2009-09-26 20:56:07
By :
krataiss
แต่อย่าลืมนะค่ะว่าในฐานข้อมูลนั้นเก็บเวลาของวันที่ เวลา เป็น mktime ในฟิลด์เดียวกันนะค่ะ คุณพี่นาโน
Date :
2009-09-26 20:59:15
By :
krataiss
โอเคเลย เดี๋ยวจัดให้
Date :
2009-09-26 21:24:42
By :
NanoTHoro
รออีกแป๊บนะ กำลังพิมพ์
Date :
2009-09-26 21:35:39
By :
NanoTHoro
ก่อนอื่นเราต้องหาวันที่ ที่ต้องการข้อมูลออกมาก่อน
$DateSelect = .....................; // แล้วแต่จะใช้อะไรหาออกมาครับ มีหลายตัว ย้ำนะครับ เอาเฉพาะวันที่
จากนั้นหาเวลาเริ่มต้น เอาเฉพาะเวลานะครับ
$TimeStart = ......................; //เช่นเดิมหาอย่างไรก็ได้ให้ออกมาเป็นเวลาที่ต้องการครับ
จากนั้นหาเวลาสิ้นสุด เหมือนกันเวลาเริ่มต้น
$TimeEnd = ..........................; //หาวิธีเดียวกันกับเวลาเริ่มต้นครับ
เมื่อได้แล้วสร้างคำสั่งเอสคิวแอลครับ ด้วยคำสั่ง ซีเล็กปลาทู เอ๊ยทูน่า เอ๊ยซีเล็กเฉยๆ ก็พอและ
$SQL = "SELECT field_name, .... FROM table_name, ... WHERE (DATE_FORMAT(mktime_field_name, '%Y-%m-%d) = '$DateSelect') AND
(TIME_FORMAT(mktime_field_name, '%I:%i:%S') BETWEEN '$TimeStart' AND '$TimeEnd')
พึงระวังเรื่องของตัวอักษรพิมพ์เล็กพิมพ์ใหญ่นะครับ
คำสั่ง TIME_FORMAT สามารถใช้คำสั่ง DATE_FORMAT แทนได้ครับ แต่กันสับสนใช่ให้ถูกกาลเทศะดีกว่าครับ
Date :
2009-09-26 21:49:10
By :
NanoTHoro
$SQL = "SELECT field_name, .... FROM table_name, ... WHERE (DATE_FORMAT(mktime_field_name, '%Y-%m-%d) = '$DateSelect') AND
(TIME_FORMAT(mktime_field_name, '%I:%i:%S') BETWEEN '$TimeStart' AND '$TimeEnd')";
เมื่อคี้ตกตอนท้ายจ้า แก่แล้วขี้ลืมจริงๆ เล๊ยยยย
Date :
2009-09-26 21:51:15
By :
NanoTHoro
อันนี้สำหรับเวลาที่บันทึกเป็น 24 ชั่วโมงนะครับ
SELECT ope_date FROM tb_open WHERE (DATE_FORMAT(ope_date, "%Y-%m-%d") = "2009-07-01") AND
(TIME_FORMAT(ope_date,"%H:%i:%S") BETWEEN "00:00:01" AND '10:10:10') LIMIT 10;
Date :
2009-09-26 22:07:14
By :
NanoTHoro
ตัว SQL นี้เราเปลี่ยนแค่ field_name field_name เท่านั้นใช่ไหมค่ะ
แล้ว mktime_field_name ล่ะค่ะเราต้องใช้ชื่อของเราไหมค่ะ
แต่ยังไงก็ขอบคุณมากจริงๆนะค่ะ...เดี๋ยวขอรอลองหน่อยล่ะกันนะค่ะ
Date :
2009-09-26 22:17:25
By :
krataiss
mk ก้อสุกี้ไง
อิอิอิ
mktime ก็ฟิวด์ที่จะเอามาเปรียบเทียบไงจ๊ะ ชนิดของข้อมูลอะ
Date :
2009-09-26 22:50:06
By :
NanoTHoro
สงสัยจะผิด เพราะมัน ติดน่ะค่ะ ใครว่างดูให้หน่อยนะค่ะ
Code (PHP)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-874" />
<title>Untitled Document</title>
</head>
<body>
<form method="post" action="next.php">
วัน
<select name="cday">
<option value="1">01</option><option value="2">02</option><option value="3">03</option><option value="4">04</option>
<option value="5">05</option><option value="6">06</option><option value="7">07</option><option value="8">08</option>
<option value="9">09</option><option value="10">10</option><option value="11">11</option><option value="12">12</option>
<option value="13">13</option><option value="14">14</option><option value="15">15</option><option value="16">16</option>
<option value="17">17</option><option value="18">18</option><option value="19">19</option><option value="20">20</option>
<option value="21">21</option><option value="22">22</option><option value="23">23</option><option value="24">24</option>
<option value="25">25</option><option value="26">26</option><option value="27">27</option><option value="28">28</option>
<option value="29">29</option><option value="30">30</option><option value="31">31</option>
</select>
เดือน
<select name="cmonth">
<option value="1">มกราคม</option><option value="2">กุมภาพันธ์</option><option value="3">มีนาคม</option><option value="4">เมษายน</option>
<option value="5">พฤษภาคม</option><option value="6">มิถุนายน</option><option value="7">กรกฎาคม</option><option value="8">สิงหาคม</option>
<option value="9">กันยายน</option><option value="10">ตุลาคม</option><option value="11">พฤศจิกายน</option><option value="12">ธันวาคม</option>
</select>
ปี
<select name="cyear">
<option value="2009">2552</option><option value="2010">2553</option><option value="2011">2554</option><option value="2012">2555</option>
</select>
เวลา
<select name="ctime">
<option value="<? mktime(00,00,00,0,0,0); ?>" selected="selected">00:00:00</option>
<option value="<? mktime(01,00,00,0,0,0); ?>">01:00:00</option><option value="<? mktime(02,00,00,0,0,0); ?>">02:00:00</option>
<option value="<? mktime(03,00,00,0,0,0); ?>">03:00:00</option><option value="<? mktime(04,00,00,0,0,0); ?>">04:00:00</option>
<option value="<? mktime(05,00,00,0,0,0); ?>">05:00:00</option><option value="<? mktime(06,00,00,0,0,0); ?>">06:00:00</option>
<option value="<? mktime(07,00,00,0,0,0); ?>">07:00:00</option><option value="<? mktime(08,00,00,0,0,0); ?>">08:00:00</option>
<option value="<? mktime(09,00,00,0,0,0); ?>">09:00:00</option><option value="<? mktime(10,00,00,0,0,0); ?>">10:00:00</option>
<option value="<? mktime(11,00,00,0,0,0); ?>">11:00:00</option><option value="<? mktime(12,00,00,0,0,0); ?>">12:00:00</option>
<option value="<? mktime(13,00,00,0,0,0); ?>">13:00:00</option><option value="<? mktime(14,00,00,0,0,0); ?>">14:00:00</option>
<option value="<? mktime(15,00,00,0,0,0); ?>">15:00:00</option><option value="<? mktime(16,00,00,0,0,0); ?>">16:00:00</option>
<option value="<? mktime(17,00,00,0,0,0); ?>">17:00:00</option><option value="<? mktime(18,00,00,0,0,0); ?>">18:00:00</option>
<option value="<? mktime(19,00,00,0,0,0); ?>">19:00:00</option><option value="<? mktime(20,00,00,0,0,0); ?>">20:00:00</option>
<option value="<? mktime(21,00,00,0,0,0); ?>">21:00:00</option><option value="<? mktime(22,00,00,0,0,0); ?>">22:00:00</option>
<option value="<? mktime(23,00,00,0,0,0); ?>">23:00:00</option>
</select>
ถึง
<select name="cend">
<option value="<? mktime(00,00,00,0,0,0); ?>" selected="selected">00:00:00</option>
<option value="<? mktime(01,00,00,0,0,0); ?>">01:00:00</option><option value="<? mktime(02,00,00,0,0,0); ?>">02:00:00</option>
<option value="<? mktime(03,00,00,0,0,0); ?>">03:00:00</option><option value="<? mktime(04,00,00,0,0,0); ?>">04:00:00</option>
<option value="<? mktime(05,00,00,0,0,0); ?>">05:00:00</option><option value="<? mktime(06,00,00,0,0,0); ?>">06:00:00</option>
<option value="<? mktime(07,00,00,0,0,0); ?>">07:00:00</option><option value="<? mktime(08,00,00,0,0,0); ?>">08:00:00</option>
<option value="<? mktime(09,00,00,0,0,0); ?>">09:00:00</option><option value="<? mktime(10,00,00,0,0,0); ?>">10:00:00</option>
<option value="<? mktime(11,00,00,0,0,0); ?>">11:00:00</option><option value="<? mktime(12,00,00,0,0,0); ?>">12:00:00</option>
<option value="<? mktime(13,00,00,0,0,0); ?>">13:00:00</option><option value="<? mktime(14,00,00,0,0,0); ?>">14:00:00</option>
<option value="<? mktime(15,00,00,0,0,0); ?>">15:00:00</option><option value="<? mktime(16,00,00,0,0,0); ?>">16:00:00</option>
<option value="<? mktime(17,00,00,0,0,0); ?>">17:00:00</option><option value="<? mktime(18,00,00,0,0,0); ?>">18:00:00</option>
<option value="<? mktime(19,00,00,0,0,0); ?>">19:00:00</option><option value="<? mktime(20,00,00,0,0,0); ?>">20:00:00</option>
<option value="<? mktime(21,00,00,0,0,0); ?>">21:00:00</option><option value="<? mktime(22,00,00,0,0,0); ?>">22:00:00</option>
<option value="<? mktime(23,00,00,0,0,0); ?>">23:00:00</option>
</select>
<input type="submit" name="submit">
</form>
<?php
$DateSelect = " ";
$TimeStart = $ctime;
$TimeEnd = $cend;
?>
</body>
</html>
และ
Code (PHP)
<?
include "conn.inc.php";
$SQL = "SELECT Now FROM filedata WHERE (DATE_FORMAT(Now, "%Y-%m-%d") = " ") AND
(TIME_FORMAT(Now,"%H:%i:%s") BETWEEN '$TimeStart' AND '$TimeEnd') LIMIT 10";
$sqlquery=mysql_db_query($dbname,$SQL);
$num_rows = mysql_num_rows($sqlquery);
echo"<center><h4><font color=#660000>จำนวนครั้งที่ทำการใช้งาน".mysql_num_rows($sqlquery)."ครั้ง มีข้อมูลดังนี้</font></h4>";
echo"<table>";
echo"<tr bgcolor=990000>";
echo"<td align=center>Username</td>";
echo"<td align=center>Date</td>";
echo"<td align=center>Filename</td>";
echo"<td align=center>Time</td>";
echo"</tr>";
while($row=mysql_fetch_row($sqlquery))
{
echo"<tr bgcolor=FFFFCC>";
echo"<td>".$row[1]."</td>";
echo"<td>".date("d/m/Y H:i:s a", $row[2])."</td>";
echo"<td>".$row[3]."</td>";
echo"<td>".$row[4]."</td>";
echo"</tr>";
}
echo"</center></table><br>";
mysql_close();
?>
Date :
2009-09-28 21:15:58
By :
krataiss
$sql = "SELECT * FROM filedata where update_product BETWEEN '$TimeStart' and '$TimeEnd' ";
Date :
2009-09-28 22:43:30
By :
heng
ลืมตัวแปร
$TimeStart = "$cyear-$cmonth-$cday $ctime";
$TimeEnd= "$cyear-$cmonth-$cday $cend";
$sql = "SELECT * FROM filedata where update_product BETWEEN '$TimeStart' and '$TimeEnd' ";
Date :
2009-09-28 22:44:21
By :
heng
ถ้าใช้ตัวแปรแบบนี้มันไม่แสดงน่ะค่ะ เคยลองใช้ BETWEEN แล้วแต่มันไม่ยอมแสดงน่ะค่ะ จึงไม่รู้จะทำยังไงดี แต่ถ้าใช้แบบของพี่นาโนนั้น สร้างตัวแปรแล้วแต่ไม่สามารถใช้งานได้
มันก็เลยติดแบบเนี่ยมานานแล้ว เกือบเดือนแล้วค่ะ..จึงไม่รู้จะทำยังไงดี
ลองตั้งกระทู้ถามแบบนี้ไปเรื่อยๆจนมีทางออกน่ะค่ะ
Date :
2009-09-29 19:41:13
By :
krataiss
ใน select ที่ value มันไม่มีค่านะ
ต้องเป็นแบบนี้ <?=mktime(00,00,00,0,0,0);?> แต่ค่าที่ได้ ไม่ถูกต้อง จะเป็น -1
ให้ใส่แบบนี้ไปเลย
<option value="01:00:00"> 01:00:00</option>
Date :
2009-09-29 20:01:17
By :
heng
มึนดีน่ะครับ mktime เนี่ยหุหุ
ผม echo mktime(0,0,0,0,0,0) ได้ 943894800 แต่แรกก็คิดว่าค่ามันจะเท่ากับ 0 ไม่รู้เครื่องผมแปลกหรือค่ามันถูกแหล่ะ :<
อันนี้สงสัยน่ะ ทำไมเก็บข้อมูลเป็น mktime อ่ะครับ (จารย์สั่งมาหรอ) ผมว่ามันยุ่งยากน่าดูทั้งวิธีเก็บ วิธีเรียกใช้
ทำไมถึงไม่เก็บให้เป็น date datetime หรือเก็บเป็นตัวเลขเรียง ปีเดือนวันชั่วโมงนาทีวินาที (เช่น 20060515210053) มันดูง่ายกว่าน่ะ แต่ดูท่าจะมาไกลแหล่ะ คงต้องสู้ต่อไป :>
$sqlquery=mysql_db_query($dbname,$SQL); บรรทัดนี้ครับช่วยเพิ่มหน่อย
เป็น
$sqlquery=mysql_db_query($dbname,$SQL) or die (mysql_error());
ที่นี้เราจะได้ดูว่ามัน error อะไรครับ
ถ้าทางที่ดีใส่
echo $SQL ต่อท้ายด้วยก็ดีน่ะครับ อยากรู้ว่าผลก่อนจะ query ไปรูปแบบถูกเปล่าหรือค่าถูกเปล่า
มาลองแก้กัน
Code (PHP)
$DateSelect = " ";
$TimeStart = $ctime;
$TimeEnd = $cend;
พวกนี้คือตัวแปรอะไรครับ ดูเหมือนจะไม่ได้ถูกนำมาใช้เลย ลบออกไป
Code (PHP)
$SQL = "SELECT Now FROM filedata WHERE (DATE_FORMAT(Now, "%Y-%m-%d") = " ") AND
04.(TIME_FORMAT(Now,"%H:%i:%s") BETWEEN '$TimeStart' AND '$TimeEnd') LIMIT 10";
ที่นี้พอมาตรงนี้มันก็เลยทำให้ $Timestart กับ $TimeEnd ไม่มีค่า แล้วถ้าสมมติมีค่าจริงผมก็ไม่แน่ใจว่า query จะผ่านเปล่าน่ะ เพราะหลัง where ไม่ระบุ field ที่จะค้นหาเลย (หรือวิธีแบบนี้ก็ query ได้ อันนี้ไม่รู้น่ะไม่เคยทำแบบนี้)
แก้ไข
ตรง select ของ ctime กับ cend ให้ค่า value เท่ากับ ชั่วโมงเลยน่ะครับ
Code (PHP)
<option value="1">01:00:00</option>
<option value="2">02:00:00</option>
.....
Code (PHP)
$TimeStart = mktime(0,0,0,$_POST[cmonth],$_POST[cday],$_POST[cyear])+$_POST[ctime]*3600;
$TimeEnd= mktime(0,0,0,$_POST[cmonth],$_POST[cday],$_POST[cyear])+$_POST[cend]*3600;
$SQL = "SELECT * FROM filedata where field_time BETWEEN '$TimeStart' and '$TimeEnd' ";
อีกหน่อย ผมสังเกตเห็นโพสแรกกับ No 19 ชื่อตารางไม่เหมือนกันเลยสับสนไปด้วยเลยสรุปชื่อตารางอะไร
filedata หรือ timeprocess ส่วน field_time คือ field ที่เก็บค่า mktime ครับ
ลองดูครับถ้าไม่ได้ไงก็อย่าลืม echo $SQL มาให้ดูหน่อยน่ะครับ
Date :
2009-09-29 21:36:41
By :
xbeginner01
แหม่ๆ พี่ๆทั้งหลาย ช่วยสาวกันเต็มเลยนะ อิอิ (แซวเล่นนะครับ)
Date :
2009-09-29 22:10:43
By :
nerobenz
ยังไม่ได้อีกเหรอสาวน้อย คิดว่าเสร็จไปแล้วนะเนี่ย
Date :
2009-09-29 22:37:55
By :
NanoTHoro
จ้า.....ได้แล้วจ้า
ก้อเมื่อวานมันฉลองวันเกิดอ่ะน่ะค่ะ..เลยไม่ได้มาแวะมาคุยด้วย
ขอโทดนะค่ะคุณพี่ทั้งหลาย....ขอบคุณมากคับบบบบบบบบบ
Date :
2009-09-30 13:39:14
By :
krataiss
เหรอๆๆ งั้นสุขสันต์วันเกิดย้อนหลังให้หนึ่งวันนะครับบบบ
Date :
2009-09-30 13:49:27
By :
NanoTHoro
Load balance : Server 02