 |
พี่ ๆ ทุกคนระดมช่วยหนูทีค่ะ คิดไม่ออกแล้ว ผิดตรงไหนไม่รู้!!!!!!!!!!!!!!!! |
|
 |
|
|
 |
 |
|
ช่วยทีๆๆๆๆๆๆ ค่ะ
|
 |
 |
 |
 |
Date :
2010-03-04 12:54:13 |
By :
yingnoi |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ไม่รู้เหมือนกันแต่
$_POST[Lt10]and
มันติดกัน
น่าจะเปลี่ยนเป็น
Code (PHP)
echo $strSQL = "UPDATE EM_logtime SET Lt1 = '".$time_w_in."' , Lt2 = '".$time_w_out."', Lt5 = '".$_POST[lt5]."' where Lt10 = '".$_POST[Lt10]."' and Lt0 = '".$_POST[Lt0]."' ";
|
 |
 |
 |
 |
Date :
2010-03-04 13:06:42 |
By :
peterXP |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ตรง AND ควรให้มีช่องว่างนะครับ ถ้าพิมพ์ติดมัน มันจะมองเป็นตัวแปรเดียวกัน
|
 |
 |
 |
 |
Date :
2010-03-04 13:09:12 |
By :
deawx |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
echo $strSQL = "UPDATE EM_logtime SET Lt1 = '".$time_w_in."' , Lt2 = '".$time_w_out."', Lt5 = '".$_POST[lt5]."' where Lt10 = '".$_POST[Lt10]."' and Lt0 = '".$_POST[Lt0]."' ";
แก้ตามพี่ที่บอกแล้ว ค่าก็ยังเป็นช่องว่างอยู่ค่ะ ตัวแปรที่ update ไปไม่เข้าเลย แงๆๆๆๆๆๆๆๆๆๆๆ
|
 |
 |
 |
 |
Date :
2010-03-04 13:35:16 |
By :
yingnoi |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ลอง echo sql command ออกมาดูก่อนว่าทำไมถึงเป็น null ยังไม่ต้อง update
|
 |
 |
 |
 |
Date :
2010-03-04 13:38:52 |
By :
tungman |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เจ้ากรรมลืมดู
Code (PHP)
$time_w_in = "$_POST[datefixed] $_POST[time_in]";
$time_w_out = "$_POST[datefixed] $_POST[time_out]";
จะต่อ string เหรอ
ถ้าจะต่อต้องแบบนี้ครับ
Code (PHP)
$time_w_in = $_POST[datefixed]." ".$_POST[time_in];
$time_w_out = $_POST[datefixed]." ".$_POST[time_out];
ผมว่า น่าจะเป็นการเตรียมตัวแปร ก่อน update มีไรผิดสักอย่าง
ลอง
print_r($_POST);
ออกมาดู
|
 |
 |
 |
 |
Date :
2010-03-04 14:01:39 |
By :
peterXP |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ค่าจาก print_r($_POST);
จะได้เป็น
Array ( [datefixed] => 21/10/2009 [Lt0] => 6IT5167 [Branch] => EMSaha [Lt10] => 84363 [time_in] => 08:26:03 [time_out] => 18:00:00 [lt5] => 0 )
ตอนนี้ค่าแค่วันที่ และ เวลาไม่เข้าค่ะ ค่าของ $time_w_in และ $time_w_out
ค่า Lt1 และ Lt2 จะถูกกำหนดเป็น datetime นะคะ ไม่แน่ใจว่าต้องแปลงให้เป็นแบบ datetime ก่อนมั้ย
|
 |
 |
 |
 |
Date :
2010-03-04 14:10:53 |
By :
yingnoi |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
[size=10pt][/ลืมบอกไปค่ะว่า ค่า Lt1 และ Lt2 ที่ได้รับจากตัวแปร $time_w_in และ $time_w_out จะกำหนดเป็น datetime ค่ะsize]
|
 |
 |
 |
 |
Date :
2010-03-04 14:26:57 |
By :
yingnoi |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ทำไมไม่ใส่ ' ' ใส่ [] ด้วยล่ะครับ บางทีอาจมีปัญหาด้วยนะ ลอง echo sql ออกมาดูอีกที ถ้าใส่ '' แล้ว
|
 |
 |
 |
 |
Date :
2010-03-04 14:30:48 |
By :
pjgunner |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ตรงไหนเหรอคะพี่
ตอนนี้น้องลองเปลี่ยน
Code (PHP)
<?
$objConnect = mssql_connect(".","sa","") or die("Error Connect to Database");
$objDB = mssql_select_db("$_GET[Branch]");
$time_w_in = $_POST[datefixed]." ".$_POST[time_in];
$time_w_out = $_POST[datefixed]." ".$_POST[time_out];
$strSQL = "UPDATE EM_logtime SET ";
$strSQL .="Lt1 = '".$time_w_in."', ";
$strSQL .="Lt2 = '".$time_w_out."', ";
$strSQL .="Lt5 = '".$_POST["lt5"]."' ";
$strSQL .="WHERE Lt10 = '".$_POST["Lt10"]."' ";
$objQuery = mssql_query($strSQL);
mssql_close($objConnect);
?>
มันก็ยังเหมือนเดิมค่ะ ค่าวัน-เวลาไม่เก็บ
เพิ่มเติมค่ะ
ถ้าสมมุติในตารางเก็บ Lt1 เป็น 09/11/2009 08.00:00 และ Lt2 เป็น 09/11/2009 17.00:00
เวลาที่แก้ไข Lt1 เป็น 09/11/2009 07.30:00 ในตารางจะถูกเปลี่ยนเป็น 11/09/2009 07.30:00
ค่าวันกับเดือนจะเปลี่ยนไปเลย
และ..
ถ้าถ้า Lt1 เป็น 21/11/2009 08.00:00 และ Lt2 เป็น 21/11/2009 17.00:00 หรือ Lt2 เป็นค่าว่าง
เวลาแก้ไข Lt1 หรือ Lt2 ค่าจะว่างไม่มีการเปลี่ยนแปลงค่ะ หรือว่าเป็นเพราะ สลับวัน-เดือนเป็น 11/21/2009 ไม่ได้คะ
|
 |
 |
 |
 |
Date :
2010-03-04 14:32:44 |
By :
yingnoi |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ex. $_POST['abc'];
ฟีลชนิดไหน ก็ใส่ชนิดนั้นครับ 
|
 |
 |
 |
 |
Date :
2010-03-04 14:34:51 |
By :
pjgunner |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
และชนิด datetime ทำไงคะ รบกวนพี่เอี่ยวดูความคิดเห็นที่ 10 หน่อยสิคะ น้องอธิบายความน่าจะเป็นคะ
|
 |
 |
 |
 |
Date :
2010-03-04 14:43:41 |
By :
yingnoi |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ยังไงก็เอา sql ที่ได้จาก $strSQL มาดูครับ
ส่วน datetime ของ mssql ผมไม่รู้ว่า มันเก็บแบบไหน เหมือน mysql หรือป่าว
|
 |
 |
 |
 |
Date :
2010-03-04 14:47:56 |
By :
pjgunner |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ค่า echo ของ $strSQL จะได้ UPDATE EM_logtime SET Lt1 = '11/02/2009 07:28:25', Lt2 = '11/02/2009 17:02:35', Lt5 = '0' WHERE Lt10 = '86574' vpjk'ouhvjt8jt
|
 |
 |
 |
 |
Date :
2010-03-04 15:11:28 |
By :
yingnoi |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ถ้าข้อมูลมา หมด ทุกอย่าง แล้ว ไม่ลง
กำหนด Lt1 , Lt1 เป็น date time
ลอง กำหนด เป็น vachar ดู ก่อนไหม ถ้า มัน ลง
แปลว่า คง จัดลำดับ datetime ผิด แบบ เลย ไม่ลง DB ให้ ครับ
|
 |
 |
 |
 |
Date :
2010-03-04 18:14:30 |
By :
tmtcom |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
คับผมลิงเสอร์จดูแล้ว ฝรั่งเขาก็มีปัญหาเหมือนกัน ลองใช้ varchar หรือใช้ long เก็บเป็น timestamp เอาก็ได้หากว่าสามารถเปลี่ยนได้
|
 |
 |
 |
 |
Date :
2010-03-04 18:18:21 |
By :
pjgunner |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
จากกระทู้ที่ 15 ลองแก้ตามแล้ว มันขึ้น error ว่า
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\AppServ\www\Admin\ChangeTimeOfEmp.php on line 8
อ่ะค่ะ
ฟ้องตรง
$strSQL = "UPDATE EM_logtime SET Lt1 = CONVERT(datetime, '$time_w_in', 103), Lt2 = CONVERT(datetime, '$time_w_out', 103), Lt5 = '0' WHERE Lt10 = '$_POST['Lt10']'";
|
 |
 |
 |
 |
Date :
2010-03-05 09:10:24 |
By :
yingnoi |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (PHP)
$strSQL = "UPDATE EM_logtime SET Lt1 = '$time_w_in' , Lt2 = '$time_w_out', Lt5 = '$_POST[lt5]' where Lt10 = '$_POST[Lt10]' and Lt0 = '$_POST[Lt0]' ";
ควรใส่เครื่องหมาย ' ' ด้วยน่ะครับ เพราะถ้าไม่มีค่าขึ้นมา นี่ปัญหาใหญ่เลย
|
 |
 |
 |
 |
Date :
2010-03-05 09:14:34 |
By :
webmaster |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
พี่ ๆ คะแก้ได้แล้วตามความคิดเห็นที่ 15 ค่ะ ต้องแก้เป็นอย่างนี้ค่ะ
$strSQL = "UPDATE EM_logtime SET Lt1 = CONVERT(datetime, '$time_w_in', 103), Lt2 = CONVERT(datetime, '$time_w_out', 103), Lt5 = '$_GET[lt5]' WHERE Lt10 = '$_POST[Lt10]'";
ขอบพระคุณพี่ ๆทุกคนนะคะที่ช่วย
|
 |
 |
 |
 |
Date :
2010-03-05 09:18:22 |
By :
yingnoi |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|