Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > PHP > PHP Forum > สอบถามเรื่องอัตเดพค่าอัตโนมัติหน่อยครัฟว่าทำอย่างไร



 

สอบถามเรื่องอัตเดพค่าอัตโนมัติหน่อยครัฟว่าทำอย่างไร

 



Topic : 104801



โพสกระทู้ ( 0 )
บทความ ( 0 )



สถานะออฟไลน์




คือ สมมุติ วันนี้ 10/01/2014 วันครบกำหนด 12/01/2014 ให้อัพ ค่าอัตโนมัติ เช่น us_status ผมเป็นค่า 1 เเล้วครบกำหนดวันให้อัพ เป็น ค่า 2 ประมาณนี้ ต้องทำไง ช่วยเเนะนำหน่อยครัฟ

111



Tag : PHP, JavaScript, CakePHP







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2014-01-20 12:46:16 By : tee101klin View : 1129 Reply : 14
 

 

No. 1

Guest


ไม่แน่ใจว่า mysql มีการ รันjob หรือเปล่า

แต่ถ้าจะเอา ง่ายๆ
ก็ เขียน php มา เพื่อทำการ update data ตามที่ต้องการ
แล้ว ใช้ task scheduler ของ window มาเรียก file run php นั้นทุกๆ วัน(set trigger daily)
ส่วน action นั้น ก็ เรียก
path iexplore.exe ตามด้วย url
Ex. C:\Program Files (x86)\Internet Explorer\iexplore.exe http://www.xxxxxx.com/xxxx.php


ถ้าเป็น linux ตั้งที่ crontab คับ คงประมาณนี้ คับ (ไม่ได้ใช้นานแล้ว)
พิมพ์ crontab -e

แล้ว add

50 1 * * * lynx -dump http://www.xxxxxx.com/xxxx.php

มัน จะรัน ทุกๆวันตอน ตีหนึ่ง 50 นาที

ผิดพลาดยังไง ขออภัยด้วยนะคับ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-01-20 14:42:21 By : gumix
 


 

No. 2



โพสกระทู้ ( 0 )
บทความ ( 0 )



สถานะออฟไลน์


ขอบคุณมากครัฟ จะลองไปศึกษาข้อมูลดู เเต่ถ้ามีตัวอย่าง จะดีมากเลยครัฟ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-01-20 18:26:07 By : tee101klin
 

 

No. 3



โพสกระทู้ ( 738 )
บทความ ( 0 )



สถานะออฟไลน์


หรือไม่ก็ลองแบบนี้ครับ ฟิล us_enddate คือกำหนดวันครบกำหนดหรือเปล่าครับ ถ้าผมเข้าใจถูก

ให้ select ฟิล us_enddate ออกมาครับพอ select ออกมาแล้วก็นำตัวแปร us_enddate มาใส่แบบนี้ครับ

Code (PHP)
     $exp_date = $row['us_enddate']; //ประกาศตัวแปร us_enddate ตรงนี้ครับ
     $d = explode("/",$exp_date);
     $timestamp = mktime(00, 00, 00, $d[1], $d[0], $d[2]);

    if($timestamp<=time()) {

    //ในส่วนนี้เขียน mysql update ฟิล us_status จาก 1 เป็น 2 ครับ

    }


ส่วนโค้ดนี้ก็นำไปวางไว้หน้าไหนก็ได้ครับที่ต้องการให้มัน Action ครับ

และควรจะอยู่เหนือระบบที่คุณ select us_status ออกมาใช้งานครับ


ประวัติการแก้ไข
2014-01-21 00:00:39
2014-01-21 00:17:08
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-01-21 00:00:27 By : tomrambo
 


 

No. 4



โพสกระทู้ ( 0 )
บทความ ( 0 )



สถานะออฟไลน์


ขอบคุณมากเลยครัฟ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-01-21 04:07:19 By : tee101klin
 


 

No. 5



โพสกระทู้ ( 0 )
บทความ ( 0 )



สถานะออฟไลน์


เราต้องใส่ไว้ประมาณหน้าไหนครัฟ SELECT หรือ UPDATE
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-01-22 00:52:18 By : tee101klin
 


 

No. 6



โพสกระทู้ ( 738 )
บทความ ( 0 )



สถานะออฟไลน์


คุณกำลังทำระบบอะไรบอกผมได้มั๊ยครับ ผมจะได้แนะนำถูกว่าควรจะไปไว้หน้าไหน

แต่จริงๆ ควรจะไว้หน้าเดียวกับที่คุณ SELECT us_status ออกมาใช้งานน่ะคับ และควรไว้ข้างบน คำสั่ง SELECT
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-01-22 01:27:53 By : tomrambo
 


 

No. 7



โพสกระทู้ ( 0 )
บทความ ( 0 )



สถานะออฟไลน์


ผมทำระบบฝากของ ครัฟ
5555

ประมาณนี้
สถานะ 1 คือ อยู่ระหว่างฝาก
สถานะ 2 คือ ซื้อคืนแล้ว
สถานะ 3 คือ หลุดฝาก

หน้านี้ ผม ก็ SELECT ข้อมูลมาดู ประมาณนี้ เพราะ มี 3 ตารางมาจอยกัน

$sql_select = "SELECT*FROM tb_asset
INNER JOIN tb_assetprice ON tb_assetprice.us_id = tb_asset.us_id
INNER JOIN tb_customer ON tb_customer.us_id = tb_asset.us_id " ;
}

$serault = mysql_query($sql_select) or die(mysql_error());


นี้ชื่อ ตาราง tb_assetprice ส่วนที่ต้องการให้ อัพเดท us_status
6666


ประวัติการแก้ไข
2014-01-22 08:31:29
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-01-22 08:29:51 By : tee101klin
 


 

No. 8

Guest


เขียน code php ขึ้นมา file นึง
code php ก็ให้มัน

update us_status = 2 from tb_assetprice where CURDATE() > DATE(STR_TO_DATE(us_enddate, '%d/%m/%Y'))

/** mysql ผม ไม่ค่อยถนัดนะคับ แต่น่าจะประมาณนี้ **/
code php ส่วนนี้ ก้อจะ เอาวันที่ ปัจจุบัน มาเทียบ กับ us_enddate ถ้า วันที่ปัจจุบัน มากกว่า ก็จะ update us_status =2

สมมุติว่า ให้ file php นี้ ชื่อ update_us_status.php
เราก้อจะได้ file php ที่ update us status แล้ว

หลังจากนั้น จะต้อง run page นี้ ทุกๆวัน
เนื่องจาก mysql ไม่มี job ให้มันรัน ทุกๆ วันเองได้ จึง ต้อง อาศัย

task scheduler ของ window (ถ้า server เป็น window)
หรือ
crontab ของ linux (ถ้า server เป็น linux)
มาช่วย ตั้งให้มัน เข้าไป run page php นั้น อัตโนมัติ เอง ทุกๆ วัน

ในกรณี server window
ให้ create task schedule แบบ daily (มันจะ run ทุกๆ วัน ตามเวลาที่กำหนด)
แล้ว สั่ง action ให้มัน
ไปเรียก path iexplore.exe ตามด้วย url
ตัวอย่าง C:\Program Files (x86)\Internet Explorer\iexplore.exe http://localhost/update_us_status.php



ในกรณี server linux ตั้งที่ crontab คับ คงประมาณนี้ คับ (ไม่ได้ใช้นานแล้ว)
พิมพ์ crontab -e

แล้ว add

50 1 * * * lynx -dump http://localhost/update_us_status.php

มัน จะรัน ทุกๆวันตอน ตีหนึ่ง 50 นาที

อธิบาย คร่าวๆ ของ crontab ของ linux
คือ ตามปกติ จะมี * อยู่ 5 ตัว ข้างหน้าง command ที่เราจะให้ run
* * * * *
ซึ่งตัว * แต่ละหลักมีความหมายตามนี้

* ตัวที่ 1 คือ นาที ( 0-59 )
* ตัวที่ 2 คือ ชั่วโมง ( 0-23 )
* ตัวที่ 3 คือ วันในรอบเดือน ( 1-31 )
* ตัวที่ 4 คือ เดือน (1-12)
* ตัวที่ 5 คือ วันในสัปดาห์ (0-6 วันอาทิตย์=0 )

ถ้าจะให้ run ทุกๆ วัน ก็ ใส่ แค่ เวลาที่จะให้ รัน เช่น รัน ตี1 50 นาที
50 1 * * * ตามด้วย command

ปล อ้างอิง cron มาจาก
http://blogs.pukprasit.net/blog1.php/crontab-task-scheduling-on-unix-linux
และ
http://www.clusterkit.co.th/techblog/content_view.php?blog_id=00026


ดังนั้น แค่นี้ ก็น่าจะได้ตามที่ต้องการแล้วนะครับ

ปล. ผมไม่ค่อยถนัด mysql กับ linux สักเท่าไหร่ ผิดผลาดยังไงขออภัยด้วยครับ
ปล2. อย่างที่บอกไว้ ตอน comment 1 นะคับ ว่า ไม่แน่ใจว่า mysql มีการ รันjob หรือเปล่า
ถ้า มี job เหมือน mssql ให้ใช้ job run command update ได้เลยครับ


ผิดพลาดยังไง ขออภัยด้วยครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-01-22 11:08:57 By : gumix
 


 

No. 9



โพสกระทู้ ( 738 )
บทความ ( 0 )



สถานะออฟไลน์


ก็แบบนี้ครับ ผมเขียนมาให้ครบเลยนำไปใส่ไว้หน้าที่คุณ Select ข้อมูลออกมาโชว์ได้เลย และไว้ข้างบนคำสั่ง Select ข้อมูลที่โชว์นะครับ

Code (PHP)
$sql_query_1 = mysql_query("SELECT us_id,us_enddate FROM tb_assetprice") or die(mysql_error());
while($update_status=mysql_fetch_array($sql_query_1)){
$d = explode("/",$update_status['us_enddate']);
$timestamp_enddate = mktime(00, 00, 00, $d[1], $d[0], $d[2]);
if($timestamp_enddate<=time()){
mysql_query("UPDATE tb_assetprice SET us_status='3' WHERE us_id='".$update_status['us_id']."'") or die(mysql_error());
}
}


ปล. ไม่จำเป็นต้องรันหน้านี้ทุกวัน ลองนึกตามผมนะครับ โค้ดนี้จะทำงานก็ต่อเมื่อมีการรันเผจที่มีโค้ดนี้ฝังอยู่

ยกตัวอย่างเช่น:

นายเอ ฝากของไว้ ซึ่งวันครบกำหนดมาไถ่คืนสมมุติเป็น 25/01/2014 ปรากฎว่าตั้งแต่วันที่ 23/01/2014 จนถึงวันที่ 27/01/2014
ยังไม่มีการเปิดหน้าที่โชว์ข้อมูลรายการการฝากของ โค้ดก็จะยังไม่ทำงานถูกมั๊ยครับ us_status ก็จะยังคงเป็นค่า 1 อยู่ ซึ่งมันอยู่ในฐานข้อมูลซึ่งไม่มีใครเปิดเข้าไปดูและไม่มีใครรู้หรอก ปรากฎว่าวันที่ 27/01/2014 มีการเปิดเข้ามาดูข้อมูลรายการฝากของเป็นครั้งแรก โค้ดจึงมีการทำงานและอัพเดทข้อมูลให้เรียบร้อย ก่อนที่จะทำการ Select ข้อมูลออกมาโชว์แสดงในหน้าเผจ และหน้าเผจก็แสดง us_status เป็นข้อมูลใหม่แล้ว นั่นก็คือ 3 คือ หลุดฝาก เหตุผลนี้ผมถึงบอกว่าให้นำโค้ดไปวางไว้ด้านบน โค้ด SELECT แสดงรายการฝาก เพราะต้องการให้่มัน processing ตรวจหารายการที่ครบกำหนดและเลยกำหนด และทำการอัพเดทข้อมูลก่อน ก่อนที่จะแสดงรายการฝาก และนี่ก็คือเหตุผลที่ไม่จำเป็นต้องเปิดหน้านี้ทุกวัน จะเปิดเวลาไหน เลยไป 1 อาทิตย์ ระบบก็ทำงานไม่ผิดพลาดและคลาดเคลื่อน.... ลองดูนะครับได้ไม่ได้ยังไง แจ้งด้วยครับ ผมจะได้หาวิธีช่วยต่อไป....


ประวัติการแก้ไข
2014-01-22 19:47:37
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-01-22 19:42:15 By : tomrambo
 


 

No. 10



โพสกระทู้ ( 0 )
บทความ ( 0 )



สถานะออฟไลน์


ให้ วางไว้ ก่อนโค้ด SELECT ข้อมูลมาโชว์
<?php
@session_start();
@ob_start();

include("../ldb/Utility.php");
connect_db();
check_login("username", "loginadmin.php");
$sess_user = $_SESSION["username"];



//// อัตเดพค่าอัตโนมัติ
$sql_query_1 = mysql_query("SELECT us_id,us_enddate FROM tb_assetprice") or die(mysql_error());
while($update_status=mysql_fetch_array($sql_query_1)){
$d = explode("/",$update_status['us_enddate']);
$timestamp_enddate = mktime(00, 00, 00, $d[1], $d[0], $d[2]);
if($timestamp_enddate<=time()){
mysql_query("UPDATE tb_assetprice SET us_status='3' WHERE us_id='".$update_status['us_id']."'") or die(mysql_error());
}
}

///ค้นหา
$tea_sub = $_POST['sh_sub']; //สถานะ
$tea_subt = $_POST['sh_subt']; //ชื่อ-สกุล
$tea_subt1 = $_POST['sh_subt1']; //เลขที่สัญญา
$tea_subt2 = $_POST['sh_subt2']; //เลขประจำตัวประชาชน
$tea_subt3 = $_POST['sh_subt3']; //ประเภทสินทรัพย์


$key_world = $_REQUEST["keyworld"];
if(isset($key_world)){



$sql_select = "SELECT*FROM tb_asset
INNER JOIN tb_assetprice ON tb_assetprice.us_id = tb_asset.us_id
INNER JOIN tb_customer ON tb_customer.us_id = tb_asset.us_id
WHERE us_status = '".$tea_sub."' OR us_name = '".$tea_subt."' OR customer_id = '".$tea_subt1."' OR us_number = '".$tea_subt2."' OR us_category = '".$tea_subt3."' " ; //ค้นหา แบบ key_world



}else{



//จอยตารางมาโชว์
$sql_select = "SELECT*FROM tb_asset
INNER JOIN tb_assetprice ON tb_assetprice.us_id = tb_asset.us_id
INNER JOIN tb_customer ON tb_customer.us_id = tb_asset.us_id " ;
}

$serault = mysql_query($sql_select) or die(mysql_error());
$row = mysql_fetch_array($resault);
$coun_ = mysql_num_rows($serault);

?>

ประมาณนี้ ใช่หรือ เปล่า ครัฟ

หรือ ต้อง สร้างฟ้าย มาฟ้ายหนึงก่อนเหมือน ตอนเเรกที่ ว่า ครัฟ


ประวัติการแก้ไข
2014-01-22 22:15:23
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-01-22 22:10:19 By : tee101klin
 


 

No. 11



โพสกระทู้ ( 738 )
บทความ ( 0 )



สถานะออฟไลน์


ถูกครับ แบบนี้ถูกต้องแล้วครับ ลองรันดูหรือยังครับ ว่ามันทำงานหรือป่าว
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-01-22 22:19:59 By : tomrambo
 


 

No. 12



โพสกระทู้ ( 0 )
บทความ ( 0 )



สถานะออฟไลน์


ขอบคุณมากเลยครัฟ อัพเดท ให้เเล้ว
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-01-22 22:32:30 By : tee101klin
 


 

No. 13



โพสกระทู้ ( 738 )
บทความ ( 0 )



สถานะออฟไลน์


ดีใจด้วยคับ

เพื่อการ Processing ที่เร็วขึ้น ผมปรับปรุงโค้ดให้นิดหน่อยครับ ตามโค้ด้านล่างเลยคับ

Code (PHP)
$sql_query_1 = mysql_query("SELECT us_id,us_enddate FROM tb_assetprice WHERE us_status='1'") or die(mysql_error());
while($update_status=mysql_fetch_array($sql_query_1)){
$d = explode("/",$update_status['us_enddate']);
$timestamp_enddate = mktime(00, 00, 00, $d[1], $d[0], $d[2]);
if($timestamp_enddate<=time()){
mysql_query("UPDATE tb_assetprice SET us_status='3' WHERE us_id='".$update_status['us_id']."'") or die(mysql_error());
}
}

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-01-22 22:49:52 By : tomrambo
 


 

No. 14



โพสกระทู้ ( 0 )
บทความ ( 0 )



สถานะออฟไลน์


ขอบคุณมากๆๆ เลย ครัฟ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-01-23 02:11:30 By : tee101klin
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : สอบถามเรื่องอัตเดพค่าอัตโนมัติหน่อยครัฟว่าทำอย่างไร
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 05
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่