รบกวนทีครับ คือว่าผมทำฟอร์มกรอกข้อมูลแล้วบันทึกลงฐานข้อมูลอ่ะครับ
อย่างนั้นผมว่าน่าจะใช้ https://www.thaicreate.com/php/php-mysql-multiple-rows-update-edit-record.html
ดูตัวอย่างจากนี้ครับ ผมว่าน่าจะเป็นตัวอย่างให้คุณได้อย่างดีเลยแหละครับ
Date :
2010-07-05 08:54:20
By :
SOUL
กำหนด คีย์ ให้มันค่ะ
ลักษณะ คล้ายกับ การบันทึกข้อมูลการสั่งซื้อสินค้า
ใบสั่งซื้อ 1 ใบ มีสินค้าได้หลายรายการ แบบนั้น
หรือลองศึกษาเรื่องการออกแบบฐานข้อมูล แบบ 1 to many
ยกตัวอย่างง่าย ๆ เรื่องทะเบียนรถ คิดว่าน่าจะตรงจุด
id | ผู้กรอก | ทะเบียน
1 | A | SB001
2 | A | SB002
3 | A | SB003
4 | A | SB004
5 | B | SC111
6 | B | SV222
7 | A | SB005
แบบนี้
id คือ PK ส่วน ผู้กรอก ก็คืิอ FK ที่อาจใช้เชื่อมโยงกับตาราง user ว่าใครเป็นผู้กรอก(ถ้ามี)
หรือในกรณีที่คุณมีแค่ table เดียว ผู้กรอก ก็จะเป็นคีย์หลักร่วมกับ id
Date :
2010-07-05 08:59:39
By :
ultrasiam
ครับ ขอบคุณทั้ง 2 ท่านครับ เดี๋ยวลองเอาไปทำดูครับ ติดปัญหาตรงไหน ขอรบกวนอีกทีนะครับ
Date :
2010-07-05 09:01:09
By :
มุกกี้จัง
ใช้ record ผู้กรอก ดึง record เลขทะเบียนรถทั้งหมดออกมาตามที่ผู้กรอกคนรายนั้นเคยกรอกมาใช่มั้ยครับ แล้วถ้าหากว่ายกตัวอย่างเช่น ผู้กรอก A กรอกไปแล้วครั้งนึงจำนวน 4 เลขทะเบียนรถแล้วบันทึก แล้วผู้กรอก A กลับมากรอกอีกจำนวน 8 เลขทะเบียนรถ ต้องทำอย่างไรดีครับให้เลขบะเบียนรถของผู้กรอก A ที่กรอกครั้งที่ 2 เป็นคนละชุดข้อมูลกับตอนที่ผู้กรอก A กรอกไปครั้งแรก
Date :
2010-07-05 09:23:03
By :
มุกกี้จัง
ก็ทำเหมือนเดิมนั่นและค่ะ
ให้ ID เป็น auto มันก็จะเพิ่มไปเรื่อย ๆ
ไม่ซ้ำกันอยู่แล้ว คุณก็ insert ลงไปเรื่อย ๆ ไม่ว่าจะกลับมากรอกอีกกี่ครั้งก็เหมือนเดิม
Date :
2010-07-05 09:30:17
By :
ultrasiam
ต้องการเรียก REQ_ID ที่ 1 แล้ว แสดง plate_number ทั้ง 3 อันในฐานข้อมูลอะ
Date :
2010-07-05 10:35:21
By :
มุกกี้จัง
จะดึงข้อมูลจาก REQ_ID จากตาราง DLT_REQ_FORM มาตาราง DLT_REQ_DETAIL อย่างไงอะครับ
Date :
2010-07-05 14:13:18
By :
มุคกี้จัง
งง
Date :
2010-07-05 19:49:54
By :
satonpanit
แล้วค่าจะไปตามกันไหมอะ
Date :
2010-07-05 20:36:26
By :
satonpanit
ก็คือ REQ_ID ในตาราง DLT_REQ_FORM ตั้งเป็น auto มันจะรันตั้งแต่ 1 ไปเลื่อยๆๆๆ
แต่ตาราง DLT_REQ_DETELL ของ REQ_ID จะตั้งเป็นธรรมดาอะ จะดึงค่ามาจากตาราง DLT_REQ_FORM ได้หรือไม่ครับ โดยไม่ต้องกรอกนะทำไงดีครับ
Date :
2010-07-06 06:49:44
By :
satonpanit
ได้สิครับ ก็ทั้งสอง table มันทำ relation กันอยู่นิ
Date :
2010-07-06 07:37:18
By :
blacklion
ผมลองทำแล้วมันไม่เห็นเข้าตาราง DLT_REQ_DETELL เลยอะทำอย่างไงดีครับ
Date :
2010-07-06 07:49:00
By :
satonpanit
ultrasiam ช่วยหน่อยดิ
Date :
2010-07-06 09:36:20
By :
satonpanit
เอาเป็นว่า อธิบาย 2 ตารางนี้หน่อย ว่ามันคืออะไร relation ของมันเป็นยังไง
ไอ้ที่บอกว่า 1 คนกรอกได้หลายข้อมูลอะไรนั่นเข้าใจล่ะ แต่ไม่เข้าใจความต้องการของคุณเกี่ยวกับ 2 table นี้
Date :
2010-07-06 13:24:37
By :
ultrasiam
REQ_ID ในตาราง DLT_REQ_FORM ตั้งเป็น auto มันจะรันตั้งแต่ 1 ไปเลื่อยๆๆๆ
แต่ตาราง DLT_REQ_DETELL ของ REQ_ID จะตั้งเป็นธรรมดาอะ จะดึงค่ามาจากตาราง DLT_REQ_FORM ได้หรือไม่ครับ โดยไม่ต้องกรอกนะทำไงดีครับ
Date :
2010-07-06 13:37:12
By :
satonpanit
ทำไมต้องแยกเป็น 2 table ค่ะ
Date :
2010-07-06 13:49:41
By :
ultrasiam
เพราะว่าเลขทะเบียนมันเป็น array พอแปลงมา ก็จะได้ลงมาหลาย record อะ ไม่รู้ทำอย่างไรเหมือนกันครับ
Date :
2010-07-06 13:54:55
By :
satonpanit
คือคุณมี
นายA,(ทะเบียน1,ทะเบียน2,ทะเบียน3)
แบบนี้เนาะ
แล้วต้องการบันทึกลงฐานข้อมูล
นายA,ทะเบียน1
นายA,ทะเบียน2
นายA,ทะเบียน3
แบบนี้เนาะ
โอเค ลองมาดูฐานข้อมูลกัน
ต้องบอกก่อนว่าไม่ค่อยรู้เรื่องระบบเกี่ยวกับทะเบียนรถเท่าไหร่เราดูที่งานง่าย ๆ ก็แล้วกัน
ง่าย ๆ คือใคร กรอกทะเบียนอะไร เมื่อไหร่
แบบหยาบ ๆ ก็จับยัดไปเลยใน table เดียว
แยกหน่อยก็ จะได้ table user กับ table ทะเบียน
table user ก็เก็บข้อมูลที่เกี่ยวกับ user
- รหัสประจำตัว (ใช้เป็นคีย์หลัก)
- ชื้อสกุล
- ที่อยู่
- อะไรก็ว่าไป
table ทะเบียน ก็เก็บข้อมูลที่เกี่ยวกับ ทะเบียน
- id (auto)
- user ใครกรอก (ใช้เป็น FK เพื่อเชืี่อมกับ table user ควรใช้ รหัสประจำตัว)
- เลขทะเบียน
- วันที่กรอก
- อะไรก็ว่าไป
ถ้าดูในมุมของข้อมูลมันก็จะเป็นแบบนี้
Date :
2010-07-06 14:25:58
By :
ultrasiam
ทีนี้ตอน insert ข้อมูล ก็จะ insert ตารางทะเบียน แค่ตารางเดียว
ซึ่งคุณต้องรู้อยู่แล้วว่าใครเป็นคนกรอก พูดถึงหน้าฟอร์มนะคะ
เมื่อมาถึงหน้า form คุณต้องได้ user id มาละ จะด้วยวิธีใดก็ตาม
ตอน insert ก็ วน array มา insert ทีละตัว
user_id กับ date จะเป็นข้อมูลเดิมที่ส่งมา ที่จะเปลี่ยนไปเรื่อย ๆ คือ ค่าของทะเบียนที่อยู่ใน array
พอจะเข้าใจไหมคะ
Date :
2010-07-06 14:30:15
By :
ultrasiam
ก็เข้าใจนะครับ แต่ถ้าเราจะแสดงข้อมูลจากฐานข้อมูลออกมาแสดงเช่น เราจะแสดง ข้อมูลของ
user_id 001 อะมันก็ขึ้นมา 4 number เลยอะ แต่ทำอย่างไงให้มันขึ้นเฉพาะอันที่ก็ทีแรกแค่ 3 number
ก่อนอะครับ
ผมก็ต้องการอย่างที่คุณว่าแต่ว่ามันติดอยู่อย่างเดียวมันคือการแสดงผลจากฐานข้อมูลอะครับที่ เวลาเรียกมันขึ้นมาหมดเลยเช่นเวล่เราเรียก 001 มามันก็ขึ้น มา 4 ทะเบียน ทั้งทีที่แรกเขากรอกแค 3 ทะเบียน อะครับ
ขอบคุณช่วยผมหน่อยนะครับ
Date :
2010-07-06 14:42:02
By :
satonpanit
เข้าใจผิดต้องขออภัย
งั้นกลับไปดูที่ ตาราง DLT_REQ_FORM ของคุณ กับตารางทะเบียน
ตาราง DLT_REQ_FORM มี REQ_ID เป็น PK
ในตารางทะเบียนก็จะต้องมีฟิวด์ 1 ฟิวด์ที่เป็น FK เพื่อเชื่อมกับ DLT_REQ_FORM ในที่นี้จะใช้ REQ_ID
ลักษณะเช่นเดียวกับ user_id ที่เชื่อม user กับทะเบียน
วิธีการคือ คุณต้อง insert DLT_REQ_FORM ก่อน แล้วเอา REQ_ID ที่ได้ มา insert ลง ตารางทะเบียนอีกที
ถ้าดูในมุมของข้อมูลมันก็จะเป็นแบบนี้
Date :
2010-07-06 15:07:00
By :
ultrasiam
ครับมันเป็นแบบนี้ครับแล้วผมจะทำอย่างไงดี
แต่ผมจะผมต้องการ insert พร้อมกันได้ไหมครับ
Date :
2010-07-06 15:22:04
By :
satonpanit
คีย์เรียกมาตั้งแต่ยังไม่ได้ insert เพราะผมเรียกมาจากตารางอื่นครับ
Date :
2010-07-06 15:23:16
By :
satonpanit
เรียกมาจากตารางอื่น นี่คือคีย์อะไรคะ หมายถึง REQ_ID หรอ ตอนแรกคิดว่าเข้าใจละ แต่ตอนนี้ กลายเป็นเข้าใจผิดรอบสอง
Date :
2010-07-06 15:34:53
By :
ultrasiam
นี่ครับตาราง ตารางที่ดึงมาก่อนหน้านี้ครับ
Date :
2010-07-06 16:19:17
By :
satonpanit
ชอบคุณ ultrasiam จังเลย
( แอบปลื้ม อยากเก่ง database มังอะ)
Date :
2010-07-06 18:41:08
By :
ขนมหม้อแกง
ถ้าไม่ insert ตารางทะเบียนอีกครั้งก็คือไม่ได้ใช่ไหมครับ
Date :
2010-07-07 08:54:53
By :
satonpanit
2 เมื่อบันทึกเสร็จแล้วก็ select max(REQ_ID) from DLT_REQ_FORM where customer_id = '001'
ก็จะได้ REQ_ID ล่าสุดที่ customer 001 บันทึกลงไป ซึ่งในที่นี้สมมุติไว้ว่าเป็น REQ_ID = 1
3 วน loop ตามจำนวน array เพื่อบันทึกเลขทะเบียนที่กรอก
for($i=0;$i<count(เลขทะเบียน);$i++){
insert into ตารางทะเบียน values (id(กำหนดไว้เป็น auto increment),REQ_ID(ที่ select มาในข้อ2),เลขทะเบียน[$i])
}
มันทำอย่างไงงง
Date :
2010-07-07 15:56:02
By :
satonpanit
Date :
2010-07-09 13:51:55
By :
satonpanit
Load balance : Server 04