|
|
|
ช่วยเขียน PHP ลงเวลาเข้าออกงานให้หน่อยครับ ติดแค่ เข้า และออกงาน เท่านั้นครับ |
|
|
|
|
|
|
|
นำโค๊ดที่คุณเขียนมาวาง ติดปัญหาตรงไหน เดี๋ยวมีคนช่วยเยอะเยาะครับ
|
|
|
|
|
Date :
2013-09-27 09:30:34 |
By :
Ex-[S]i[L]e[N]t |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
จัดมา
|
|
|
|
|
Date :
2013-09-27 10:10:59 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ในบานข้อมูลจะมีข้อมูลและฟินดังนี้
แนวคิดที่ผมทำไว้ (แต่ไม่สำเร็จ)
Code (PHP)
$strSQL = "SELECT * FROM tb_time_work";
$objQuery = mysql_query($strSQL);
$objResult = mysql_fetch_array($objQuery);
if(เงื่อนไขในการตรวจสอบว่ามี user พนักงานคนนั้นเคยลงชื่อในวันนั้นๆหรือยัง)
{
//ถ้าเคยลงชื่อเข้างานแล้วให้ทำตรงนี้
}
else
{
//ถ้ายังเคยลงชื่อเข้างานในวันนั้นๆให้ทำตรงนี้
echo //แสดงบอกพนักงานว่าได้ลงเวลาเข้างานแล้ว
}
โค๊ตที่ผมใช้งานในตอนนี้ (แต่ใช้งานไม่ได้) มันสามารถ login ซ้ำได้ในวันเวลาเดี่ยวกัน
Code (PHP)
if(!empty($_POST['Submit'])){
$hid_ttw_id = $_POST['ttw_id'] ;
$ttw_id1 = $_POST['ttw_id'] ;
$ttw_date1 = date('Y-m-d') ;
$ttw_time1 = date('H:i') ;
$ttw_type1 = $_POST['ttw_type'] ;
$ttw_subject1 = $_POST['ttw_subject'] ;
$ttw_remark1 = $_POST['ttw_remark'] ;
$mem_user1 = $_POST['mem_user'] ;
$ttw_device1=$_COOKIE["strName"];
$ttw_id1=GetID('ttw_id','tb_time_work',7);
$strSQL = "SELECT * FROM tb_time_work";
$objQuery = mysql_query($strSQL);
$objResult = mysql_fetch_array($objQuery);
if($ttw_date1 == $objResult["ttw_date"] && $mem_user1 == $objResult["mem_user"])
{
echo "พนักงาน ID $mem_user1 ได้ลงเวลาเข้างานแล้วในวันนี้";
}
else
{
$sqlStr = "insert into tb_time_work set ttw_id='" . $ttw_id1 . "',";
$sqlStr .= "ttw_date='" . $ttw_date1 . "',";
$sqlStr .= "ttw_time='" . $ttw_time1 . "',";
$sqlStr .= "ttw_ip='" . $_SERVER['REMOTE_ADDR'] . "',";
$sqlStr .= "ttw_remark='" . $ttw_remark1 . "',";
$sqlStr .= "ttw_bws='" . $bws . "',";
$sqlStr .= "ttw_type='Normal',";
$sqlStr .= "ttw_device='" . $ttw_device1 . "',";
$sqlStr .= "mem_user='" . $mem_user1 . "'";
mysql_query($sqlStr);
echo "บันทึกเวลาเข้างานของพนักงาน ID $mem_user1 เรียบร้อย";
}
ขอท่านผู้รู้ช่วนแนะนำด้วยครับ
หรือมีวิธีการอื่นก่อข้อความกรุณาด้วยครับ
|
|
|
|
|
Date :
2013-09-27 22:03:06 |
By :
benzbenz900 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมคิดว่าผมผิดตรงนี้ครับช่วยแก้ให้หน่อย
Code (PHP)
$strSQL = "SELECT * FROM tb_time_work";
$objQuery = mysql_query($strSQL);
$objResult = mysql_fetch_array($objQuery);
if($ttw_date1 == $objResult["ttw_date"] && $mem_user1 == $objResult["mem_user"])
ตรงดึงฐานข้อมูลมาตรวจสอบนี้แหละครับที่ผมผิด
ช่วยแนะนำการแก้ไขให้ด้วยนะครับ
|
|
|
|
|
Date :
2013-09-27 22:08:35 |
By :
benzbenz900 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ไม่ลองใช้ max , min เอาค่าเวลาของแต่ละวันมาแสดงเอาครับ
ค่า max คือเวลาออก ค่า min คือเวลาเข้า ประมาณนี้
|
|
|
|
|
Date :
2013-09-27 22:17:06 |
By :
compiak |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ทำได้แล้วครับ
หลักการคือใช้ตาราง tb_user เก็บเวลาที่ user นั้นๆได้เข้าระบบไว้ แจากนั้นก็เอามาตรวจสอบ
โดยใช้คำสั่ง if ซ้อน if
if แรก ตรวจสอบว่า เวลา login ไม่เท่ากับ เวลาปัจจุบันหรือป่าว และ ชื่อผู้ใช้งาน เท่ากับชื่อผู้ใช้งานที่ส่งมาจาก post หรือป่าว
ถ้าใช้ ก็ไป if ที่ 2 ต่อ ถ้าไม่ใช้ แสดงคำว่าเคยลงชื่อเข้างานในวันนั้นๆแล้ว
if ที่ 2 ตรวจสอบว่า วันที่ ปัจจุบันมากกว่าวันที่ login ครั้งสุดท้ายหรือไม่
ถ้ามากกว่า ให้ทำการ เพิ่มข้อมูลการลงเวลาเข้าใช้งาน
แต่ถ้าไม่ใช้ ให้ แสดงข้อความว่า ไม่สามารถ login ย้อมหลังได้
Code (PHP)
<?
if($last33['date_login'] != $ttw_date1 && $last33['mem_user'] == $mem_user1)
{
if($last33['date_login'] <= $ttw_date1)
{
//บันทึกเวลาแล้ว
}
else
{
//ไม่สามารถลงชื่อย้อนหลังได้
}
}
else
{
//วันนี้คุณได้ลงชื่อเข้างานแล้ว
}
?>
ผมอาจจะผิดน้อยไปหน่อยนะครับ
|
|
|
|
|
Date :
2013-09-28 04:40:16 |
By :
benzbenz900 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อยากได้แบบลงเวลามั้งครับ
|
|
|
|
|
Date :
2014-11-03 19:56:58 |
By :
ืnpcomputer |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 05
|