|
|
|
อยากทราบวิธีการ insert ข้อมูล หลาย ๆ ข้อมูลพร้อมกันครับ |
|
|
|
|
|
|
|
ผมจะทำการอนุมัติการลงทะเบียนเรียนของกลุ่มนักศึกษา
จากรูปที่ 1 จะเลือกกลุ่มนักศึกษาเพื่อทำการลงทะเบียน โดยมีรายชื่อตามรูปที่ 2
รูปที่ 1
รูปที่ 2
และนี้คือ code process
Code (PHP)
<?php
session_start();
$path = "../../../include/";
include($path."database_info.php");
echo $select_box = $_POST["select_box"];
echo $process = $_POST["process"];
echo $iddd = $_POST["uidd"];
//exit();
?>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
if($process == "submituser"){
foreach($select_box as $index => $value){
$sql_select = "SELECT a.STUDENT_GROUP_ID,b.UID,c.STATUS_COOP FROM STUDENT_GROUP a
INNER JOIN GROUPS b ON a.STUDENT_GROUP_ID = b.STUDENT_GROUP_ID
INNER JOIN USER c ON b.UID = c.UID
WHERE a.STUDENT_GROUP_ID = '".$value."' AND c.STATUS_COOP = '0'";
$query_select = $db->query($sql_select);
$row_select = $db->rows($sql_select);
$rec_select = $query_select->fetch(PDO::FETCH_ASSOC);
for($i=0;$i<=$row_select;$i++){
$array_set = array(
UID => $rec_select["UID"],
TERM_CODE => $term_n,
YEAR_CODE => $year_n
);
$db->insert($array_set," coop ");
$sql1 = (" select COOP_ID from COOP
ORDER BY COOP_ID DESC ");
$query1 = $db->query($sql1);
$row1 = $db->rows($sql1);
$checkftoeic = $query1->fetch(PDO::FETCH_ASSOC);
$insert_reg = array(
REG_COOP_ID => $term_n.$year_n,
UID => $rec_select["UID"],
TERM_CODE => $term_n,
YEAR_CODE => $year_n,
CALENDAR_REG_ID => $calendar_reg_id,
COOP_ID => $checkftoeic["COOP_ID"]
);
$db->insert($insert_reg," reg_coop ");
$sql = (" select COOP_ID from coop
ORDER BY COOP_ID DESC ");
$query = $db->query($sql);
$row = $db->rows($sql);
$checkid = $query->fetch(PDO::FETCH_ASSOC);
$insert_coop_sco = array(
COOP_ID => $checkid["COOP_ID"]
);
$db->insert($insert_coop_sco," coop_sco ");
}
}
echo "<script>alert('อนุมัติการลงทะเบียนเรียบร้อยแล้ว');window.location.href = '../admin_possibility_precoop.php';</script>";
}
อยากทราบว่าจะวน for ยังไงเพื่อให้ จำนวนคนใน row สามารถ insert ลง table ได้ทุกคน เพราะตอนนี้มันวน คนแรกคนเดียว แล้วแจ้งว่าเป็น Primary Key ซ้ำไม่ได้(เพราะมันวนคนเดิม)
Tag : PHP
|
|
|
|
|
|
Date :
2014-12-16 17:19:21 |
By :
por-jr |
View :
969 |
Reply :
9 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ต้องดูครับ ว่า primary key คือ field อะไรครับ เป็น autoincrement หรือไม่
ได้ถูกกำหนดค่าเป็นเท่าไหร่
ในโปรแกรม มันมี loop อยู่ สองอัน ก็ต้องเช็คให้ดีนะครับว่า อันไหนที่มันทำให้ซ้ำกัน
|
|
|
|
|
Date :
2014-12-16 17:46:42 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
39.REG_COOP_ID => $term_n.$year_n,
สีแดง เอามาจากไหนครับ
|
|
|
|
|
Date :
2014-12-16 18:35:34 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ถามก่อนครับ database เป้นอะไรครับ mysql หรือ sqlserver
|
ประวัติการแก้ไข 2014-12-16 18:43:56 2014-12-16 18:50:21
|
|
|
|
Date :
2014-12-16 18:43:14 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
$insert_reg = array(
REG_COOP_ID => $term_n.$year_n,
UID => $rec_select["UID"],
TERM_CODE => $term_n,
YEAR_CODE => $year_n,
CALENDAR_REG_ID => $calendar_reg_id,
COOP_ID => $checkftoeic["COOP_ID"]
);
$db->insert($insert_reg," reg_coop ");
$insert_reg มีการเซทตัวแปร
REG_COOP_ID => $term_n.$year_n,
UID => $rec_select["UID"],
ซึ่งเป็นค่าที่ได้มาจากนอก loop ทั้งสิ้น แลังยังเป็น unique อีกด้วย
เมื่อมันอยู่ใน loop เดียวกัน จาก
for($i=0;$i<=$row_select;$i++){
และนำไปใช้ insert ด้วยคำสั่ง $db->insert($insert_reg," reg_coop ");
ยังไงมันก็ insert ไม่ได้ เพราะมัน insert ค่าเดียวกัน
คุณต้องหาให้ได้ว่า ความแตกต่าง ของ ตัวแปร ที่จะเอาไปใช้ มันคืออะไรแน่
และ field ที่กำหนดนี้ ควรจะเป็น unique หรือไม่ จำเป็นต้องซ้ำกันได้ไหม
และถ้าต้องการไม่ให้ซ้ำ มันควร กำหนดเป็น เซท แค่ 2 field หรือไม่
|
|
|
|
|
Date :
2014-12-17 05:22:38 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตอบความคิดเห็นที่ : 6 เขียนโดย : Chaidhanan เมื่อวันที่ 2014-12-17 05:22:38
รายละเอียดของการตอบ ::
table reg_coop field REG_COOP_ID,UID เป็นคีย์ร่วม
REG_COOP_ID นั่นจะเก็บค่า ปี,ภาคเรียน คือ 12557
UID จะเป็นการเก็บยูสเซอร์นักศึกษาที่ลงทะเบียน คือ xxxx.x1 หรือ xxxx.x2
ปกติการ insert ที่ถูกต้องต้องเป็น
REG_COOP_ID UID
12557 xxxx.x1
12557 xxxx.x2
แต่ผมต้องขอโทษไว้ ณ ที่นี้ด้วย ว่าผมไม่เข้าใจจริงๆ(ผมเป็นคนเข้าใจยาก) ว่าจะทำอย่างไรให้ UID นั่นวนใน $row_select ได้
ถ้านักศึกษาลงทีละคน จะไม่มีปัญหาเพราะลง UID ของใครของมัน แต่อันนี้เป็นกันลงทะเบียนทั้งกลุ่ม พร้อมกัน(ของ admin)
เพราะตอนนี้มันจะขึ้น มีคีย์หลักอยู่แล้ว
REG_COOP_ID UID
12557 xxxx.x1
12557 xxxx.x1
พี่ๆ พอจะมีวิธีแนะนำบ้างมั๊ยครับ
|
ประวัติการแก้ไข 2014-12-17 06:31:08
|
|
|
|
Date :
2014-12-17 06:29:19 |
By :
por-jr |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
22.$rec_select = $query_select->fetch(PDO::FETCH_ASSOC);
23.
24.for($i=0;$i<=$row_select;$i++){
ว่าจะให้คิดเองน่ะน้า เขียนมาขนาดนี้ บอกก็ได้ 5555
ย้าย บันทัด 22 มาไว้ ใน loop for คือ สลับ กับบันทัด 24
คือมันไปอยู่นอกรูป มันก็ได้ค่าเดียวตลอด
เอามาอยู่ใน loop มันจะได้ดึงค่าใหม่ ทุกครั้งที่ วน loop
|
|
|
|
|
Date :
2014-12-17 06:40:20 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 03
|