|
|
|
สอบถามหน่อยครับ ถ้าสมมุติมีสิทธิลาหยุดได้ 15 วัน ใช้ลาหยุดไปตั่งแต่วันที่ 2016-04-18 ถึง 2016-04-21 จะเท่ากับหยุด 4 วัน |
|
|
|
|
|
|
|
สอบถามหน่อยครับ ถ้าสมมุติมีสิทธิลาหยุดได้ 15 วัน ใช้ลาหยุดไปตั่งแต่วันที่ 2016-04-18 ถึง 2016-04-21 จะเท่ากับหยุด 4 วัน สิทธิลาหยุดรายการนี้ก็จะเหลือ 11 วัน แต่ถ้าหากจะ แก้ไขวันหยุด เป็นหยุด 2 วัน จะทำยังไงให้คืนค่าสิทธิลาหยุดจาก 11 วัน เป็น 13 วัน ครับ
//ฟอร์มแก้ไข วันลาหยุด//
Code (PHP)
<?
include"../connect_db.php";
$sql="select*from leave_leave left join quotas on(leave_leave.Quota_id= quotas.Quota_id) where leave_leave.Leave_id = '$_GET[Leave_id]' ";
$query=mysql_query($sql);
$check=mysql_fetch_array($query);
?>
<form id="form1" name="form1" method="post" enctype="multipart/form-data" action="edit_leaveemp.php?Leave_id=<?=$check['Leave_id']; ?>" onsubmit="return check_txt()">
<p><img src="../../icon/จัดทำใบลา1.gif" alt="" width="300" height="70" /></p>
<p> </p>
<table width="744" border="0">
<tr>
<td width="289">เอกสารแนบ</td>
<td width="440">
<?php
if($check['Leave_doc']==""){
echo "<font color='red'>ไม่มีมี</font>";
}else{
echo "<font color='green'>มี</font>";
}
?>
</td>
</tr>
<tr>
<td width="290">ประเภทการลา</td>
<td width="444">
<?php
//=========== แสดงหมวดหมู่
$sql_group = "select * from quotas INNER JOIN leavetype on quotas.LeaveT_id=leavetype.LeaveT_id
LEFT JOIN employee on quotas.Emp_id=employee.Emp_id where Emp_User='".$_SESSION['Emp_User']."' and Quota_id=$Quota_id";
$dbquery_group = mysql_query($sql_group);
$result1 = mysql_fetch_array($dbquery_group);
?>
<select name="Quota_id" id="Quota_id" class="txtbox">
<option value="<?=$result1["Quota_id"];?>"><?=$result1["LeaveT_name"];?></option>
<?php
//=========== แสดงหมวดหมู่
$sql_group = "select * from quotas INNER JOIN leavetype on quotas.LeaveT_id=leavetype.LeaveT_id
LEFT JOIN employee on quotas.Emp_id=employee.Emp_id where Emp_User='".$_SESSION['Emp_User']."' and Quota_id order by Quota_id asc";
$dbquery_group = mysql_query($sql_group);
while ($result = mysql_fetch_array($dbquery_group)){
?>
<option value="<?=$result["Quota_id"];?>" <?=$sel;?>>
<?=$result["LeaveT_name"];?>
</option>
<?php }?>
</select></td>
</tr>
</table>
<font size="4"></font>
<table width="739" border="0">
<tr>
<td width="289">วันที่เริ่มลา</td>
<td width="440">
<input type="date" name="Leave_date" id="Leave_date" value="<?php echo $check["Leave_date"];?>"/></td>
</tr>
<tr>
<td>วันสิ้นสุดการลา</td>
<td>
<input type="date" name="Leave_date1" id="Leave_date1" value="<?php echo $check["Leave_date1"];?>"/></td>
</tr>
<tr>
<td>เหตุผลการลา</td>
<td>
<textarea name="Leave_reason" id="Leave_reason" cols="45" rows="5"><?php echo $check["Leave_reason"];?></textarea></td>
</tr>
<tr>
<td>หลักฐานเอกสารแนบ</td>
<td><a href="file_quotas/<?=$check['Leave_doc'];?>"><?=$check['Leave_doc'];?></a> <br />
<input type="file" name="Leave_doc" id="Leave_doc"/>
<font color="#FF0000">*กรณีลาเกิน 3 วัน</font></td>
</tr>
<tr>
<td>เบอร์โทรศัพท์ที่สามารถติดต่อได้</td>
<td><label for="Leave_tell"></label>
<input type="text" name="Leave_tell" id="Leave_tell" value="<?php echo $check["Leave_tell"];?>"/></td>
</tr>
</table>
<p><table width="643" border="0">
<tr>
<td><font color="#FF0000"> กรุณาระบุรายละเอียดการลาให้ชัดเจนและถูกต้องก่อนบันทึกการลา</font></td>
</tr>
</table>
<font size="4">
<p>
<input type="hidden" id="id_edit" name="id_edit" value="<?php echo $check["Leave_id"];?>" />
<input type="submit" name="button" id="button" value="เปลี่ยนแปลงข้อมูล" />
</form>
ส่วนี้จะเป็นโค้ด ครับ
Code (PHP)
<?
include "../connect_db.php";
$Leave_id = $_GET["Leave_id"];//เช็คปุ่ม เมื่อมีการกดปุ่มจะทำงานวนลูป
function CheckPublicHoliday($strChkDate){// function เช็คหาวันทีมีวันหยุดราชการ
$query = "SELECT * FROM publicholiday WHERE publicholiday_year = '".$strChkDate."' ";
$objQuery = mysql_query($query);
$objResult = mysql_fetch_array($objQuery);
if(!$objResult){
return false;
}
else{
//echo $objResult['publicholiday_details'];
return true;
}
mysql_close($objConnect);
}
function holiday($strStartDate,$strEndDate){
// ค่าเริ่มต้น รับวันเริ่มหยุด $strStartDate
// ค่าเริ่มต้น รับวันสิ้นสุดหยุด $strEndDate
$intWorkDay = 0;
$intHoliday = 0;
$intPublicHoliday = 0;
$intTotalDay = ((strtotime($strEndDate) - strtotime($strStartDate))/ ( 60 * 60 * 24 )) + 1; // หาจำนวนวันตั้งวันที่เริ่มหยุด ถึง วันที่สิ้นสุดหยุด รวมทั้ง ส อ
while (strtotime($strStartDate) <= strtotime($strEndDate)) { // นับค่าจากวันที่เริ่มหยุด จากน้อยกว่าจนมีค่าเท่ากันกับ วันที่สิ้นสุดการหยุด
$DayOfWeek = date("w", strtotime($strStartDate)); // จำนวนสัปดาห์ทั้งหมดนับตั้งแต่วันที่เริ่มหยุด
if($DayOfWeek == 0 or $DayOfWeek ==6){ // 0 = Sunday, 6 = Saturday;
$intHoliday++; // โชว์ค่าให้เห็นสำหรับวันหยุด ส อ
}
elseif(CheckPublicHoliday($strStartDate)){
$intPublicHoliday++; // โชว์ค่าให้เห็นสำหรับวันหยุด ราชการ
}
else{
$intWorkDay++; // โชว์ค่าวันที่ลา
}
$strStartDate = date ("Y-m-d", strtotime("+1 day", strtotime($strStartDate)));
}
/*echo "<hr><p style='font-size:12px;'>";
echo "วันที่เริ่ม = $strStartDate <br>";
echo "วันที่สินสุด = $strEndDate";
echo "<br>วันหยุดทั้งหมดรวมเสาร์-อาทิตย์ = $intTotalDay";
echo "<br>วันลาทั้งหมดไม่รวม ส อ และวันหยุดราชการ = $intWorkDay";
echo "<br>วันหยุดเสาร์-อาทิตย์ = $intHoliday";
echo "<br>วันหยุดราชการ = $intPublicHoliday";*/
return $intWorkDay;
}
$Leave_number = holiday($_POST['Leave_date'],$_POST['Leave_date1']); // จำนวนวันที่ลาที่ไม่รวม ส อ และวันหยุดราชการ
//============ แก้ไขข้อมูลการลา
$up_Leave = "UPDATE leave_leave SET Quota_id='$_POST[Quota_id]',
Leave_date='$_POST[Leave_date]',
Leave_date1='$_POST[Leave_date1]',
Leave_number='$Leave_number',
Leave_reason='$_POST[Leave_reason]',
Leave_tell='$_POST[Leave_tell]'
WHERE Leave_id = '$Leave_id'";
$checkup = mysql_query($up_Leave)or die("myasql error ('$sql')");
if ($checkup){
echo "<script language='javascript'>alert('แก้ไขข้อมูลเรียบร้อยแล้ว')</script>";//Message box แจ้งเตือน
echo "<meta http-equiv='refresh' content='0 ;url=emp_editleaveemp.php'>";
$file = iconv("UTF-8", "TIS-620", $_FILES["Leave_doc"]["name"]);// แปลงค่าให้เป็นภาษาไทย ที่ โฟล์เดอร์ imagesที่เราสร้างขึ้นเพื่อเก็บไฟล์ภาพ
if(copy($_FILES["Leave_doc"]["tmp_name"],"file_quotas/".$file)){// images นี้คือโฟล์เดอร์ที่สร้าง
$sql="update leave_leave set Leave_doc='".$_FILES["Leave_doc"]["name"]."' WHERE Leave_id='$Leave_id'";
$query=mysql_query($sql) or die ("mysql erorr ('$sql')");
}
$sqlnum=mysql_query("select * from leave_leave where Leave_id='".$Leave_id."'");//เรียกค่าจำนวน ในฟิลล์ Leave_numberเพื่อนำค่ามาลบกะจำวันที่กำหนด Quota_id
while($resultnum=mysql_fetch_array($sqlnum)){
$unit=$resultnum["Leave_number"];//ประกาศตัวแปรจำนวนวันที่ลาหยุด
$Quota_id=$resultnum["Quota_id"];//ประกาศตัวแปรไอดี Quota_id เพื่อเข้าถึงข้อมูล จำนวนวันที่กำหนดวันลา
$sql = mysql_query("update quotas set Quota_number=Quota_number-$unit where Quota_id='$Quota_id'");//โค้ดที่ใช้คำนวน
}
}else {
echo "แก้ไขข้อมูลไม่สำเร็จ";
}
?>
Tag : PHP
|
|
|
|
|
|
Date :
2016-04-08 18:00:36 |
By :
narutokarp |
View :
891 |
Reply :
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตอนที่เลือกวันลา ว่าลาวันที่เท่าไรบ้าง ก็ ให้ insert ลง db ทุกวันเลย ตั้ง status เป็น 1
แต่ถ้าต้องการยกเลิกวันลา ก็ให้ไปก็ยกเลิก รายการวันที่จะลา แล้วให้ status เป็น 0
วิธีเช็คว่าคนนั้น ลากี่วัน ก็เช็คเอาได้เลยว่า มีจำนวน count ของข้อมูลที่ status เป็น 1 กี่วัน ก็เอาไปลบ กับ 15 วัน ก็ได้จะจำนวนวันที่เหลือ
|
|
|
|
|
Date :
2016-04-09 11:18:21 |
By :
Shadow Copy |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
พอจะเขียนโค้ดชี้แน่ะแนวทางหน่อยได้มั่ยครับ ผมพึ่งมือใหม่หัดเขีนรนีเลยครับ
|
ประวัติการแก้ไข 2016-04-09 13:41:56
|
|
|
|
Date :
2016-04-09 13:30:09 |
By :
narutokarp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 02
|