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 > สอบถามเรื่องการนำ Primary Key ไป เพิ่มเป็นForeign Key ในอีกตาราง



 

สอบถามเรื่องการนำ Primary Key ไป เพิ่มเป็นForeign Key ในอีกตาราง

 



Topic : 136687



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



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




cc
ที่ทำได้ตอนนี้คือ
1.อัพโหลด csv ลง table detail_layout
2.Group ข้อมูลที่เหมือนกันที่อัพโหลด CSV ไป insert table receive_production
ถ้าผมต้องการที่จะนำ id ของตาราง receive_production ไปเพิ่มเป็น FK ของในตาราง detail_layout เพื่อให้ทราบ record นี้เป็นข้อมูลของreceive_production
ต้องเขียนเงื่อนไขยังไงครับ
Code (PHP) หน้า insert
if (!empty($_POST['summit'])) {
	//ทำการเปิดไฟล์ CSV เพื่อนำข้อมูลไปใส่ใน MySQL
	$path = "upload/";
	$target_file = $path . basename($_FILES["fileToUpload"]["name"]); //อ่านชื่อไฟล์
	$imageFileType = pathinfo($target_file, PATHINFO_EXTENSION); //หานามสกุลไฟล์ โดยแบ่งออกเป็น 3 อาเรย์ 1 dirname = path , basename =name+type file
	$upload_insert = 1;
	$date_data = $_POST['date_data'];
	$date_time =  date("Y-m-d H:i:s");
	if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $path . $_FILES["fileToUpload"]["name"])) {

		$objCSV = fopen($path . $_FILES["fileToUpload"]["name"], "r");
		$i = 0;

		while (($objArr = fgetcsv($objCSV, 1000, ",")) !== FALSE) {
			$i++;
			if ($i > 1) {

				//$objArr[0] = ประเภทไม้
				//$objArr[1] = คลังจัดเก็บ
				//$objArr[2] = ล็อค
				//$objArr[3] = แถว
				//$objArr[4] = ชั้น
				//$objArr[5] = เกรด
				//$objArr[6] = ว/ด/ป ที่ผลิต
				//$objArr[7] = จำนวน
				//$objArr[10] = สต็อกจัดเก็บ
				//$objArr[11] = รหัสสินค้า
				//$objArr[12] = ประเภทการรับ
				//$objArr[13] = วันที่รายงานความเคลื่อนไหว
				//$objArr[14] = ประเภทการปิดผิว 
				//$objArr[15] = การจองไม้

				$check_stock = getlist("SELECT stock_id FROM type_stock WHERE stock_name='" . $objArr[10] . "'"); //เช็คสต้อคจัดเก็บ
				$check_wh = getlist("SELECT id_w FROM type_warehouse WHERE detail_warehouse='" . $objArr[1] . "'"); // เช็คคลังจัดเก็บ
				$check_type = getlist("SELECT type_data_id FROM type_data WHERE type_data_name='" . $objArr[12] . "' AND type_data_referance='receive'"); // เช็คประเภทการรับ
				$check_pro = getlist("SELECT product_code FROM type_product WHERE product_name='" . $objArr[0] . "'"); // เช็คประเภทไม้
				$check_mfstock = getlist("SELECT fl_stock_id FROM type_fl_stock WHERE fl_stock_name='" . $objArr[14] . "'"); // เช็คประเภทไม้
				//$inid_product = getlist("SELECT rp.production_id as production_id  FROM detail_layout_test as dl INNER JOIN receive_production as rp ON dl.date_in = rp.date_in GROUP BY rp.item_number , rp.stock_id,rp.type_data_id");

				for ($q = 0; $q < sizeof($check_stock); $q++) {
					query("INSERT INTO detail_layout_test SET item_number='" . $objArr[11] . "',warehouse_true='" . $check_wh[$q]['id_w'] . "',lock_number='" . $objArr[2] . "',
				row_number='" . $objArr[3] . "', layer_number='" . $objArr[4] . "', grade='" . $objArr[5] . "', date_manufacture='" . $objArr[6] . "',
				quantity='" . $objArr[7] . "', stock_id='" . $check_stock[$q]['stock_id'] . "', referance='receive',date_in='" . $objArr[13] . "',note_layout='" . $objArr[9] . "', date_and_time='$date_time',
				user_save='" . $_SESSION["name"] . "',type_data_id='" . $check_type[$q]['type_data_id'] . "', type_item='" . $check_pro[$q]['product_code'] . "', mf_stock='" . $check_mfstock[$q]['fl_stock_id'] . "'");
				}
			}
		}
		$sum_data = getlist("SELECT SUM(quantity) as qty, item_number, warehouse_true,type_data_id,stock_id,grade,type_item,mf_stock,date_in FROM detail_layout_test GROUP BY item_number,stock_id,type_data_id,date_manufacture,date_in");
		for ($q = 0; $q < sizeof($sum_data); $q++) {
			query(" INSERT INTO receive_production SET type_data_id='" . $sum_data[$q]['type_data_id'] . "',stock_id='" . $sum_data[$q]['stock_id'] . "',warehouse_true='" . $sum_data[$q]['warehouse_true'] . "',
			type_item='" . $sum_data[$q]['type_item'] . "', grade='" . $sum_data[$q]['grade'] . "',	quantity='" . $sum_data[$q]['qty'] . "', item_number='" . $sum_data[$q]['item_number'] . "', referance='receive',
			date_in='" . $sum_data[$q]['date_in'] . "',crate_date_time='$date_time',user_refer='" . $_SESSION['name'] . "',lm_id='" . $sum_data[$q]['mf_stock'] . "'");
		}

		$message = "ลงข้อมูลเรียบร้อยแล้ว";
		fclose($objCSV);
		//print("<meta http-equiv='refresh' content='0; url= index.php?path=upload_data_pr '>");
	}


	print "<script type='text/javascript'>alert('$message');</script>";
}




Tag : PHP, MySQL, Apache, Appserv, XAMPP









ประวัติการแก้ไข
2022-05-09 13:31:30
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2022-05-09 12:48:49 By : benlovehi5 View : 880 Reply : 12
 

 
ถ้าสร้าง column ไว้รอแล้วก็เข้าลูป insert ธรรมดา ตามวิธีการนี้

Code (SQL)
-- table_b right of picture
-- table_a left of picture
-- type column of table_a
-- :btype = placeholder of prepare statement (or loop item), type column of table_b
INSERT INTO table_b (field) 
 VALUES (
     (SELECT id FROM table_a WHERE type = :btype)
 )


แต่ถ้ายัง ก็เพิ่มคอลัมน์ก่อนค่อย insert

Code (SQL)
ALTER TABLE table_b
ADD COLUMN column_name VARCHAR(15) AFTER column;
-- Then ADD INDEX, CONSTRAINT, FOREIGN KEY, etc.







แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-05-09 13:57:39 By : 009
 


 
อีกกรณี ถ้าแยกทำ (insert ไปก่อนแล้ว)
แทนที่จะ insert ก็เปลี่ยนเป็น update แทน
แต่ต้องสร้างคอลัมน์ไว้ตั้งแต่แรก
ส่วนเงื่อนไขการ update เหมือนกับ insert ใน rep แรก
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-05-09 18:50:20 By : 009
 

 

No. 3



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



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


ตอบความคิดเห็นที่ : 2 เขียนโดย : 009 เมื่อวันที่ 2022-05-09 18:50:20
รายละเอียดของการตอบ ::
ตอนนี้เพิ่ม ID Production ได้แล้วครับ ขอบคุณครับ

ถ้าผมต้องการเช็คข้อมูลซ้ำก่อน insert ลง DB ต้องใส่เงื่อนไขตรงไหนครับ


CODEINSERT (PHP)
if (!empty($_POST['summit'])) {
	//ทำการเปิดไฟล์ CSV เพื่อนำข้อมูลไปใส่ใน MySQL
	$path = "upload/";
	$target_file = $path . basename($_FILES["fileToUpload"]["name"]); //อ่านชื่อไฟล์
	$imageFileType = pathinfo($target_file, PATHINFO_EXTENSION); //หานามสกุลไฟล์ โดยแบ่งออกเป็น 3 อาเรย์ 1 dirname = path , basename =name+type file
	$upload_insert = 1;
	$date_data = $_POST['date_data'];
	$date_time =  date("Y-m-d H:i:s");
	if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $path . $_FILES["fileToUpload"]["name"])) {

		$objCSV = fopen($path . $_FILES["fileToUpload"]["name"], "r");
		$i = 0;

		while (($objArr = fgetcsv($objCSV, 1000, ",")) !== FALSE) {
			$i++;
			if ($i > 1) {

				//$objArr[0] = ประเภทไม้
				//$objArr[1] = คลังจัดเก็บ
				//$objArr[2] = ล็อค
				//$objArr[3] = แถว
				//$objArr[4] = ชั้น
				//$objArr[5] = เกรด
				//$objArr[6] = ว/ด/ป ที่ผลิต
				//$objArr[7] = จำนวน
				//$objArr[10] = สต็อกจัดเก็บ
				//$objArr[11] = รหัสสินค้า
				//$objArr[12] = ประเภทการรับ
				//$objArr[13] = วันที่รายงานความเคลื่อนไหว
				//$objArr[14] = ประเภทการปิดผิว LM
				//$objArr[15] = การจองไม้
				
				$check_stock = getlist("SELECT stock_id FROM type_stock WHERE stock_name='" . $objArr[10] . "'"); //เช็คสต้อคจัดเก็บ
				$check_wh = getlist("SELECT id_w FROM type_warehouse WHERE detail_warehouse='" . $objArr[1] . "'"); // เช็คคลังจัดเก็บ
				$check_type = getlist("SELECT type_data_id FROM type_data WHERE type_data_name='" . $objArr[12] . "' AND type_data_referance='receive'"); // เช็คประเภทการรับ
				$check_pro = getlist("SELECT product_code FROM type_product WHERE product_name='" . $objArr[0] . "'"); // เช็คประเภทไม้
				$check_mfstock = getlist("SELECT fl_stock_id FROM type_fl_stock WHERE fl_stock_name='" . $objArr[14] . "'"); // เช็คประเภทไม้	
				$check_data = getlist("SELECT * FROM detail_layout_test as dl INNER JOIN receive_production as rp ON dl.date_in = rp.date_in WHERE rp.date_in='2021-05-07' GROUP BY rp.item_number , rp.stock_id,rp.type_data_id");			
				

				for ($q = 0; $q < sizeof($check_stock); $q++) {	
					$check_proid = getlist("SELECT production_id FROM receive_production WHERE item_number='" . $objArr[11] . "'AND stock_id='" . $check_stock[$q]['stock_id'] . "' AND type_data_id='" . $check_type[$q]['type_data_id'] . "' AND warehouse_true='" . $check_wh[$q]['id_w'] . "'");		
					query("INSERT INTO detail_layout_test SET item_number='" . $objArr[11] . "',warehouse_true='" . $check_wh[$q]['id_w'] . "',lock_number='" . $objArr[2] . "',
				row_number='" . $objArr[3] . "', layer_number='" . $objArr[4] . "', grade='" . $objArr[5] . "', date_manufacture='" . $objArr[6] . "',
				quantity='" . $objArr[7] . "', stock_id='" . $check_stock[$q]['stock_id'] . "', referance='receive',date_in='" . $objArr[13] . "',note_layout='" . $objArr[9] . "', date_and_time='$date_time',
				user_save='" . $_SESSION["name"] . "',type_data_id='" . $check_type[$q]['type_data_id'] . "', type_item='" . $check_pro[$q]['product_code'] . "', mf_stock='" . $check_mfstock[$q]['fl_stock_id'] . "',production_id='" . $check_proid[$q]['production_id'] . "'");					
				}
				
			}
		}		
		$message = "ลงข้อมูลเรียบร้อยแล้ว";
		fclose($objCSV);
	//}//else
		//print("<meta http-equiv='refresh' content='0; url= index.php?path=upload_data_pr '>");
	}
	
	print "<script type='text/javascript'>alert('$message');</script>";
} //END IF EMPTY



ประวัติการแก้ไข
2022-05-10 14:40:47
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-05-10 14:29:15 By : benlovehi5
 


 
ลองใช้ where not exist หรือ ON DUPLICATE KEY ดูหรือยังครับ
https://stackoverflow.com/questions/46907462/checking-for-duplicates-before-insert-statement-in-sql
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-05-10 15:09:38 By : 009
 


 

No. 5



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



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


ตอบความคิดเห็นที่ : 4 เขียนโดย : 009 เมื่อวันที่ 2022-05-10 15:09:38
รายละเอียดของการตอบ ::
ยังไม่เคยใช้ครับ เดี๋ยวลองดูครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-05-10 15:35:03 By : benlovehi5
 


 

No. 6



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



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


ตอบความคิดเห็นที่ : 4 เขียนโดย : 009 เมื่อวันที่ 2022-05-10 15:09:38
รายละเอียดของการตอบ ::
อยากเช็ค ข้อมูลใน CSV กับ ตาราง detail_layout_test ครับว่าถ้ามีข้อมูลซ้ำ ก็ไม่ให้ insert

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-05-11 10:29:39 By : benlovehi5
 


 

No. 7



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



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


Code (PHP)
if (!empty($_POST['summit'])) {
	//ทำการเปิดไฟล์ CSV เพื่อนำข้อมูลไปใส่ใน MySQL

	$path = "upload/";
	$target_file = $path . basename($_FILES["fileToUpload"]["name"]); //อ่านชื่อไฟล์
	$imageFileType = pathinfo($target_file, PATHINFO_EXTENSION); //หานามสกุลไฟล์ โดยแบ่งออกเป็น 3 อาเรย์ 1 dirname = path , basename =name+type file
	$filename=basename($_FILES["fileToUpload"]["name"]);
	$upload_insert = 1;
	$date_data = $_POST['date_data'];
	$date_time =  date("Y-m-d H:i:s");
	if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $path . $_FILES["fileToUpload"]["name"])) {

		$objCSV = fopen($path . $_FILES["fileToUpload"]["name"], "r");
		$i = 0;
		while (($objArr = fgetcsv($objCSV, 1000, ",")) !== FALSE) {
			$i++;
			if ($i > 1) {

				//$objArr[1] = คลังจัดเก็บ
				//$objArr[2] = ล็อค
				//$objArr[3] = แถว
				//$objArr[4] = ชั้น
				//$objArr[5] = เกรด
				//$objArr[6] = ว/ด/ป ที่ผลิต
				//$objArr[7] = จำนวน
				//$objArr[10] = สต็อกจัดเก็บ
				//$objArr[11] = รหัสสินค้า
				//$objArr[12] = ประเภทการรับ
				//$objArr[13] = วันที่รายงานความเคลื่อนไหว
				//$objArr[14] = ประเภทการปิดผิว LM
				//$objArr[15] = การจองไม้

				$check_stock = getlist("SELECT stock_id FROM type_stock WHERE stock_name='" . $objArr[10] . "'"); //เช็คสต้อคจัดเก็บ
				$check_wh = getlist("SELECT id_w FROM type_warehouse WHERE detail_warehouse='" . $objArr[1] . "'"); // เช็คคลังจัดเก็บ
				$check_type = getlist("SELECT type_data_id FROM type_data WHERE type_data_name='" . $objArr[12] . "' AND type_data_referance='receive'"); // เช็คประเภทการรับ
				$check_pro = getlist("SELECT product_code FROM type_product WHERE product_name='" . $objArr[0] . "'"); // เช็คประเภทไม้
				$check_mfstock = getlist("SELECT fl_stock_id FROM type_fl_stock WHERE fl_stock_name='" . $objArr[14] . "'"); // เช็คประเภทไม้	
				


				for ($q = 0; $q < sizeof($objArr[14]); $q++) {	
					$check_proid = getlist("SELECT production_id FROM receive_production WHERE item_number='" . $objArr[11] . "'AND stock_id='" . $check_stock[$q]['stock_id'] . "' AND type_data_id='" . $check_type[$q]['type_data_id'] . "' AND date_in='" . $objArr[13] . "' AND data_new='1'");				
					$insert = query("INSERT INTO detail_layout_test2 SET item_number='" . $objArr[11] . "',warehouse_true='" . $check_wh[$q]['id_w'] . "',lock_number='" . $objArr[2] . "',
					row_number='" . $objArr[3] . "', layer_number='" . $objArr[4] . "', grade='" . $objArr[5] . "', date_manufacture='" . $objArr[6] . "',
					quantity='" . $objArr[7] . "', stock_id='" . $check_stock[$q]['stock_id'] . "', referance='receive',date_in='" . $objArr[13] . "',note_layout='" . $objArr[9] . "', date_and_time='$date_time',
					user_save='" . $_SESSION["name"] . "',type_data_id='" . $check_type[$q]['type_data_id'] . "',production_id='" . $check_proid[$q]['production_id'] . "', type_item='" . $check_pro[$q]['product_code'] . "',data_new='1'");					
				}// end for loop					
			}//if			
		} //while	
		$sum_data = getlist("SELECT SUM(quantity) as qty, item_number, warehouse_true,type_data_id,stock_id,grade,type_item,date_in FROM detail_layout_test2 WHERE data_new='1' GROUP BY item_number,stock_id,type_data_id,date_manufacture,date_in");
		//print("SELECT SUM(quantity) as qty, item_number, warehouse_true,type_data_id,stock_id,grade,type_item,date_in FROM detail_layout_test2 WHERE data_new='1' GROUP BY item_number,stock_id,type_data_id,date_manufacture,date_in");
		for ($q = 0; $q < sizeof($sum_data); $q++) {
			query(" INSERT INTO receive_production SET type_data_id='" . $sum_data[$q]['type_data_id'] . "',stock_id='" . $sum_data[$q]['stock_id'] . "',warehouse_true='" . $sum_data[$q]['warehouse_true'] . "',
			type_item='" . $sum_data[$q]['type_item'] . "', grade='" . $sum_data[$q]['grade'] . "',	quantity='" . $sum_data[$q]['qty'] . "', item_number='" . $sum_data[$q]['item_number'] . "', referance='receive',
			date_in='" . $sum_data[$q]['date_in'] . "',crate_date_time='$date_time',user_refer='" . $_SESSION['name'] . "',lm_id='" . $sum_data[$q]['mf_stock'] . "',data_new='1'");
		}
		$message = "ลงข้อมูลเรียบร้อยแล้ว";
		fclose($objCSV);
	}//if move upload
	print "<script type='text/javascript'>alert('$message');</script>";
}//if empty summit


จาก code ด้านบนติดปัญหาตรง SELECT production_id FROM receive_production ครับ
-ถ้าเป็นข้อมูลที่มีอยู่ในตาราง receive_production อยู่แล้ว สามารถเพิ่ม production_id ในตาราง detail_layout ได้ครับ
-แต่ถ้าเป็นข้อมูลที่ยังไม่มีใน receive_production แล้ว insert เข้าตาราง receive_production ในตาราง detail_layout จะไม่เพิ่ม production_id ให้ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-05-23 11:20:22 By : benlovehi5
 


 

No. 8



โพสกระทู้ ( 9,587 )
บทความ ( 2 )



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


if else ก็รู้จัก ทำไมไม่ใช่ใช้ให้เกิดประโยชน์ครับ
ก่อนที่จะ INSERT INTO detail_layout_test2
เช็ค $check_proid ก่อนไหมว่า หาเจอหรือเปล่า ไม่เจอ ก้ insert เข้าไปก่อน แล้ว หาค่า insert_id ของ receive_product มาใช้

ก็รู้ทั้งรู้ ว่ามันหาไม่เจอ ก็ยัง insert โดยไม่เขียนเช็คอีก ปัญหาก็รู้อยู่แท้ๆ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-05-23 16:05:20 By : Chaidhanan
 


 

No. 9



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



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


ตอบความคิดเห็นที่ : 8 เขียนโดย : Chaidhanan เมื่อวันที่ 2022-05-23 16:05:20
รายละเอียดของการตอบ ::
ตอนนี้ดึงค่า insert_id ออกมาได้แล้วครับ แต่ยังงๆกับการนำ insert_id ที่ดึงมาไปใช้ พอจะเขียนรูปแบบคร่าวหน่อยได้ไหมครับ
Code (PHP)
if (!empty($_POST['summit'])) {
	//ทำการเปิดไฟล์ CSV เพื่อนำข้อมูลไปใส่ใน MySQL

	$path = "upload/";
	$target_file = $path . basename($_FILES["fileToUpload"]["name"]); //อ่านชื่อไฟล์
	$imageFileType = pathinfo($target_file, PATHINFO_EXTENSION); //หานามสกุลไฟล์ โดยแบ่งออกเป็น 3 อาเรย์ 1 dirname = path , basename =name+type file
	$filename=basename($_FILES["fileToUpload"]["name"]);
	$upload_insert = 1;
	$date_data = $_POST['date_data'];
	$date_time =  date("Y-m-d H:i:s");
	if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $path . $_FILES["fileToUpload"]["name"])) {
		query("INSERT INTO upload_layout SET upload_name='$filename', upload_date='$date_time',user_upload='" . $_SESSION['name'] . "'");
		$get_FK = getlist("SELECT MAX(upload_id) AS upload_id FROM upload_layout");
		$fk_upload = $get_FK[0]['upload_id'];
		$objCSV = fopen($path . $_FILES["fileToUpload"]["name"], "r");
		$i = 0;
		while (($objArr = fgetcsv($objCSV, 1000, ",")) !== FALSE) {
			$i++;
			if ($i > 1) {
				$data1 = strpos($objArr[13],"/");
				if($data1 !== FALSE)
					{
				//$objArr[1] = คลังจัดเก็บ
				//$objArr[2] = ล็อค
				//$objArr[3] = แถว
				//$objArr[4] = ชั้น
				//$objArr[5] = เกรด
				//$objArr[6] = ว/ด/ป ที่ผลิต
				//$objArr[7] = จำนวน
				//$objArr[10] = สต็อกจัดเก็บ
				//$objArr[11] = รหัสสินค้า
				//$objArr[12] = ประเภทการรับ
				//$objArr[13] = วันที่รายงานความเคลื่อนไหว
				//$objArr[14] = ประเภทการปิดผิว LM
				//$objArr[15] = การจองไม้

				$check_stock = getlist("SELECT stock_id FROM type_stock WHERE stock_name='" . $objArr[10] . "'"); //เช็คสต้อคจัดเก็บ
				$check_wh = getlist("SELECT id_w FROM type_warehouse WHERE detail_warehouse='" . $objArr[1] . "'"); // เช็คคลังจัดเก็บ
				$check_type = getlist("SELECT type_data_id FROM type_data WHERE type_data_name='" . $objArr[12] . "' AND type_data_referance='receive'"); // เช็คประเภทการรับ
				$check_pro = getlist("SELECT product_code FROM type_product WHERE product_name='" . $objArr[0] . "'"); // เช็คประเภทไม้
				$check_mfstock = getlist("SELECT fl_stock_id as lm_id FROM type_fl_stock WHERE fl_stock_name='" . $objArr[14] . "'"); // เช็คประเภทสต็อค	
						
				for ($q = 0; $q < sizeof($objArr[11]); $q++) {	
					$check_proid = getlist("SELECT production_id FROM receive_production WHERE item_number='" . $objArr[11] . "'AND stock_id='" . $check_stock[$q]['stock_id'] . "' AND type_data_id='" . $check_type[$q]['type_data_id'] . "' AND date_in='" . $objArr[13] . "' AND data_new='1'");
				if(empty($check_proid[$q]['production_id'])){														
					query("INSERT INTO detail_layout_test2 SET item_number='" . $objArr[11] . "',warehouse_true='" . $check_wh[$q]['id_w'] . "',lock_number='" . $objArr[2] . "',
					row_number='" . $objArr[3] . "', layer_number='" . $objArr[4] . "', grade='" . $objArr[5] . "', date_manufacture='" . $objArr[6] . "',
					quantity='" . $objArr[7] . "', stock_id='" . $check_stock[$q]['stock_id'] . "', referance='receive',date_in='" . $objArr[13] . "',note_layout='" . $objArr[9] . "', date_and_time='$date_time',
					user_save='" . $_SESSION["name"] . "',type_data_id='" . $check_type[$q]['type_data_id'] . "',type_item='" . $check_pro[$q]['product_code'] . "',data_new='1'
					,upload_id='$fk_upload',mf_stock='" . $check_mfstock[$q]['lm_id'] . "'");			
					}else{
						query("UPDATE detail_layout_test2 SET production_id='.$check_proid[$q]['production_id'].' WHERE item_number='" . $objArr[11] . "'AND stock_id='" . $check_stock[$q]['stock_id'] . "' AND type_data_id='" . $check_type[$q]['type_data_id'] . "' AND date_in='" . $objArr[13] . "' AND data_new='1'");
					}					
				}// end for loop 		
				$message = "ลงข้อมูลเรียบร้อยแล้ว";		
			}else{
				$message = "รูปแบบของวันที่ไม่ถูกต้อง กรุณาทำให้อยู่ในรูปแบบ 2017-12-01 (ปี-เดือน-วัน)";
			}//if เช็ครูปแบบวันที่	
		}//if	
	} //while	
		$sum_data = getlist("SELECT SUM(quantity) as qty, item_number, warehouse_true,type_data_id,stock_id,grade,type_item,date_in,mf_stock FROM detail_layout_test2 WHERE upload_id='$fk_upload' AND data_new='1' GROUP BY item_number,stock_id,type_data_id,date_manufacture,date_in");
			$id =  mysqli_insert_id($link);	// คืนค่า id insert receive_production	
		}				
		fclose($objCSV);		
	}//if move upload
	print "<script type='text/javascript'>alert('$message');</script>";
}//if empty summit




ประวัติการแก้ไข
2022-05-24 16:05:16
2022-05-24 23:13:39
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-05-24 16:04:31 By : benlovehi5
 


 

No. 10



โพสกระทู้ ( 9,587 )
บทความ ( 2 )



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


ตัวแปรไหน ของ insert_id ที่หาได้แล้ว
ไม่เห็นชุดคำสั่ง insert production เข้าไปยัง receive_production เลย
แล้วจะเอา insert_id ของ receive_production มาจากไหน
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-05-24 16:33:22 By : Chaidhanan
 


 

No. 11



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



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


ตอบความคิดเห็นที่ : 10 เขียนโดย : Chaidhanan เมื่อวันที่ 2022-05-24 16:33:22
รายละเอียดของการตอบ ::
วาง code ไม่ครบครับ $id_receive ครับตัวแปรที่ดึง idที่ insertใน ตาราง receive_production
Code (PHP)
 ตอบความคิดเห็นที่ : 8 เขียนโดย : Chaidhanan เมื่อวันที่ 2022-05-23 16:05:20
รายละเอียดของการตอบ ::
ตอนนี้ดึงค่า insert_id ออกมาได้แล้วครับ แต่ยังงๆกับการนำ insert_id ที่ดึงมาไปใช้ พอจะเขียนรูปแบบคร่าวหน่อยได้ไหมครับ Code (PHP) [php]if (!empty($_POST['summit'])) { //ทำการเปิดไฟล์ CSV เพื่อนำข้อมูลไปใส่ใน MySQL $path = "upload/"; $target_file = $path . basename($_FILES["fileToUpload"]["name"]); //อ่านชื่อไฟล์ $imageFileType = pathinfo($target_file, PATHINFO_EXTENSION); //หานามสกุลไฟล์ โดยแบ่งออกเป็น 3 อาเรย์ 1 dirname = path , basename =name+type file $filename=basename($_FILES["fileToUpload"]["name"]); $upload_insert = 1; $date_data = $_POST['date_data']; $date_time = date("Y-m-d H:i:s"); if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $path . $_FILES["fileToUpload"]["name"])) { query("INSERT INTO upload_layout SET upload_name='$filename', upload_date='$date_time',user_upload='" . $_SESSION['name'] . "'"); $get_FK = getlist("SELECT MAX(upload_id) AS upload_id FROM upload_layout"); $fk_upload = $get_FK[0]['upload_id']; $objCSV = fopen($path . $_FILES["fileToUpload"]["name"], "r"); $i = 0; while (($objArr = fgetcsv($objCSV, 1000, ",")) !== FALSE) { $i++; if ($i > 1) { $data1 = strpos($objArr[13],"/"); if($data1 !== FALSE) { //$objArr[1] = คลังจัดเก็บ //$objArr[2] = ล็อค //$objArr[3] = แถว //$objArr[4] = ชั้น //$objArr[5] = เกรด //$objArr[6] = ว/ด/ป ที่ผลิต //$objArr[7] = จำนวน //$objArr[10] = สต็อกจัดเก็บ //$objArr[11] = รหัสสินค้า //$objArr[12] = ประเภทการรับ //$objArr[13] = วันที่รายงานความเคลื่อนไหว //$objArr[14] = ประเภทการปิดผิว LM //$objArr[15] = การจองไม้ $check_stock = getlist("SELECT stock_id FROM type_stock WHERE stock_name='" . $objArr[10] . "'"); //เช็คสต้อคจัดเก็บ $check_wh = getlist("SELECT id_w FROM type_warehouse WHERE detail_warehouse='" . $objArr[1] . "'"); // เช็คคลังจัดเก็บ $check_type = getlist("SELECT type_data_id FROM type_data WHERE type_data_name='" . $objArr[12] . "' AND type_data_referance='receive'"); // เช็คประเภทการรับ $check_pro = getlist("SELECT product_code FROM type_product WHERE product_name='" . $objArr[0] . "'"); // เช็คประเภทไม้ $check_mfstock = getlist("SELECT fl_stock_id as lm_id FROM type_fl_stock WHERE fl_stock_name='" . $objArr[14] . "'"); // เช็คประเภทสต็อค for ($q = 0; $q < sizeof($objArr[11]); $q++) { $check_proid = getlist("SELECT production_id FROM receive_production WHERE item_number='" . $objArr[11] . "'AND stock_id='" . $check_stock[$q]['stock_id'] . "' AND type_data_id='" . $check_type[$q]['type_data_id'] . "' AND date_in='" . $objArr[13] . "' AND data_new='1'"); if(empty($check_proid[$q]['production_id'])){ query("INSERT INTO detail_layout_test2 SET item_number='" . $objArr[11] . "',warehouse_true='" . $check_wh[$q]['id_w'] . "',lock_number='" . $objArr[2] . "', row_number='" . $objArr[3] . "', layer_number='" . $objArr[4] . "', grade='" . $objArr[5] . "', date_manufacture='" . $objArr[6] . "', quantity='" . $objArr[7] . "', stock_id='" . $check_stock[$q]['stock_id'] . "', referance='receive',date_in='" . $objArr[13] . "',note_layout='" . $objArr[9] . "', date_and_time='$date_time', user_save='" . $_SESSION["name"] . "',type_data_id='" . $check_type[$q]['type_data_id'] . "',type_item='" . $check_pro[$q]['product_code'] . "',data_new='1' ,upload_id='$fk_upload',mf_stock='" . $check_mfstock[$q]['lm_id'] . "'"); }else{ query("UPDATE detail_layout_test2 SET production_id='.$check_proid[$q]['production_id'].' WHERE item_number='" . $objArr[11] . "'AND stock_id='" . $check_stock[$q]['stock_id'] . "' AND type_data_id='" . $check_type[$q]['type_data_id'] . "' AND date_in='" . $objArr[13] . "' AND data_new='1'"); } }// end for loop $message = "ลงข้อมูลเรียบร้อยแล้ว"; }else{ $message = "รูปแบบของวันที่ไม่ถูกต้อง กรุณาทำให้อยู่ในรูปแบบ 2017-12-01 (ปี-เดือน-วัน)"; }//if เช็ครูปแบบวันที่ }//if } //while $sum_data = getlist("SELECT SUM(quantity) as qty, item_number, warehouse_true,type_data_id,stock_id,grade,type_item,date_in,mf_stock FROM detail_layout_test2 WHERE upload_id='$fk_upload' AND data_new='1' GROUP BY item_number,stock_id,type_data_id,date_manufacture,date_in"); for ($q = 0; $q < sizeof($sum_data); $q++) { query(" INSERT INTO receive_production SET type_data_id='" . $sum_data[$q]['type_data_id'] . "',stock_id='" . $sum_data[$q]['stock_id'] . "',warehouse_true='" . $sum_data[$q]['warehouse_true'] . "', type_item='" . $sum_data[$q]['type_item'] . "', grade='" . $sum_data[$q]['grade'] . "', quantity='" . $sum_data[$q]['qty'] . "', item_number='" . $sum_data[$q]['item_number'] . "', referance='receive', date_in='" . $sum_data[$q]['date_in'] . "',crate_date_time='$date_time',user_refer='" . $_SESSION['name'] . "',lm_id='" . $sum_data[$q]['mf_stock'] . "',data_new='1'"); $id_receive = mysqli_insert_id($link); // คืนค่า id insert receive_production } fclose($objCSV); }//if move upload print "<script type='text/javascript'>alert('$message');</script>"; }//if empty summit


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-05-24 23:12:49 By : benlovehi5
 


 

No. 12



โพสกระทู้ ( 9,587 )
บทความ ( 2 )



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


ตัวอย่าง อัลกอลิธึม แต่อย่าหลงดีใจได้โค๊ดล่ะ ผมแค่ทำเป็นตัวอย่าง
ตัวอย่างที่คุณไปเอามา มันสมัยไหนแล้วเนี่ย
ถ้าใช้จริง sql injection ต้องมาล่ะ ไม่รอดหรอกครับ มันต่อ string แบบนี้ ไม่ได้
Code (PHP)
<?php
for ($q = 0; $q < sizeof($objArr[11]); $q++) {
	$check_proid = getlist("SELECT production_id 
		FROM receive_production 
		WHERE item_number='{$objArr[11]}' 
		AND stock_id='{$check_stock[$q][stock_id]}' 
		AND type_data_id='{$check_type[$q][type_data_id]}' 
		AND date_in='{$objArr[13]}'
		AND data_new=1
	");
	if(empty($check_proid[$q]['production_id'])){
		// ไม่พบ production_id 
		$insert_id = 'xx'; // xx คือ function ที่ทำการคิวรี่ เพิ่มรายการ ใน receive_production แล้ว คืนค่า insert_id มาให้ 
	}else{
		$insert_id = $check_proid[$q]['production_id'];
	}
	query("
		UPDATE detail_layout_test2 
		SET production_id={$insert_id }
		WHERE item_number='{$objArr[11]}'
		AND stock_id='{$check_stock[$q]['stock_id']'} 
		AND type_data_id='{$check_type[$q]['type_data_id']}' 
		AND date_in='{$objArr[13]}' AND data_new=1
	");
}

จาก ตรงนี้ for ($q = 0; $q < sizeof($objArr[11]); $q++) {
คำสั่ง sizeof( ใช้กับตัวแปรที่เป็น array )
แล้วคำสั่งนี้ มาได้ยังไง
WHERE item_number='".$objArr[11]."'
ต่อ string ด้วย array นี่นะ ทำความเข้าใจกับตัวแปร ให้มากกว่านี้ หน่อย อะไรใช้ได้อะไรใช้ไม่ได้ พื้นฐานไวยกรณ์สำคัญมากๆ

เลิกใช้ tools การคิวรี่ กลุ่มนี้ได้แล้ว นะเขียนเอง ง่ายๆ ไม่ยาก ตัวอย่างนี้ป้องกัน sql injection ได้ด้วย
Code (PHP)
$con = new mysqli('host', 'user', 'psw', 'database') or die ( mysqli_connection_error() );
$con->set_charset('utf8');
$stmt = $con->prepare('insert into table (field1, field2 ) values ( ? , ? )'); 
$stmt->bind_param( 'ss', $value1, $value2 );
$stmt->execute();

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-05-25 05:12:07 By : Chaidhanan
 

   

ค้นหาข้อมูล


   
 

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