PHP Ionic Angular Phonegap AJAX Javascript CSS MySQL jQuery Forum


คำนวนเวลา TimeDiff

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา คำนวนเวลา TimeDiff

คำนวนเวลา TimeDiff
รบกวนผู้รู้ ช่วยดูโค้ต หน่อยครับ บันทึกไม่ได้ครับ  Parse error: syntax error, unexpected 'NOW' (T_STRING)

$strSQL = "INSERT INTO time_job (StudentID,date,Time,time1) VALUES ('".$_POST["txtStudentID"]."',(NOW(),
        DATE_ADD(NOW(),INTERVAL 12 HOUR) ,TimeDiff("NOW(),INTERVAL 12 HOUR","08:00")



สิ่งที่ต้อง การคึอ คำนวนเวลาเป็นนาที ระหว่างเวลาที่กำหนดคือ 08.00 กับเวลาที่บันทึกข้อมูล(ตามเวลาในประเทศไทย)  เเละหากไม่เป็นการรบกวน คือ
ถ้าบันทึกครึ่งชัวโมงก่อน 08.00 ให้บันทึกเป็น +30  เเละถ้าบันทึก15นาทีหลัง 08.00 ให้บันทึกเป็น -15

ขอบพระคุณอย่างสูง


 


โดย:  Azhary Pk IP: 110.78.175.xxx วันที่: 13-07-2016 เวลา: 17:35:54

คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ


  • ( หรือ สามารถทำการ สมัครสมาชิก และล็อกอิน ด้วย ปุ่ม Log in with Facebook ด้านล่าง )
 ความคิดเห็นที่ 1
คำสั่ง NOW() , INTERVAL , DATE_ADD()  เป็นคำสั่งของ SQL ใช้ได้คำสั่ง query เช่น 
 
mysqli_query("ใส่ในนี้ได้")
แต่ถ้าใช้ในตัวแปร string ให้ใช้คำสั่งของ PHP ด้วยคำสั่ง 
date("Y-m-d H:i:s") //แทน NOW()
 
ส่วนคำถามที่สอง ไม่ค่อยเข้าใจ คิดว่าน่าจะใช้เงื่อนไข if else กำหนดค่าธรรมดา
ลองหาข้อมูลเพิ่มเติมดู


โดย:  Ninenik IP: 122.155.42.xxx วันที่: 13-07-2016
 ความคิดเห็นที่ 2
รบกวนอีกนิดครับ
คือผมต้องการบันทึกข้อมูล วันที่(date) เวลามา(Time) เเละเวลามาก่อนเวลาที่ตังไว้กี่นาที หรือมาสายจากเวลาที่ตังไว้กี่นาที(time1) บันทึกลงฐานข้อมูล sql(time_job) เเละนำมาเเสดงในตารางตามภาพ โดยที่ช่อง หมายเหตุ นำค่าจากคอลัมนในฐานข้อมูลชื่อ (time1)มาเเสดง โดยไม่ต้องคำนวนอะไร เพราะเราให้โปรเเกรมคำนวนก่อนบันทืก

$strSQL = "INSERT INTO time_job (StudentID,date,Time,time1) VALUES ('".$_POST["txtStudentID"]."',(NOW(),
        DATE_ADD(NOW(),INTERVAL 12 HOUR) ,TimeDiff("NOW(),INTERVAL 12 HOUR","08:00")


จากโค้ต ตรง  timediff  ผมต้องการให้โปรเเกรมนำเวลาปัจจุบัน(เวลาที่บันทึกข้อมูล) ลบกับ เวลาที่กำหนดไว้ คือ 08.00  เเล้วบันทึกลงฐานข้อมูลsql
ขอบพระคุณอย่างสูง





โดย:  Azhary Pk IP: 110.78.175.xxx วันที่: 13-07-2016 เวลา: 21:33:01
 ความคิดเห็นที่ 3
ลองประยุกต์จากฟังก์ชั่น ในบทความนี้เป็นแนวทาง
สร้างฟังก์ชันลบเวลาด้วย php อย่างง่าย 


>>>  อัพเดท >>> 13-07-2016
------------------------------------------
การใช้งานก็ประมาณนี้
function diff2time($time_a,$time_b){  
    $now_time1=strtotime(date("Y-m-d ".$time_a));  
    $now_time2=strtotime(date("Y-m-d ".$time_b));  
    $time_diff=abs($now_time2-$now_time1);  
    $time_diff_h=floor($time_diff/3600); // จำนวนชั่วโมงที่ต่างกัน  
    $time_diff_m=floor(($time_diff%3600)/60); // จำวนวนนาทีที่ต่างกัน  
    $time_diff_s=($time_diff%3600)%60; // จำนวนวินาทีที่ต่างกัน  
    return $time_diff_h." ชั่วโมง ".$time_diff_m." นาที ".$time_diff_s." วินาที";  
}  
$timeDiff = diff2time("08:00:00",date("H:i:s"));  
$strSQL = "INSERT INTO time_job (StudentID,date,Time,time1) VALUES ('".$_POST["txtStudentID"]."','".date("Y-m-d")."' ,'".date("H:i:s")."','".$timeDiff."')";


โดย:  Ninenik IP: 122.155.42.xxx วันที่: 13-07-2016
 ความคิดเห็นที่ 4

ขอบพระคุณมากๆครับ คุณ  Ninenik
ผมทำได้เเล้วครับ ตามภาพประกอบ

ขอต่ออีกนิดครับ
คือ อยากให้เเตกต่าง ระหว่างก่อน 08:00 กับหลัง 08:00 โดยกำกับด้วยเครื่องหมาย + กับ -
เเละใช้ ฟอนต์ สีปรกติ กับ ฟอนต์สีเเดง โค้ตประมาณนี้ครับ

<td align="center">
    <?             
  if($objResult["Time"] <= "08:00:00")
{
   echo
+ $objResult["time1"];  ใช้ ฟอนต์ สีปรกติ
}
else
{
    echo
- $objResult["time1"];   ใช้ ฟอนต์สีเเดง
}
?>
 </td>

ขอบพระคุณอย่างสูง



โดย:  Azhary Pk IP: 110.78.175.xxx วันที่: 14-07-2016 เวลา: 08:16:25
 ความคิดเห็นที่ 5
เทียบเวลาลองใช้แบบนี้แทน
<?php
    $check_time1=strtotime(date("Y-m-d ".$objResult["Time"]));    
    $check_time2=strtotime(date("Y-m-d 08:00:00"));  
	if($check_time1<=$check_time2){
		
	}else{
		
	}
?>


โดย:  Ninenik IP: 180.183.13.xxx วันที่: 14-07-2016
 ความคิดเห็นที่ 6
รบกวนอีกหน่อยครับ

  <td align="center">
       <?php
    $check_time1=strtotime(date("Y-m-d ".$objResult["Time"]));    
    $check_time2=strtotime(date("Y-m-d 08:00:00"));  
    if($check_time1<=$check_time2){

         echo + $objResult["time1"];
    }else{
        echo - $objResult["time1"];

    }
?>  
       </td>


จากโค้ด มันเเสดงผลออกมาอย่างนี้ครับ

ทั้งๆที่ในฐานข้อมูล เป็นอย่างนี้


โดย:  Azhary Pk IP: 110.78.175.xxx วันที่: 14-07-2016 เวลา: 11:45:00
 ความคิดเห็นที่ 7


>>>  อัพเดท >>> 14-07-2016
------------------------------------------
ถ้าต่อ string ใน php จะใช้ 

echo "+ ".$objResult["time1"];


โดย:  Ninenik IP: 180.183.13.xxx วันที่: 14-07-2016
 ความคิดเห็นที่ 8


 

ทำได้เเล้วครับ ขอบพระคุณอีกครั้ง

 



โดย:  Azhary Pk IP: 110.78.175.xxx วันที่: 14-07-2016 เวลา: 15:34:34