สอบถามเรื่องวนลูปบันทึกเข้า db ครับ กรณีมีสองลูป

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา สอบถามเรื่องวนลูปบันทึกเข้า db ครับ กรณีมีสองลูป

สอบถามเรื่องวนลูปบันทึกเข้า db ครับ กรณีมีสองลูป

ผมจะวนลูปอย่างไรในการบันทึกในกรณีนี้ครับ 
คือ

1. loop ที่1 บันทึกค่ากิจกรรม (ตามรูปมีสองกิจกรรม คือหมายเลข 1 และ 2  ช่องสีน้ำเงิน) tb1
2. loop ที่2 บึนทึก รายละเอียดงบประมาณไตรมาส(ช่องเขียว) ซึ่งจะเก็บ ID จาก loop แรกมาด้วย เพื่อมาใช้อ้างอิง(fk)กัน tb2

เช่น
กิจกรรมที่ 1 มีรายละเอียดงบประมาณ 2 ค่า ใน db ก็จะเก็บ id เลขอ้างอิงเป็น

   ID    เลขอ้างอิง          รายละเอียด
    1  -       1          -    ข้อมูลรายละเอียดงบประมาณที่1
    2  -       1          -    ข้อมูลรายละเอียดงบประมาณที่2

กิจกรรมที่ 2 มีรายละเอียดงบประมาณ 3 ค่า ใน db ก็จะเก็บ id เลขอ้างอิงเป็น

   ID    เลขอ้างอิง          รายละเอียด
    3  -       2          -    ข้อมูลรายละเอียดงบประมาณที่1
    4  -       2          -    ข้อมูลรายละเอียดงบประมาณที่2
    5  -       2          -    ข้อมูลรายละเอียดงบประมาณที่3

ตอนนี้ผมทำแล้วแต่มันดันเป็นแบบนี้

 ID    เลขอ้างอิง          รายละเอียด
    1  -                -    ข้อมูลรายละเอียดงบประมาณที่1(ข้อมูลจากกิจกรรมแรก)
    2  -                -    ข้อมูลรายละเอียดงบประมาณที่2(ข้อมูลจากกิจกรรมแรก)
    3  -       2          -    ข้อมูลรายละเอียดงบประมาณที่1
    4  -       2          -    ข้อมูลรายละเอียดงบประมาณที่2
    5  -       2          -    ข้อมูลรายละเอียดงบประมาณที่3

เลขอ้างอิงมันดันมีแต่ 2 แทนที่จะเป็น 1 ในสองข้อมูลแรก



 

for ($i = 0; $i < count($_POST["txtindex_plan"]); $i++) {
	$txtindex_plan = str_replace(",", "", $_POST["txtindex_plan"]);
	$sql_ac = "INSERT INTO activity(P_id, ac_desc, activity_results, p_of_time1, p_of_time2, p_of_time3, p_of_time4, p_budget, p_per, ac_budget)
			VALUES('$P_id', '" . $_POST["txtindex_plan"][$i] . "', '" . $_POST["txtactivity_results"][$i] . "', '" . $_POST['txtTime_plan1'][$i] . "', '" . $_POST["txtTime_plan2"][$i] . "', '" . $_POST["txtTime_plan3"][$i] . "', '" . $_POST["txtTime_plan4"][$i] . "', '" . $txtbudget_plan[$i] . "', '" . $_POST["txtper_plan"][$i] . "', '" . $_POST["txtac_budget_plan"][$i] . "')";
	$result5 = mysqli_query($con, $sql_ac) or die("Error in query: $sql_ac " . mysqli_error());

	$ac_id = mysqli_insert_id($con);
	for ($i = 0; $i < count($_POST["budget_description"]); $i++) {
		$sql_budget = "INSERT INTO tb_budget(ac_id, description, budget)
				VALUES('$ac_id', '" . $_POST["budget_description"][$i] . "', '" . $_POST["budget_activity"][$i] . "')";
		$result6 = mysqli_query($con, $sql_budget) or die("Error in query: $sql_budget " . mysqli_error());
	}
}


Thammarat Phanphai 16-10-2020 15:10:22

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

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


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


    ( หรือ เข้าใช้งานผ่าน Social Login )

 ความคิดเห็นที่ 1
ลูปซ้อนลูป ตัวแปรควรใช้คนละตัว เพราะค่าอาจจะไม่เป็นตามที่เราต้องการ

for($i=0;$i<3;$i++){
    echo $i."\r\n";
    for($v=0;$v<2;$v++){
        echo "-".$v."\r\n";
    }
}


Ninenik 16-10-2020
 ความคิดเห็นที่ 2
ขอบคุณครับ แต่ผมลองแล้ว ยังไม่ได้เหมือรเดิมครับ
ยังเป็นแบบนี้ครับ 

 ID    เลขอ้างอิง          รายละเอียด
    1  -                -    ข้อมูลรายละเอียดงบประมาณที่1(ข้อมูลจากกิจกรรมแรก)
    2  -                -    ข้อมูลรายละเอียดงบประมาณที่2(ข้อมูลจากกิจกรรมแรก)

    3  -       2          -    ข้อมูลรายละเอียดงบประมาณที่1
    4  -       2          -    ข้อมูลรายละเอียดงบประมาณที่2
    5  -       2          -    ข้อมูลรายละเอียดงบประมาณที่3


Thammarat Phanphai 16-10-2020 15:47
 ความคิดเห็นที่ 3

ขออณุญาตแก้ไขครับดูผิด 

เป็นแบบนี้แทนครับ 

เหมือนมันบันทึกทั้งสองเลยครับ

 ID    เลขอ้างอิง          รายละเอียด
    1  -       1         -    ข้อมูลรายละเอียดงบประมาณที่1(ข้อมูลจากกิจกรรมแรก)
    2  -       1          -    ข้อมูลรายละเอียดงบประมาณที่2(ข้อมูลจากกิจกรรมแรก)
    3  -       1          -    ข้อมูลรายละเอียดงบประมาณที่1
    4  -       1          -    ข้อมูลรายละเอียดงบประมาณที่2
    5  -       1          -    ข้อมูลรายละเอียดงบประมาณที่3


    6  -                -    ข้อมูลรายละเอียดงบประมาณที่1(ข้อมูลจากกิจกรรมแรก)
    7  -                -    ข้อมูลรายละเอียดงบประมาณที่2(ข้อมูลจากกิจกรรมแรก)
    8  -       2          -    ข้อมูลรายละเอียดงบประมาณที่1
    9  -       2          -    ข้อมูลรายละเอียดงบประมาณที่2
   10  -       2          -    ข้อมูลรายละเอียดงบประมาณที่3



Thammarat Phanphai 16-10-2020 15:55
 ความคิดเห็นที่ 4
ให้ทดสอบ echo แสดงข้อมูล ก่อนทำการบันทึกลงฐานข้อมูล 
เราต้องให้มั่นใจว่า ค่าข้อมูลที่จะบันทึก เป็นค่าที่ถูกต้องแล้ว 
ต้องแก้ปัญหาด้วยการ debug ตามปกติ ค่าส่งผิด เพราะเรากำหนดผิด หรือเราอ้างอิงผิด
หรือไม่มีค่านี้ หรือเราไม่ได้กำหนดแต่แรก เหมือนเราต้องย้อนการทำงานให้ได้
    ถ้าค่าส่งมาผิด แสดงว่าค่าที่เรากำหนดในฟอร์มผิด ก็ย้อนไปอีกว่า ทำไมกำหนดค่าในฟอร์มผิด
มีอะไรที่ขาด หรือมีอะไรที่เกิน ขาดต้องเพิ่ม เกินต้องเอาออก แนวทางประมาณนี้


Ninenik 16-10-2020
 ความคิดเห็นที่ 5
ผมลอง echo มาได้แบบนี้ครับ



Thammarat Phanphai 16-10-2020 16:14
1






เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ