ผมเขียน extension phpBB อยากทราบวิธีการบันทึกข้อมูลลงมากกว่า 2 ตาราง

กฎการใช้บอร์ด
คำถามหมวดนี้ ควรระบุ รายละเอียดของ Server OS, เวอร์ชั่น ของ PHP, CMS ที่ท่านใช้
รวมถึง Hosting หรือ Control Panel Hosting

ตอบกระทู้

รูปแสดงอารมณ์
:icon_plusone: :like: :plusone: :gfb: :-D :) :( :-o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: :angry: :baa: :biggrin:
รูปแสดงอารมณ์อื่นๆ

BBCode เปิด
[img] เปิด
[url] เปิด
[Smile icon] เปิด

กระทู้แนะนำ
   

มุมมองที่ขยายได้ กระทู้แนะนำ: ผมเขียน extension phpBB อยากทราบวิธีการบันทึกข้อมูลลงมากกว่า 2 ตาราง

Re: ผมเขียน extension phpBB อยากทราบวิธีการบันทึกข้อมูลลงมากกว่า 2 ตาราง

โดย thatsawan » 15/12/2016 2:48 pm

ลองสลับตำแหน่งดู ตามลำดับ
ที่เขียนมา

โค้ด: เลือกทั้งหมด

$sql_ary2 = array(
'id_diagseat' => $id,

);
เเล้ว $id อยู่ข้างล่าง

โค้ด: เลือกทั้งหมด

$id = $db->sql_nextid();
แล้วเอาอันนี้ไป $sql_ary2 insert ค่ามันจะมีได้มั้ยละ
php มันทำงานจากบนลงล่าง

Re: ผมเขียน extension phpBB อยากทราบวิธีการบันทึกข้อมูลลงมากกว่า 2 ตาราง

โดย pnut » 15/12/2016 2:32 pm

ผมเขียนตามตัวอย่างแล้ว ก็ มันขึ้นว่า INSERT phpbb_m_map_diagseat (id_diagseat) VALUES (0)

Re: ผมเขียน extension phpBB อยากทราบวิธีการบันทึกข้อมูลลงมากกว่า 2 ตาราง

โดย pnut » 15/12/2016 2:26 pm

มีวิธีอื่นไหมครับที่จะสามารถบันทึกข้อมูลลง บันทึกข้อมูลลงมากกว่า 2 ตาราง

Re: ผมเขียน extension phpBB อยากทราบวิธีการบันทึกข้อมูลลงมากกว่า 2 ตาราง

โดย thatsawan » 15/12/2016 2:22 pm

ลองเรียงลำดับ Code ตามที่บอกข้างต้นก่อน

Re: ผมเขียน extension phpBB อยากทราบวิธีการบันทึกข้อมูลลงมากกว่า 2 ตาราง

โดย pnut » 15/12/2016 6:11 am

ผมเขียนโค้ดไว้แบบนี้
$name_causative = request_var('name_causative', '', true);
$classification = request_var('classification', '', true);
$disease_name_thai = request_var('disease_name_thai', '', true);
$name_picter = request_var('name_picter', '', true);
$sql_ary = array(
'name_causative' => $name_causative,
'classification' => $classification,
'related_diseases' => $disease_name_thai,
'name_picter' => $name_picter,
);
$sql_ary2 = array(
'id_diagseat' => $id,


);
if ($id) {
$sql = ' UPDATE ' . $table_prefix . 'm_causative SET ' . $db->sql_build_array('UPDATE', $sql_ary) . ' WHERE id = ' . $id;
$db->sql_query($sql);
meta_refresh(2, $this->u_action);
trigger_error($user->lang['SHOW_UPDATE'] . adm_back_link($this->u_action));
} else {
$sql = ' INSERT ' . $table_prefix . 'm_causative ' . $db->sql_build_array('INSERT', $sql_ary);
$db->sql_query($sql);
$id = $db->sql_nextid();

$sql = ' INSERT ' . $table_prefix . 'm_map_diagseat ' . $db->sql_build_array('INSERT',$sql_ary2);
echo $sql;
$db->sql_query($sql);
meta_refresh(2, $this->u_action);
trigger_error($user->lang['SHOW_INSERT'] . adm_back_link($this->u_action));
}

Re: ผมเขียน extension phpBB อยากทราบวิธีการบันทึกข้อมูลลงมากกว่า 2 ตาราง

โดย pnut » 15/12/2016 1:19 am

มันขึ้นว่า INSERT phpbb_m_map_diagseat (id_diagseat) VALUES (0)

Re: ผมเขียน extension phpBB อยากทราบวิธีการบันทึกข้อมูลลงมากกว่า 2 ตาราง

โดย thatsawan » 15/12/2016 1:15 am

เขียนตามลำดับตามตัวอย่าง

ถ้าอันนี้ อยู่บน

โค้ด: เลือกทั้งหมด

$sql_ary2 = array(
'id_diagseat' => $id,

);
เเล้ว $id อยู่ข้างล่าง

โค้ด: เลือกทั้งหมด

$id = $db->sql_nextid();

ลอง Debug

โค้ด: เลือกทั้งหมด

 $sql = ' INSERT ' . $table_prefix . 'm_map_diagseat ' . $db->sql_build_array('INSERT', $sql_ary2 );
echo $sql; ดูว่าจะได้ค่า ID มั้ย

Re: ผมเขียน extension phpBB อยากทราบวิธีการบันทึกข้อมูลลงมากกว่า 2 ตาราง

โดย pnut » 15/12/2016 1:13 am

เเค้เปลี่ยนจากรับค่าจากฟอร์ม $name_causative = request_var('name_causative', '', true); มาเป็นค่าที่ได้เเค่ $id c
แบบนี้เหรอครับ $id;

Re: ผมเขียน extension phpBB อยากทราบวิธีการบันทึกข้อมูลลงมากกว่า 2 ตาราง

โดย pnut » 15/12/2016 12:42 am

เขียนแบบนี้เหรอครับ
$name_causative = request_var('name_causative', '', true);
$classification = request_var('classification', '', true);
$disease_name_thai = request_var('disease_name_thai', '', true);
$name_picter = request_var('name_picter', '', true);
$id = request_var('id', '', true);
$sql_ary = array(
'name_causative' => $name_causative,
'classification' => $classification,
'related_diseases' => $disease_name_thai,
'name_picter' => $name_picter,
);
$sql_ary2 = array(
'id_diagseat' => $id,

);
if ($id) {
$sql = ' UPDATE ' . $table_prefix . 'm_causative SET ' . $db->sql_build_array('UPDATE', $sql_ary) . ' WHERE id = ' . $id;
$db->sql_query($sql);
meta_refresh(2, $this->u_action);
trigger_error($user->lang['SHOW_UPDATE'] . adm_back_link($this->u_action));
} else {
$sql = ' INSERT ' . $table_prefix . 'm_causative ' . $db->sql_build_array('INSERT', $sql_ary);
$db->sql_query($sql);
$id = $db->sql_nextid();
$sql = ' INSERT ' . $table_prefix . 'm_map_diagseat ' . $db->sql_build_array('INSERT', $sql_ary2 );
$db->sql_query($sql);
meta_refresh(2, $this->u_action);
trigger_error($user->lang['SHOW_INSERT'] . adm_back_link($this->u_action));
}

Re: ผมเขียน extension phpBB อยากทราบวิธีการบันทึกข้อมูลลงมากกว่า 2 ตาราง

โดย thatsawan » 14/12/2016 11:38 pm

ดูจาก Code เช็ตนี้คือการจัดข้อมูลที่จะ insert เข้าตารางที่ 1

โค้ด: เลือกทั้งหมด

  $sql_ary = array(
                           
                            'name_causative' => $name_causative,
                            'classification' => $classification,
                            'related_diseases' => $disease_name_thai,
                            'name_picter' => $name_picter,
                        ); 

โค้ด: เลือกทั้งหมด

  $sql = ' INSERT ' . $table_prefix . 'm_causative ' . $db->sql_build_array('INSERT', $sql_ary);                           
                            $db->sql_query($sql);
 
ที่นี่ถ้าต้องการเอา ID ตารางที่ 1 มา

ให้ใช้

โค้ด: เลือกทั้งหมด

       $id = $db->sql_nextid();


ต่อไปเราก็มาเขียน Insert ตารางที่ 2
เเค้เปลี่ยนจากรับค่าจากฟอร์ม $name_causative = request_var('name_causative', '', true); มาเป็นค่าที่ได้เเค่ $id

หลังจากนั้นก็จัดข้อมูลเตรียม Insert ตารางที่ 2

โค้ด: เลือกทั้งหมด

  $sql_ary2 = array(
                           
                            'm_causative_id' => $id,//ID ที่ได้จากตารางที่ 1 
                            'xxxxxx' => $xxxxx,
                            'aaaaa' => $aaaa,
                            'wwww' => $wwww,
                        );

โค้ด: เลือกทั้งหมด

 $sql = ' INSERT ' . $table_prefix . 'm_map_diagseat ' . $db->sql_build_array('INSERT', $sql_ary2 );

ปล. ดูเเล้วยังไม่เข้าใจว่าตัวเองต้องการทำอะไร ลองมองภาพให้ออกก่อนว่าจะทำอะไรเเล้วค่อยมาดู Code

ข้างบน