|
|
|
รบกวนช่วยหา code สำหรับตรวจสอบเวลาว่างในตารางการทำงาน |
|
|
|
|
|
|
|
ขอให้อธิบายอีกสักนิดครับมะเข้าใจคำถามครับ งง เช็คอะไรอะ แล้วเช็คแบบไหนครับ
|
|
|
|
|
Date :
2010-09-14 14:06:13 |
By :
SOUL |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
data เป็นยังไงคะ
|
|
|
|
|
Date :
2010-09-14 15:00:09 |
By :
ultrasiam |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เป็นการมอบหมายงานให้พนักงาน ซึ่งแต่ละงานใช้เวลาไม่เท่ากัน ดังนั้นจะต้องดูตารางการทำงานของพนักงานก่อนว่าว่างเวลาไหน
เช่น มีงานเข้ามาเวลา 9:30 น. ซึ่งใช้เวลา 45 นาที จะมอบหมายงานให้พนักงานA
ดังนั้นต้องไปตรวจสอบว่าพนักงาน A จะเริ่มทำงานนี้ได้กี่โมง จากตารางการทำงานของพนักงานA
ตารางการทำงานของพนักงานA
เริ่มต้น สิ้นสุด
10:00 11:00
12:00 13:00
14:00 14:30
15:00 16:00
18:00 18:30
แล้วมาตรวจสอบว่าพนักงานA มีเวลาว่างช่วงไหน และว่างกี่นาที เปรียบเทียบกับเวลาที่งานที่เข้ามาใช้ คือ 45 นาที
ตารางว่าง(คำนวณหามาจากตารางการทำงาน***แต่ยังคำนวณไม่ได้)
เริ่มต้น สิ้นสุด เวลาว่าง(นาที) ผล
09:30 10:00 30 X
11:00 12:00 60 /
13:00 14:00 60 /
14:30 15:00 30 X
16:00 18:00 120 /
18:30 20:00 90 /
จากนั้นก็เลือกเวลา 11:00-11:45 (งานใหม่ใช้เวลา 45 นาที) แล้วบันทึกเวลาสำหรับงานใหม่ที่เข้ามาลงในตารางการทำงาน
|
|
|
|
|
Date :
2010-09-14 23:44:28 |
By :
P |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
จากนั้นก็เลือกเวลา 11:00-11:45 (งานใหม่ใช้เวลา 45 นาที) ทำไมเลือก 11:00 - 11:45 ทำไมไม่เลือก 13:00 14:00 , 16:00 18:00,
18:30 20:00 คือที่จะถามมีหลักเกณฑ์ไหน ในการเลือกเวลาช่วงไหนครับ
คือไม่รู้ว่าตรงกับคำถามหรือเปล่านะครับ
คือต้องหาเวลาแต่ละช่วงในการทำงานของเขาก่อน ยกตัวอย่างง่ายๆ นะ
start end
09:30 10:00 ((substr(end,0,2)*60)+substr(end,3,2)) - ((substr(start,0,2)*60)+substr(start,3,2))
อันนี้ก็จะได้เวลาเป็นนาทีของ end ในแต่ละช่วง
11:00 12:00
13:00 14:00
14:30 15:00
16:00 18:00
18:30 20:00
สุดท้ายรับค่า งานใหม่ที่เข้ามาว่ากี่นาที เช่น 45 นาที ให้เป็นตัวแปร new1 = 45 และกันนะ
if( new1 <= ช่วงเวลาที่คำนวนได้ ){
}else{
}
ไม่รู้ถูกผิดประการใดนะครับ แต่่ตั้งใจจะช่วย ถ้าไม่ถูกยังไงเทพท่านอื่น ช่วยตอบด้วยนะครับ
|
|
|
|
|
Date :
2010-09-15 02:05:05 |
By :
t |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณนะคะ เกณฑ์ที่จะใช้เลือกช่วงเวลาว่างก็คือ หาช่วงเวลาว่างที่สามารถรับงานใหม่ที่เข้ามาก่อน
แต่ปัญหาคือ หาเวลาว่างจากตารางการทำงานไม่เป็นอ่ะค่ะ
|
|
|
|
|
Date :
2010-09-15 18:48:20 |
By :
P |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองเขียนแล้วไม่ออกอย่างที่ต้องการค่ะ ช่วยดูด้วยนะคะ
สมมติงานเข้ามาใช้เวลาปัจจุบัน ตัวอย่างจะเป็นเวลา 08:08:10 น.
ตารางการทำงาน
เริ่มต้น สิ้นสุด
10:00 11:00
12:00 13:00
14:00 14:30
15:00 16:00
18:00 18:30
Code (PHP)
$sql = "select * from employeeschedule a where (StartTime>=now() or (StartTime<now() and EndTime>=now())) and EmpID='00001' order by StartTime ";
$rs = mysql_query($sql);
$j=0;
while($row = mysql_fetch_assoc($rs)){
$schedule_empid = $row['EmpID'];
$schedule_start[$j]=$row['StartTime'];
$schedule_end[$j]=$row['EndTime'];
$j=$j+1;
}
for($k=0;$k<$j;$k++)
{
if($k==0)//ตรวจสอบว่าเป็น record แรกรึป่าว
{
$temp_schedulestart=$schedule_start[$k];
$temp_scheduleend=$schedule_end[$k];
$arrivedate = date("Y-m-d H:i:s", mktime(date("H"), date("i")+0, date("s")+0));
if($arrivedate<=$temp_schedulestart)
{
$st = $arrivedate;
$et = $temp_schedulestart;
echo "Start1 =".$st."........"."Stop = ".$et." Status = ว่าง<br>";
}
else
{
echo "Start1=".$temp_schedulestart."........"."Stop = ".$temp_scheduleend." Status = ไม่ว่าง<br>";
}
}
else if($k<>0)//กรณีไม่ใช่ record แรก
{
for($i=0;$i<=$k;$i++)
{
$temp_beforestart=$schedule_start[$i];
$temp_beforeend=$schedule_end[$i];
$temp_schedulestart=$schedule_start[$k];
$temp_scheduleend=$schedule_end[$k];
if($temp_beforeend<=$temp_schedulestart )
{
$st = $temp_beforeend;
$et = $temp_schedulestart;
echo "Start2 =".$st."........"."Stop = ".$et." Status = ว่าง<br>";
}
else
{
echo "Start3 =".$temp_schedulestart."........"."Stop = ".$temp_scheduleend." Status = ไม่ว่าง<br>";
}
}
}
}
ซึ่ง Output ออกมาเป็น
[color=red]Start1 =2010-09-16 08:08:10........Stop = 2010-09-16 10:00:00 Status = ว่างStart2 =2010-09-16 11:00:00........Stop = 2010-09-16 12:00:00 Status = ว่าง[/color]Start3 =2010-09-16 12:00:00........Stop = 2010-09-16 13:00:00 Status = ไม่ว่าง
Start2 =2010-09-16 11:00:00........Stop = 2010-09-16 14:00:00 Status = ว่าง
Start2 =2010-09-16 13:00:00........Stop = 2010-09-16 14:00:00 Status = ว่าง
Start3 =2010-09-16 14:00:00........Stop = 2010-09-16 14:30:00 Status = ไม่ว่าง
Start2 =2010-09-16 11:00:00........Stop = 2010-09-16 15:00:00 Status = ว่าง
Start2 =2010-09-16 13:00:00........Stop = 2010-09-16 15:00:00 Status = ว่าง
Start2 =2010-09-16 14:30:00........Stop = 2010-09-16 15:00:00 Status = ว่างStart3 =2010-09-16 15:00:00........Stop = 2010-09-16 16:00:00 Status = ไม่ว่าง
Start2 =2010-09-16 11:00:00........Stop = 2010-09-16 18:00:00 Status = ว่าง
Start2 =2010-09-16 13:00:00........Stop = 2010-09-16 18:00:00 Status = ว่าง
Start2 =2010-09-16 14:30:00........Stop = 2010-09-16 18:00:00 Status = ว่าง
Start2 =2010-09-16 16:00:00........Stop = 2010-09-16 18:00:00 Status = ว่างStart3 =2010-09-16 18:00:00........Stop = 2010-09-16 18:30:00 Status = ไม่ว่าง
แต่เวลาว่างที่ถูกต้องเป็นตัวสีน้ำเงินอ่ะค่ะ รบกวนช่วยดูด้วยนะคะ ว่าต้องแก้ไขตรงไหน
|
|
|
|
|
Date :
2010-09-16 08:05:20 |
By :
P |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อธิบาย Output ใหม่นะคะ
แต่เวลาว่างที่ถูกต้องเป็นตัวสีน้ำเงินอ่ะค่ะ รบกวนช่วยดูด้วยนะคะ ว่าต้องแก้ไขตรงไหน
Start1 =2010-09-16 08:08:10........Stop = 2010-09-16 10:00:00 Status = ว่าง
Start2 =2010-09-16 11:00:00........Stop = 2010-09-16 12:00:00 Status = ว่าง
Start3 =2010-09-16 12:00:00........Stop = 2010-09-16 13:00:00 Status = ไม่ว่าง
Start2 =2010-09-16 11:00:00........Stop = 2010-09-16 14:00:00 Status = ว่าง
Start2 =2010-09-16 13:00:00........Stop = 2010-09-16 14:00:00 Status = ว่าง
Start3 =2010-09-16 14:00:00........Stop = 2010-09-16 14:30:00 Status = ไม่ว่าง
Start2 =2010-09-16 11:00:00........Stop = 2010-09-16 15:00:00 Status = ว่าง
Start2 =2010-09-16 13:00:00........Stop = 2010-09-16 15:00:00 Status = ว่าง
Start2 =2010-09-16 14:30:00........Stop = 2010-09-16 15:00:00 Status = ว่าง
Start3 =2010-09-16 15:00:00........Stop = 2010-09-16 16:00:00 Status = ไม่ว่าง
Start2 =2010-09-16 11:00:00........Stop = 2010-09-16 18:00:00 Status = ว่าง
Start2 =2010-09-16 13:00:00........Stop = 2010-09-16 18:00:00 Status = ว่าง
Start2 =2010-09-16 14:30:00........Stop = 2010-09-16 18:00:00 Status = ว่าง
Start2 =2010-09-16 16:00:00........Stop = 2010-09-16 18:00:00 Status = ว่าง
Start3 =2010-09-16 18:00:00........Stop = 2010-09-16 18:30:00 Status = ไม่ว่าง
|
|
|
|
|
Date :
2010-09-16 08:08:26 |
By :
P |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
รบกวนด้วยนะคะ งานด่วนจริงๆ
|
|
|
|
|
Date :
2010-09-16 19:52:33 |
By :
P |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อันนี้ต้องดู ต้วอย่างการเก็บตารางเวลาในฐานข้อมูลด้วยครับ
|
|
|
|
|
Date :
2010-09-17 13:21:31 |
By :
t |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 02
|