ผมเขียน 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

Forum rules
คำถามหมวดนี้ ควรระบุ รายละเอียดของ Server OS, เวอร์ชั่น ของ PHP, CMS ที่ท่านใช้
รวมถึง Hosting หรือ Control Panel Hosting
User avatar
pnut
PHP Super Member
PHP Super Member
Posts: 488
Joined: 08/08/2016 10:48 am

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

Post by pnut » 14/12/2016 3:59 pm

Code: Select all

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
Posts: 21146
Joined: 31/03/2014 10:02 am
Contact:

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

Post by thatsawan » 14/12/2016 11:38 pm

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

Code: Select all

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

Code: Select all

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

ให้ใช้

Code: Select all

       $id = $db->sql_nextid();


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

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

Code: Select all

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

Code: Select all

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

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

User avatar
pnut
PHP Super Member
PHP Super Member
Posts: 488
Joined: 08/08/2016 10:48 am

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

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

User avatar
pnut
PHP Super Member
PHP Super Member
Posts: 488
Joined: 08/08/2016 10:48 am

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

Post by pnut » 15/12/2016 1:13 am

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

thatsawan
PHP VIP Members
PHP VIP Members
Posts: 21146
Joined: 31/03/2014 10:02 am
Contact:

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

Post by thatsawan » 15/12/2016 1:15 am

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

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

Code: Select all

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

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

Code: Select all

$id = $db->sql_nextid();

ลอง Debug

Code: Select all

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

User avatar
pnut
PHP Super Member
PHP Super Member
Posts: 488
Joined: 08/08/2016 10:48 am

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

Post by pnut » 15/12/2016 1:19 am

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

User avatar
pnut
PHP Super Member
PHP Super Member
Posts: 488
Joined: 08/08/2016 10:48 am

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

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

Post Reply
  • Similar Topics
    Replies
    Views
    Last post

Return to “ปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS, CRM”

Who is online

Users browsing this forum: No registered users and 4 guests