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

พูดคุย phpBB3, SMF ปัญหา การติดตั้ง ปัญหา การลง Mod การแก้ไข หน้าตาบอร์ด การใช้งาน Joomla 1.5, 1.6, 1.7, 2.5 ,3.x รวมถึง Joomla 4 การใช้งาน wordpress และ CMS อื่นๆ
การตั้งคำถาม ควรระบุรุ่นที่ใช้ ในการตั้งคำตามด้วย นะ เช่น SMF 1.1.4 หรือ SMF2.0, OpenERP, Odoo และ รายละเอียดของ server OS, php เวอร์ชั่นไหน ฐานข้อมูลอะไร

Moderator: mindphp

กฎการใช้บอร์ด
คำถามหมวดนี้ ควรระบุ รายละเอียดของ Server OS, เวอร์ชั่น ของ PHP, CMS ที่ท่านใช้
รวมถึง Hosting หรือ Control Panel Hosting
ภาพประจำตัวสมาชิก
pnut
PHP Super Member
PHP Super Member
โพสต์: 488
ลงทะเบียนเมื่อ: 08/08/2016 10:48 am

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

โพสต์ที่ยังไม่ได้อ่าน โดย pnut »

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

case 'insert' :
                       
                        $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,
                        );
                        $user_ary = 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', $user_ary);
                            
                                                       
                                                      
                            
                        
                            meta_refresh(2, $this->u_action);
                            trigger_error($user->lang['SHOW_INSERT'] . adm_back_link($this->u_action));
                        }
พอบันทึกลงตารางแล้ว ในตารางฐานข้อมูลก็ขึ้น NULL อย่างเดียวเป็นเพราะอะไรครับ
ภาพประจำตัวสมาชิก
thatsawan
PHP VIP Members
PHP VIP Members
โพสต์: 28508
ลงทะเบียนเมื่อ: 31/03/2014 10:02 am
ติดต่อ:

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

โพสต์ที่ยังไม่ได้อ่าน โดย thatsawan »

ดูจาก 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
ภาพประจำตัวสมาชิก
pnut
PHP Super Member
PHP Super Member
โพสต์: 488
ลงทะเบียนเมื่อ: 08/08/2016 10:48 am

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

โพสต์ที่ยังไม่ได้อ่าน โดย pnut »

เขียนแบบนี้เหรอครับ
$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));
}
ภาพประจำตัวสมาชิก
pnut
PHP Super Member
PHP Super Member
โพสต์: 488
ลงทะเบียนเมื่อ: 08/08/2016 10:48 am

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

โพสต์ที่ยังไม่ได้อ่าน โดย pnut »

เเค้เปลี่ยนจากรับค่าจากฟอร์ม $name_causative = request_var('name_causative', '', true); มาเป็นค่าที่ได้เเค่ $id c
แบบนี้เหรอครับ $id;
ภาพประจำตัวสมาชิก
thatsawan
PHP VIP Members
PHP VIP Members
โพสต์: 28508
ลงทะเบียนเมื่อ: 31/03/2014 10:02 am
ติดต่อ:

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

โพสต์ที่ยังไม่ได้อ่าน โดย thatsawan »

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

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

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

$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 มั้ย
ภาพประจำตัวสมาชิก
pnut
PHP Super Member
PHP Super Member
โพสต์: 488
ลงทะเบียนเมื่อ: 08/08/2016 10:48 am

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

โพสต์ที่ยังไม่ได้อ่าน โดย pnut »

มันขึ้นว่า INSERT phpbb_m_map_diagseat (id_diagseat) VALUES (0)
ภาพประจำตัวสมาชิก
pnut
PHP Super Member
PHP Super Member
โพสต์: 488
ลงทะเบียนเมื่อ: 08/08/2016 10:48 am

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

โพสต์ที่ยังไม่ได้อ่าน โดย pnut »

ผมเขียนโค้ดไว้แบบนี้
$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));
}
ภาพประจำตัวสมาชิก
thatsawan
PHP VIP Members
PHP VIP Members
โพสต์: 28508
ลงทะเบียนเมื่อ: 31/03/2014 10:02 am
ติดต่อ:

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

โพสต์ที่ยังไม่ได้อ่าน โดย thatsawan »

ลองเรียงลำดับ Code ตามที่บอกข้างต้นก่อน
ภาพประจำตัวสมาชิก
pnut
PHP Super Member
PHP Super Member
โพสต์: 488
ลงทะเบียนเมื่อ: 08/08/2016 10:48 am

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

โพสต์ที่ยังไม่ได้อ่าน โดย pnut »

มีวิธีอื่นไหมครับที่จะสามารถบันทึกข้อมูลลง บันทึกข้อมูลลงมากกว่า 2 ตาราง
ตอบกลับโพส
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 91