Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 106,939

HOME > PHP > PHP Forum > ขอสอบถาม เรื่องการทำ ใบลา หน่อยคัฟ เช่น เริ่มลาวันที่ 2016-08-11 ถึง 2016-08-14 ระหว่างนั้น จะมี วันหยุดราชการ 1 วัน


 

ขอสอบถาม เรื่องการทำ ใบลา หน่อยคัฟ เช่น เริ่มลาวันที่ 2016-08-11 ถึง 2016-08-14 ระหว่างนั้น จะมี วันหยุดราชการ 1 วัน

 



Topic : 121741



โพสกระทู้ ( 82 )
บทความ ( 0 )



สถานะออฟไลน์




ขอสอบถาม เรื่องการทำ ใบลา หน่อยคัฟ เช่น เริ่มลาวันที่ 2016-08-11 ถึง 2016-08-14 ระหว่างนั้น จะมี วันหยุดราชการ 1 วัน และ วันหยุดเสาร์ อาทิตย์ 2 วัน ก็เท่ากับ ลางาน 1 วัน แต่ ทำไมถึงบันทึก จำนวนวันลาไม่ได้คัฟ ช่วยชี้แนะหน่อยคัฟ

จะให้บันทึกจำนวนวันลาในฟิลล์ Leave_number

Code (PHP)
<?
if ($_POST["button"]=="บันทึก"){
	//เช็คปุ่ม เมื่อมีการกดปุ่มจะทำงานวนลูป
	function DateTimeDiff($strDateTime1,$strDateTime2){//ฟั่งชั่น DateTimeDiff datetime formate Y-m-d H:i	
		$date = 0;//ประกาศตัวแปลเพื่อกำหนดค่าวัน ให้ กับ 0
		$hour = 0;//ประกาศตัวแปลเพื่อกำหนดค่าชั่่วโมง ให้ กับ 0
		$min = 0;//ประกาศตัวแปลเพื่อกำหนดค่านาที ให้ กับ 0
		$day1=0;//จำนวนวัน กับ 0
		 $escape=0;//วันหยุดต่อสัปดาห์ 0
			$diff = strtotime($strDateTime2) - strtotime($strDateTime1);
			$date  = floor($diff/(60*60*24));//เป็นการหาค่าวัน
			$hour = floor(($diff-($date*60*60*24))/(60*60));//เป็นการหาค่าชั่วโมง
			$min = floor(($diff-($date*60*60*24)-($hour*60*60))/60);//เป็นการหาค่าวินาที	

			$day1 =date('N',strtotime($strDateTime1));  // php5.1.0 ขึ้นไป ถ้าไม่ใช่ไปอัพเดท  :>
			$escape =(int)($date/7)*2;//วันหยุดต่อสัปดาห์  
			$mod=$date%7;
			if($mod !=0){

				if($day1 ==6 ) $escape++;
				if($day1==7)$escape++;
				if($day1 ==6 && $mod>1)$escape++;
				//if($mod ==6) $escape++;  แก้เอาออก มันซ้ำ
				if($day1+$mod>5 && $day1<6)$escape++;
				if($day1+$mod>6 && $day1<6)$escape++;

		


			}
			 return $date-$escape;
	}

	$sql="select*from leave_leave where Leave_id	";//เรียกค่า วัน เวลา มาจากตาราง leave_leave
	$query=mysql_query($sql);
	while($result=mysql_fetch_array($query)){	
$date1 =$result['Leave_date'];//วันเริ่มต้น รับค่าจาก Leave_date
$date2 =$result['Leave_date1'];//วันสิ้นสุด รับค่าจาก Leave_date1
$diff =DateTimeDiff($date1,$date2);//$diff จำนวนที่คำนวณออกมาจากฟังก์ชั่น DateTimeDiff
	}
$new_id =mysql_result(mysql_query("Select Max(Leave_id)+1 as MaxID from  leave_leave"),0,"MaxID");// การรันรหัส อัติโนมัติ เลือกเอาค่า id ที่มากที่สุดในฐานข้อมูลและบวก 1 เข้าไปด้วยเลย
            if($new_id==''){ // ถ้าได้เป็นค่าว่าง หรือ null ก็แสดงว่ายังไม่มีข้อมูลในฐานข้อมูล
                $Leave_id="00001";
            }else{
                $Leave_id=sprintf("%05d",$new_id);//ถ้าไม่ใช่ค่าว่าง
           }
$sql="insert into leave_leave
(Leave_id,
Leave_date,
Leave_date1,https://www.thaicreate.com/topic/new.html#top
Leave_number,
Leave_reason,
Leave_doc)
values(
'".$Leave_id."',
'$Leave_date',
'$Leave_date1',
'".$diff."',
'$Leave_reason',
'$Leave_doc')";
$query = mysql_query($sql)or die("myasql error ('$sql')");
if ($query){
	echo "<script language='javascript'>alert('บันทึกข้อมูลเรียบร้อยแล้ว')</script>";//Message box แจ้งเตือน
	 echo "<meta http-equiv='refresh' content='0 ;url=statusleaveemp.php'>";//หน่วงเวลาเพื่อ refresh หน้ากลับไปยังหน้าแรกของ  leave_leave
}else {
	echo "บันทึกข้อมูลไม่สำเร็จ";
}
}
?>




Tag : PHP







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2016-03-04 09:02:51 By : narutokarp View : 463 Reply : 3
 

 

No. 1



โพสกระทู้ ( 5,092 )
บทความ ( 4 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

สถานะออฟไลน์


ลอง echo $diff ออกมาดูครับว่ามันเป็นค่าตามที่เราต้องการหรือเปล่า
ถ้ามันไม่เป็นอย่างที่เราคิด หรือไม่มีค่าใดๆ ก็สงสัยได้ว่า function DateTimeDiff ทำงานผิดพลาดครับ

ข้อสังเกตุ
Leave_date1,https://www.thaicreate.com/topic/new.html#top

สีแดงๆ มันเผลอติด หรือว่ามัน คือ อะไร??

ข้อสังเกตุ
'".$Leave_id."', '$Leave_date', '$Leave_date1', '".$diff."', '$Leave_reason',

สีแดงๆ การกำหนดตัวแปร มันก็น่าจะไม่ต้องต่อสตริงก็ได้นะ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-03-04 09:19:33 By : apisitp
 


 

No. 2



โพสกระทู้ ( 82 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 1 เขียนโดย : apisitp เมื่อวันที่ 2016-03-04 09:19:33
รายละเอียดของการตอบ ::
ค่าที่ได้จากการ ECHO คัฟ แล้วจะต่อ ตัวแปล '".$diff."' ยังไงคัฟให้บันทึกงฐานข้อมูลได้ ช่วยชี้แนะหน่อยคัฟ
----------------------------------------------
จะแสดงว่า
------------
วันที่เริ่ม=2016-08-11
ถึงวันที่สินสุด=2016-08-14
จำนวนวันที่ลาหยุดเท่ากับ 1 วัน
----------------------------------------------

Code (PHP)
<?php
	function DateTimeDiff($strDateTime1,$strDateTime2){//datetime formate Y-m-d H:i	
		$date = 0;
		$hour = 0;
		$min = 0;
		$day1=0;
		 $escape=0;
			$diff = strtotime($strDateTime2) - strtotime($strDateTime1);
			$date  = floor($diff/(60*60*24));
			$hour = floor(($diff-($date*60*60*24))/(60*60));
			$min = floor(($diff-($date*60*60*24)-($hour*60*60))/60);	

			$day1 =date('N',strtotime($strDateTime1));  // php5.1.0 ขึ้นไป ถ้าไม่ใช่ไปอัพเดท  :>
			$escape =(int)($date/7)*2;  
			$mod=$date%7;
			if($mod !=0){

				if($day1 ==6 ) $escape++;
				if($day1==7)$escape++;
				if($day1 ==6 && $mod>1)$escape++;
				//if($mod ==6) $escape++;  แก้เอาออก มันซ้ำ
				if($day1+$mod>5 && $day1<6)$escape++;
				if($day1+$mod>6 && $day1<6)$escape++;
			}
			 return $date-$escape;
	}
$date1 ="2016-08-11 ";//*****วันที่เริ่มลางาน*****//
$date2 ="2016-08-14 ";//*****วันที่สิ้นสุดการลางาน*****//
echo "วันที่เริ่ม=$date1 <br>";
echo  "ถึงวันที่สินสุด=$date2 <br>"; 
$diff =DateTimeDiff($date1,$date2);
echo "จำนวนวันที่ลาหยุดเท่ากับ  $diff <br>";
?>
<?
if ($_POST["button"]=="บันทึก"){//เช็คปุ่ม เมื่อมีการกดปุ่มจะทำงานวนลูป
$new_id =mysql_result(mysql_query("Select Max(Leave_id)+1 as MaxID from  leave_leave"),0,"MaxID");// การรันรหัส อัติโนมัติ เลือกเอาค่า id ที่มากที่สุดในฐานข้อมูลและบวก 1 เข้าไปด้วยเลย
            if($new_id==''){ // ถ้าได้เป็นค่าว่าง หรือ null ก็แสดงว่ายังไม่มีข้อมูลในฐานข้อมูล
                $Leave_id="00001";
            }else{
                $Leave_id=sprintf("%05d",$new_id);//ถ้าไม่ใช่ค่าว่าง
           }
$sql="insert into leave_leave
(Leave_id,
Leave_date,
Leave_date1,
Leave_number,
Leave_reason,
Leave_doc)
values(
'".$Leave_id."',
'$Leave_date',
'$Leave_date1',
'".$diff."',
'$Leave_reason',
'$Leave_doc')";
$query = mysql_query($sql)or die("myasql error ('$sql')");
if ($query){
	echo "<script language='javascript'>alert('บันทึกข้อมูลเรียบร้อยแล้ว')</script>";//Message box แจ้งเตือน
	 echo "<meta http-equiv='refresh' content='0 ;url=statusleaveemp.php'>";//หน่วงเวลาเพื่อ refresh หน้ากลับไปยังหน้าแรกของ  leave_leave
}else {
	echo "บันทึกข้อมูลไม่สำเร็จ";
}
}
?>


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-03-04 10:06:33 By : narutokarp
 

 

No. 3



โพสกระทู้ ( 73,717 )
บทความ ( 833 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook



เผื่อจะมีประโยชน์ครับ

PHP Checking Work Day , Holiday

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-03-04 10:07:43 By : mr.win
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ขอสอบถาม เรื่องการทำ ใบลา หน่อยคัฟ เช่น เริ่มลาวันที่ 2016-08-11 ถึง 2016-08-14 ระหว่างนั้น จะมี วันหยุดราชการ 1 วัน
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: Voake, Comcube, vps | เช่า vps , รับทำเว็บไซต์ รับเขียนโปรแกรม

Load balance : Server 03
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2019 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
for Contact Us : [Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 , 08-9968-0655 อัตราราคา คลิกที่นี่