|
|
|
สอบถามหน่อยครับถ้า จะเชกเงื่อนไขยังไง ว่า เมื่อ ฟิลล์ Quota_number มีค่ากับ 0 ให้ alert แจ้งเตือนว่า มีค่าเท่ากับ 0 |
|
|
|
|
|
|
|
สอบถามหน่อยครับถ้า จะเชกเงื่อนไขยังไง ว่า เมื่อ ฟิลล์ Quota_number มีค่ากับ 0 ให้ alert แจ้งเตือนว่า มีค่าเท่ากับ 0 และจะไม่สามารถบันทึกลงตาราง leave_leave ได้ในฟิลล์ Leave_number ที่จะเอาค่าจากการป้อนข้อมูลมาเปรียบเทียบ
Code (PHP)
<?
if ($_POST["button"]=="บันทึก"){
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++;
echo "$strStartDate = <font color=red>วันหยุด ส อ</font><br>"; // โชว์ค่าให้เห็นสำหรับวันหยุด ส อ
}
elseif(CheckPublicHoliday($strStartDate)){
$intPublicHoliday++;
echo "$strStartDate = <font color=#fff>วันหยุดราชการ</font><br>"; // โชว์ค่าให้เห็นสำหรับวันหยุด ราชการ
}
else{
$intWorkDay++;
echo "$strStartDate = <b>วันที่ลา</b><br>"; // โชว์ค่าวันที่ลา
}
$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']); // จำนวนวันที่ลาที่ไม่รวม ส อ และวันหยุดราชการ
//============ บันทึกข้อมูลการลา
$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,Quota_id,Leave_date,Leave_date1,Leave_number,Leave_reason,Leave_doc,Leave_tell,S_leader,S_manager,Leave_note,Emp_id,Leader_id,Manager_id,Status_id)
values('".$Leave_id."',
'$Quota_id','$Leave_date','$Leave_date1','".$Leave_number."','$Leave_reason','$Leave_doc','$Leave_tell','$S_leader','$S_manager','$Leave_note','$Emp_id','$Leader_id', '$Manager_id','$Status_id')";
$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=emp_editleaveemp.php'>";//หน่วงเวลาเพื่อ refresh หน้าไปยังหน้าของ emp_editleaveemp
$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
|
ประวัติการแก้ไข 2016-04-05 00:09:00
|
|
|
|
|
Date :
2016-04-05 00:06:07 |
By :
narutokarp |
View :
2597 |
Reply :
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1.ทำการ select ข้อมูลตาราง quotas ออกมา ทำไงก็คงประมาณ select * from quotas where ฟิลด์='ตัวแปร'
2. while ค่าเพื่อทำมาเช็คว่ามีเรดคอร์ดไหนเป็น 0 ประมาณ
while($rs=.......){
if($rs['Quota_number '] == 0{
echo "เฮ้ยๆวันละหมด ลาไม่ได้แล้วนะ"; //ตรงนี้จะเด้งฟ้องด้วย js ก็คงต้อง alert
}else{
echo "เฮ้ยๆ วันลายังเหลือ บันทึกเลย";
//ใส่ Code บันทึกตามที่ต้องการ
}
}
ปล.แต่จริงๆแล้ว ถ้า where แบบเฉพาะ เจาะจงบุคคล ชื่อ id มาแล้วก็ไม่ต้อง while ก็ได้ ก็เอาค่ามาเทียบเลย พื้นฐาน select ธรรมดาครับ
ก็คงประมาณนี้ครับ
|
|
|
|
|
Date :
2016-04-05 08:21:08 |
By :
apisitp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตอบความคิดเห็นที่ : 1 เขียนโดย : apisitp เมื่อวันที่ 2016-04-05 08:21:08
รายละเอียดของการตอบ ::
พี่ครับ แจ้งเตือนแล้วครับ แต่ทำไม พอเลือก ประเภทการลา อันอื่น ที่มีค่ามากกว่า 0 ก็ยังแจ้งเตือนไม่ยอมให้บันทึก หรือผมทำเงื่อนไขผิดตรงไหนหรือป่าวครับ ช่วยแนะนำหน่อยครับ ของคุณครับ
Code (PHP)
$Leave_number = holiday($_POST['Leave_date'],$_POST['Leave_date1']); // จำนวนวันที่ลาที่ไม่รวม ส อ และวันหยุดราชการ
//============ บันทึกข้อมูลการลา
$strSQL = "SELECT * FROM quotas WHERE Quota_id = '".$_POST["Quota_id"]."' ";
$objQuery = mysql_query($strSQL);
$objResult = mysql_fetch_array($objQuery);
if($objResult)
{
$num=$objResult['Quota_number']==0;// ตัวแปล $num เรียกข้อมูลมาจากฟิลล์ Quota_number
$num<$Leave_number;// ตัวแปลนี้ จะได้มาจากการเปรียบเทียบวันหยุดว่าหยุดกี่วัน $Leave_number
echo "<script>alert('คุณได้ใช้สิทธิการลารายการนี้หมดแล้ว กรุณาเลือกใช้สิทธิการลาประเภทอื่น ค่ะ');history.back();</script>";
}else{
$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,Quota_id,Leave_date,Leave_date1,Leave_number,Leave_reason,Leave_doc,Leave_tell,S_leader,S_manager,Leave_note,Emp_id,Leader_id,Manager_id,Status_id)
values('".$Leave_id."',
'$Quota_id','$Leave_date','$Leave_date1','".$Leave_number."','$Leave_reason','$Leave_doc','$Leave_tell','$S_leader','$S_manager','$Leave_note','$Emp_id','$Leader_id', '$Manager_id','$Status_id')";
$query = mysql_query($sql)or die("myasql error ('$sql')");
if ($query){
echo "<script language='javascript'>alert('บันทึกข้อมูลเรียบร้อยแล้ว')</script>";//Message box แจ้งเตือน
|
|
|
|
|
Date :
2016-04-05 12:46:54 |
By :
narutokarp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อ่าน code แล้วตาลายครับ รบกวนเอาใส่ tag php code หน่อย
|
|
|
|
|
Date :
2016-04-05 14:18:49 |
By :
apisitp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ไม่เคยเห็นการอ้างอิงแบบนี้ครับ
$num=$objResult['Quota_number']==0;
อันนี้ก็ไม่เคย
$num<$Leave_number;
if else อันอื่นก็เขียนได้นิ่ มันคืออะไร
มันเปรียบเทียบแค่นั้นได้จริงหรือเปล่า ลองหาคำตอบเองครับ
|
|
|
|
|
Date :
2016-04-05 14:21:32 |
By :
apisitp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 04
|