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

พูดคุย phpBB3, SMF ปัญหา การติดตั้ง ปัญหา การลง Mod การแก้ไข หน้าตาบอร์ด การใช้งาน Joomla 1.5, 1.6, 1.7, 2.5 ,3.x และเร็วๆนี้ Joomla จะออกเวอร์ชั่น 4.0 การใช้งาน wordpress และ CMS อื่นๆ
การตั้งคำถาม ควรระบุรุ่นที่ใช้ ในการตั้งคำตามด้วย นะ เช่น SMF 1.1.4 หรือ SMF2.0 Joomla 1.0 joomla 3.8 และ รายละเอียดของ 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 » 14/12/2016 3:59 pm

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

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
โพสต์: 12694
ลงทะเบียนเมื่อ: 31/03/2014 10:02 am
ติดต่อ:

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

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

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));
}

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

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

โพสต์โดย pnut » 15/12/2016 1:13 am

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

ภาพประจำตัวสมาชิก
thatsawan
PHP VIP Members
PHP VIP Members
โพสต์: 12694
ลงทะเบียนเมื่อ: 31/03/2014 10:02 am
ติดต่อ:

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 มั้ย

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

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

โพสต์โดย pnut » 15/12/2016 1:19 am

มันขึ้นว่า 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 » 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));
}


ย้อนกลับไปยัง

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

กำลังดูบอร์ดนี้: 1 และ บุคคลทั่วไป 0 ท่าน