|  | 
	                
  
    | 
	 
        ขอสอบถาม เรื่องการทำ ใบลา หน่อยคัฟ เช่น เริ่มลาวันที่ 2016-08-11 ถึง 2016-08-14  ระหว่างนั้น จะมี วันหยุดราชการ 1 วัน     |  
    |  |  
 
	
		|  |  |  |  |  
		|  |  | 
          
            | ขอสอบถาม เรื่องการทำ ใบลา หน่อยคัฟ เช่น เริ่มลาวันที่ 2016-08-11 ถึง 2016-08-14  ระหว่างนั้น จะมี วันหยุดราชการ 1 วัน และ วันหยุดเสาร์ อาทิตย์ 2 วัน   ก็เท่ากับ ลางาน 1 วัน  แต่ ทำไมถึงบันทึก จำนวนวันลาไม่ได้คัฟ ช่วยชี้แนะหน่อยคัฟ 
 
  
 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
 
 
 |  
            |  |  
            | 
              
                |  |  |  |  
                |  | 
                    
                      | Date :
                          2016-03-04 09:02:51 | By :
                          narutokarp | View :
                          1026 | Reply :
                          3 |  |  |  
                |  |  |  |  |  
            |  |  
		            |  |  
		|  |  |  |  |  
  
    | 
 
 
        
          |  |  |  |  |  
          |  |  | 
            
              |  ตอบความคิดเห็นที่ : 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 |  |  |  
                  |  |  |  |  |  |  |  
          |  |  |  |  |  
 
        
          |  |  |  |  |  
          |  |  | 
            
              |  
 เผื่อจะมีประโยชน์ครับ
 
 PHP Checking Work Day , Holiday
 
 
 |  
              | 
                
                  |  |  |  |  
                  |  | 
                      
                        | Date :
                            2016-03-04 10:07:43 | By :
                            mr.win |  |  |  
                  |  |  |  |  |  |  |  
          |  |  |  |  |  |  |