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,027

HOME > PHP > PHP Forum > ตรวจสอบ mysql เมื่อมีข้อมูลเข้ามาใหม่ ต้องทำยังไงครับ



 

ตรวจสอบ mysql เมื่อมีข้อมูลเข้ามาใหม่ ต้องทำยังไงครับ

 



Topic : 071168



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



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




ถ้าหากต้องการให้หน้า check.php มันคอยเช็ค field ID ใน table receive ทุก 3 วินาทีว่ามีข้อมูลเข้ามาใหม่ และถ้าหากมีข้อมูลมาใหม่ ให้ทำการ echo ค่าในฐานข้อมูล field name ออกมา และหลังจากที่ echo ค่าแล้วให้ทำการย้ายข้อมูลไปที่ table receiveOld แล้วทำการลบข้อมูลใน table receive ออกเพื่อรอรับค่าใหม่

ขั้นตอนที่ผมคิดน่าจะประมาณนี้
1 ตรวจสอบข้อมูลใน table receive
2 ทำการ echo ค่าในฐานข้อมูล field name
3 ย้ายข้อมูลไปที่ table receiveOld
4 ลบข้อมูลใน table receive ออก
5 รอรับค่าใหม่

receive

ต้องทำยังไงครับ รบกวนด้วยครับ



Tag : PHP, MySQL







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2011-12-31 04:30:24 By : karurub View : 2899 Reply : 9
 

 

No. 1

Guest


ถ้าอย่างที่ต้องการน่ะ ต้องทำหลาย query เลยนะ
ขอถามหน่อย ทำไมต้องทำอย่างนั้นน่ะ เพราะจำเป็นต้องทำการ query หลายขั้นตอนขนาดนั้นเลยเหรอ
ถ้าต้องการตรวจสอบค่าอย่าง ใช้วิธีสร้างฟิลด์ขึ้นมาเช็คไม่ได้เหรอ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-12-31 10:06:12 By : บังเอิญผ่านมาเห็น
 


 

No. 2



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



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


มันเป็นขั้นตอนที่คิดไว้อ่ะครับ เพื่อที่จะได้ทำการตรวจสอบขั้นตอนต่อไปได้
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-12-31 15:03:13 By : karurub
 

 

No. 3

Guest


ถ้าต้องการแบบนั้น คุณก็ต้องทำการ query หลายครั้งน่ะ
แล้วก็นี่ลองเข้าไปดูนะ https://www.thaicreate.com/php/php-sql-syntax.html
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-12-31 17:32:21 By : บังเอิญผ่านมาเห็น
 


 

No. 4



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



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


ขอบคุณครับ แต่ก็เริ่มไม่ถูก คือว่าผมลองทำทีละ query มันสามารถทำได้ แต่ผมไม่รู้จะทำยังไงให้มันมารวมกันได้ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-12-31 17:40:30 By : karurub
 


 

No. 5



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



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


ไม่ยากอย่างที่คิดนะครับ เพราะขั้นตอนที่โจทย์ให้มานั้นไม่เยอะเลย
เนื่องจากโจทย์ต้องการตรวจสอบข้อมูลทุกๆ 3 วินาที เพราะฉะนั้นเทคโนโลยีที่จะนำมาใช้ร่วมก็ควรจะเป็นการทำงานฝั่ง Client ซึ่งก็คือ การใช้ javascript เข้ามาช่วย run script ทุกๆ 3 วินาที (แล้วแต่จะกำหนดครับ)

โดยการเขียน javascript นั้นเพียงเป็นการให้มันทำงานตามเวลาที่กำหนด แล้วใช้ javascript เรียกไฟล์ php
สำหรับไฟล์ php นั้นสามารถเขียนกระบวนงานได้หลายแบบครับ ขึ้นอยู่กับทักษะของแต่ละคนครับ ยกตัวอย่างเช่น

การเขียนแบบไฟล์เดียวจบ โดยมีขั้นตอนประมาณนี้ครับ

1 ตรวจสอบข้อมูลใน table receive ...... ตรงนี้ ขึ้นอยู่กับวิธีตรวจสอบครับ จากโจทย์ไม่ได้บอกไว้ว่าตรวจสอบยังไง เพราะฉะนั้นต้องเขียนวิธีตรวจสอบให้ครอบคลุมกับความต้องการด้วยครับ

2 หลังจากตรวจสอบแล้วก็เอาข้อมูลที่ได้มาใช้ if else เพื่อทำกระบวนงานต่อไป เช่น

Code (PHP)
	if ($NewData == false) {
		echo "No data update......";
	} else {
		echo "Some value....."
		// ขั้นนี้ก็จะเก็บข้อมูล record ที่ตรวจสอบแล้วเข้าไปเก็บไว้ในตัวแปร ซึ่งจะเก็บแบบใดก็ขึ้นอยู่กับของแต่ละคนครับ ข้อมูลที่เก็บตรงนี้จะเอาไปใช้ในคิวรี่ INSERT ข้างล่างนี้ ($sql1) และสิ่งที่ต้องเก็บข้อมูลเข้าตัวแปรที่สำคัญก็คือ id ของ record ที่เกิดขึ้นใหม่นี้เพื่อนำไปใช้ในคิวรี่ที่ 2 ($sql2) 
		$sql1 = "INSERT INTO receiveOld VALUES(fieldData1, fieldData2, fieldData3, fieldData4.....)";
		//....แล้วก็ excute คิวรี่ $sql1
		$sql2 = "DELETE FROM receive WHERE id=.......ตรงนี้คือ id ที่เก็บมาจากขั้นตอนก่อนหน้านี้....";	
		//....แล้วก็ excute คิวรี่ $sql2
	}


...................................................

จากขั้นตอนด้านบน จะมีไฟล์ที่เกี่ยวข้อง 2 ไฟล์คือไฟล์ php หลักที่มี javascript เพื่อใช้ฟังก์ชั่น time interval เพื่อเรียกไฟล์ php อีกไฟล์ขึ้นมาทำงาน โดยไฟล์ php ที่ 2 นี้จะเป็นขั้นตอนการตรวจสอบทั้งหมด (เพราะมันจะทำงานฝั่ง server)

เราสามารถเขียนคำสั่งเพื่อคิวรี่ฐานข้อมูลหลายๆคำสั่งต่อกันได้ครับ โดยคำนึงถึงการทำงานที่ conflict กันเองด้วย เพราะบางครั้งคิวรี่ก่อนหน้ายังทำงานไม่เสร็จอาจทำให้คิวรี่ถัดมาผิดพลาดได้ แต่ถ้าเป็นการ select ข้อมูลที่แยกตารางกันชัดเจนก็ไมน่าจะมีปัญหาครับ เพราะมันจะทำงานได้รวดเร็วมาก พื้นฐานการสร้างฐานข้อมูล และการทำ Normalization ควรจะแน่นหน่อยนะครับถ้าต้องทำงานกับฐานข้อมูลทีมีขนาดใหญ่ๆ

ผมให้คำแนะนำเพื่อเป็นแนวทางนะครับ ถ้าเขียนแล้วติดตรงไหนก็ลองโพสเข้ามาถามละกัน


ประวัติการแก้ไข
2011-12-31 21:03:06
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-12-31 21:02:12 By : Songkram
 


 

No. 6

Guest


ตอบความคิดเห็นที่ : 5 เขียนโดย : Songkram เมื่อวันที่ 2011-12-31 21:02:12
รายละเอียดของการตอบ ::
กด LIKE คุณ NOOM เลย

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-12-31 21:20:25 By : บังเอิญผ่านมาเห็น
 


 

No. 7



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



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


ขอบตุณมากครับ

ผมได้ทำแบบนี้ครับ
1 เปิดหน้าเวป ให้มันรีเฟรซตัวเองทุก 3 วินาที โดยไปกำหนดที่ หน้ามันเลย ซึ่งอันนี้สามารถทำได้แล้ว (ที่ให้มันรีเฟรซเพื่อไปตรวจสอบว่ามีข้อมูลมีที่ table receive หรือไม่ เนื่องจาก table นี้ต้องไม่มีข้อมูลถ้าหากมีข้อมูลเข้ามาก็จะเข้ากระบวนการถัดไป)
2 เมื่อมีข้อมูลก็จำทำการ echo "$name"

หลังจากนี้ไม่รู้จะทำไงต่อครับ เริ่ม งงๆ กับตัวเองแระ หุหุ

Code (PHP)
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="refresh" content="3">
<title>Untitled Document</title>
</head>
<?
	$host="localhost";
	$user="root";
	$pw="1234";
	$dbname="test";

	$link=mysql_connect("localhost",$user,$pw);
	mysql_select_db($dbname,$link);
	mysql_query("SET NAMES UTF8");
	
	$sql = ('select name from receive order by ID asc limit 1');
	$objquery=mysql_query($sql);
	$fetch=mysql_fetch_array($objquery);
	
	$Id=$fetch[ID];
	$Name=$fetch[name];
	echo "Id = $Id";
	echo "\n";
	echo "Name = $Name";
?>
<body>

</body>
</html>

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-01-01 02:35:23 By : karurub
 


 

No. 8



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



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


ตี 2 กว่าแล้วยังมาโพสได้นี่แสดงว่าไป count down ที่ไหนมาล่ะสิ......

การใช้งาน html refresh page แบบนี้ก็ไม่ผิดอะไรนะครับ แต่ถ้าจะให้ดีและมีความยืดหยุ่นในการตรวจสอบมากขึ้น ผมว่าน่าจะใช้ javascript ดีกว่าครับ ยิ่งตอนนี้กระแส Ajax มีเข้ามามากด้วย ลองเข้าไปดูบทความนี้ดูนะครับ

http://www.goragod.com/knowledge/%E0%B8%9A%E0%B8%97%E0%B8%97%E0%B8%B5%E0%B9%88%205%20Auto%20Refresh%20%E0%B9%80%E0%B8%AB%E0%B8%95%E0%B8%B8%E0%B8%9C%E0%B8%A5%E0%B8%AA%E0%B8%B3%E0%B8%84%E0%B8%B1%E0%B8%8D%E0%B9%83%E0%B8%99%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B9%80%E0%B8%A5%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B9%83%E0%B8%8A%E0%B9%89%20AJAX.html?q=refresh

หลักการก็คือให้ Javascript ไปเรียกหน้า php ที่มี code สำหรับกระบวนงานทั้งหมดครับ
จากโจทย์ของ จขกท คือเป็นการตรวจสอบตาราง receive ว่ามีข้อมูลหรือไม่ และถ้ามีก็ให้มันย้ายข้อมูลทั้งหมดไปที่อีกตาราง receiveOld แล้วก็ลบข้อมูลออกจาก receive ซึ่งหลักการนี้ก็น่าจะประมาณนี้ครับ

Code (PHP)
function RowID($tbl){
	$sql = "SELECT * FROM $tbl;" 
	$result = mysql_query($sql); 
	$RowCount = musql_num_rows($result);
	$receiveId = array();
	if ($RowCount<1) {
		$receiveId =null;	
	} else {		
		while ($rs = mysql_fetch_array($result)) {
			array_push($receiveId, $rs[ID]);
		}
	}	
	Return $receiveId;
}

function DelReceiveData($recId){
	foreach ($recId as $recordId) {
		$sqlDelData = "DELETE FROM $tbl WHERE ID='$recordId' ";
		$result = mysql_query($sqlDelData);
		$rs = mysql_fetch_array($result);
	}
	echo "ลบข้อมูลในตารางแล้ว....";
} 

function TransferDataTOreceiveOld(){
	$recId = array();
	$recId = RowID(receive);

	if (array_count_values($recId)<1) {
		echo "ยังไม่มีข้อมูลในตอนนี้....";
	} else {
		foreach ($recId as $recordId) {
		     $sql = "SELECT * FROM receive WHERE ID='$recordId' ;" 
		     $result = mysql_query($sql); 
		     while ($rs = mysql_fetch_array($result, MYSQL_NUM)) {
			$receive_ID = $rs[ID]; // ID ตัวนี้คือไอดีที่มาจาก receive แต่ที่ตาราง receiveOld จะต้องมีฟิลดิ์เพื่อรองรับไอดีตัวนี้หรือเปล่าขึ้นอยู่กับการนำไปใช้นะครับ ผมสมมติว่ามีฟิลดิ์ชื่อ receive_id ที่ตาราง receiveOld นะครับ
			$receive_name = $rs[name];
			$receive_lastname = $rs[lastname];
			$receive_job = $rs[job];
			$sqlInsert = "INSERT INTO receiveOld(receive_id, name, lastname, job) VALUES('$receive_id', '$receive_name', '$receive_lastname', '$receive_job')";
			$ExeCuteSQL = mysql_query($sqlInsert);			
		     }
		DelReceiveData($recId);
								
	}
}

TransferDataTOreceiveOld();


ผมเขียนขึ้นมาแบบไม่ได้ทำการ run code จริงๆนะครับ เพราะฉะนั้นอาจจะมีข้อผิดพลาดบ้าง ....
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-01-01 11:17:50 By : Songkram
 


 

No. 9



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



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


ขอบคุณครับ ถ้าติดอะไรขอโพสถามอีกทีนะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-01-01 18:18:17 By : karurub
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ตรวจสอบ mysql เมื่อมีข้อมูลเข้ามาใหม่ ต้องทำยังไงครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ 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 04
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 อัตราราคา คลิกที่นี่