Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,038

HOME > PHP > PHP Forum > codeigniter Insert ข้อมูลในหน้าเดียวกันยังไงครับ


[PHP] codeigniter Insert ข้อมูลในหน้าเดียวกันยังไงครับ

 
Topic : 114486



โพสกระทู้ ( 84 )
บทความ ( 0 )



สถานะออฟไลน์



ผมสร้างไฟล์ view ไว้ 1 ไฟล์ครับ และ code จะอยู่ภายใต้ form_open

ในไฟล์ controller ก็มี แค่ 1 ไฟล์ จะมีฟังก์ชัน

public function index ในฟังก์ชั่นนี้ผมเอาไว้เรียกหน้า view และส่งค่าที่ query ได้จาก Database เพื่อไปโชว์หน้าเว็บครับ
public function insert เอาไว้ insert ข้อมูลครับ

คำถามครับ ผมสร้างปุ่มขึ้นมา ให้อยู่ภายใต้ form_open คือปุ่ม insert ข้อมูล พอกดแล้วให้ไปทำที่ public function insert แต่ทำไม มันถึงไม่ตอบสนองละครับ ไม่มีอะไรเกิดขึ้นเลย ทั้งๆในหน้า view ผมประกาศ <?php echo validation_errors(); ?> เอาไว้ คือถ้าช่องข้อมูลไหน ว่าง มันต้องขึ้นข้อความอะไรมาสักอย่าง

code ปุ่มประมาณนี้ <input type="submit" name="submit" value="INSERT">



Tag : PHP, MySQL, CodeIgniter Framework

Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2015-02-17 19:13:03 By : tatalas View : 4542 Reply : 5
 

 

No. 1



โพสกระทู้ ( 9,590 )
บทความ ( 2 )



สถานะออฟไลน์


เอาหัว form มาดูด้วยครับ ประกาศไว้อย่างไร
และ code ตัวรับ ทำไว้อย่างไร

ข้อมูลน้อยเกินไปที่จะตอบครับ ถ้าจะตอบก็เป็นการเดาล้วนๆล่ะครับ
ว่าน่าจะเป็นอยา่งโน้นอย่างนี้อย่างนั้น

หรือจะเอาไปเป็นตัวอย่างก็ได้ครับ อันนี้ผมทำเอาไว้ เป็นส่วน รับ ajax
มา insert update ข้อมูล และส่งค่ากลับไป
ไม่รู้ว่าจะตรงตามต้องการไหม

Code (PHP)
01.<?php
02.if ( ! defined('BASEPATH')) exit('No direct script access allowed');
03.class Ledger extends CI_Controller {
04.    private $ss;
05.    public function index(){
06.        $this->load->library('session');
07.        $this->ss=(array)$this->session->userdata('profile');
08.        if(!isset($ss['id'])) exit('No found session id '); //exit('No direct script access allowed');
09.        if(!isset($_REQUEST['run'])) exit('No found request run'); // exit('No direct script access allowed');
10.        $rq=$_REQUEST;
11.        switch($rq['run']){
12.            case 'save_main': $this->save_main( $rq ); break;
13.            case 'save_group': $this->save_group( $rq ); break;
14.            case 'save_ledger': $this->save_ledger( $rq ); break;
15.            case 'test': echo 'TEST';
16.        }
17.    }
18.    private function save_main($rq){
19.        if( $rq['m_id']!=='insert'){
20.            $id=intval($rq['m_id']); $where = "m_id = $id";
21.            $str = $this->db->update_string('acc_ledger_main', $rq['ro'], $where);       
22.            $this->db->query($str);
23.        }else{
24.            $ro=$rq['ro'];
25.            if($ro['main_id']>''){
26.                $ro['user_id']=$this->ss['id'];
27.                $str = $this->db->insert_string('acc_ledger_main', $ro );
28.                $this->db->query($str);
29.            }else{
30.                $str='INSERT INTO acc_ledger_main '.
31.                    'SELECT null, ?, max(main_id) + 1, ? , ? '.
32.                    'FROM acc_ledger_main where user_id='.$ss['id'];
33.                $this->db->query($str, array($this->ss['id'], $ro['main_name'], $ro['main_is_cr']));
34.            }
35.            $id = $this->db->insert_id();
36.        }
37.        $rs=$this->db->query('select * from acc_ledger_main where m_id='.$id);
38.        $row=$rs->result_array();
39.        echo json_encode( array( 'type'=>'complete', 'id'=>$id, 'str'=>$str, 'ro'=>$row[0] ) );
40.    }
41.    private function save_group( $rq ){
42.        if( $rq['id']!=='insert'){
43.            $id=intval($rq['id']);
44.            $where = "g_id = $id";
45.            $str = $this->db->update_string('acc_ledger_grouup', $rq['ro'], $where);
46.            $this->db->query($str);
47.        }else{
48.            $str = $this->db->insert_string('acc_ledger_grouup', $rq['ro'] );
49.            $this->db->query($str); $id = $this->db->insert_id();
50.        }
51.        echo json_encode( array( 'type'=>'complete', 'id'=>$id, 'str'=>$str ) );
52.    }
53.    private function save_ledger( $rq ){
54.        if( $rq['id']!=='insert'){
55.            $id=intval($rq['id']);
56.            $where = "id = $id";
57.            $str = $this->db->update_string('acc_ledger', $rq['ro'], $where);
58.            $this->db->query($str);
59.        }else{
60.            $str = $this->db->insert_string('acc_ledger', $rq['ro'] );
61.            $this->db->query($str); $id = $this->db->insert_id();
62.        }
63.        echo json_encode( array( 'type'=>'complete', 'id'=>$id, 'str'=>$str ) );
64.    }
65.}
66.?>



ประวัติการแก้ไข
2015-02-17 23:52:23
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-02-17 23:46:42 By : Chaidhanan
 

 

No. 2



โพสกระทู้ ( 84 )
บทความ ( 0 )



สถานะออฟไลน์


ประมาณนี้ครับ

Code
01.<?php
02.class Member extends CI_CONTROLLER
03.{
04.    public function __construct()
05.    {
06.        parent::__construct();
07.        $this->load->model("member_model","member");
08.        $this->load->library("form_validation");
09.    }
10.    public function index()
11.    {
12.        //$this->rs = $this->member->getall();
13.        $this->load->view("member/index");
14.    }
15.    public function create()
16.    {
17.        $config = array(
18.            array(
19.                "field"=>"name",
20.                "label"=>"ชื่อ",
21.                "rules"=>"required"
22.            ),
23.            array(
24.                "field"=>"surname",
25.                "label"=>"นามสกุล",
26.                "rules"=>"required"
27.            ),
28.            array(
29.                "field"=>"email",
30.                "label"=>"อีเมล์",
31.                "rules"=>"required|valid_email|callback_check_exists_email"
32.            )
33.        );
34. 
35.        $this->form_validation->set_rules($config);
36. 
37.        if($this->form_validation->run()==FALSE)
38.        {
39.            $this->load->view("member/create");
40.        }else
41.        {
42.        }
43.    }
44.    public function check_exists_email($email){
45.        $check = $this->member->findemail($email);
46.        if($check)
47.        {
48.            return TRUE;
49.        }else{
50.            $this->form_validation->set_message("check_exists_email","%s มีข้อมูลอยู่แล้ว");
51.            return FALSE;
52.        }
53.    }
54. 
55.    public function check_exists_email_edit($email,$id){
56.        $check = $this->member->findemail_edit($email,$id);
57.        if($check)
58.        {
59.            return TRUE;
60.        }else{
61.            $this->form_validation->set_message("check_exists_email_edit","%s มีข้อมูลอยู่แล้ว");
62.            return FALSE;
63.        }
64.    }
65.}


Code
01.<!doctype html>
02.<html lang="th">
03.<head>
04.    <meta charset="utf-8"/>
05.    <title>MEMBER</title>
06.</head>
07.<body>
08. 
09.<h1>MEMBER</h1>
10. 
11.<table>
12.    <thead>
13.        <tr>
14.            <th>No</th>
15.            <th>ชื่อ</th>
16.            <th>นามสกุล </th>
17.            <th>Email</th>
18.        </tr>
19.    </thead>
20.    <tbody>
21.        <?php if(count($rs)>0):
22.            $no = 1;
23.        ?>
24.            <?php foreach($rs as $r):?>
25.                <tr>
26.                    <td><?php echo $no;?></td>
27.                    <td><?php echo $r->name;?></td>
28.                    <td><?php echo $r->surname;?></td>
29.                    <td><?php echo $r->email;?></td>
30.                </tr>
31.            <?php
32.                $no++;
33.            endforeach;?>
34.        <?php endif;?>
35.    </tbody>
36.</table>
37. 
38.<?php echo validation_errors(); ?>
39. 
40.<?php echo form_open("");?>
41. 
42.<table>
43.    <tr>
44.        <td>Name</td>
45.        <td><input type='text' name='name' value="<?php echo set_value("name");?>"/></td>
46.    </tr>
47. 
48.    <tr>
49.        <td>Surname</td>
50.        <td><input type='text' name='surname' value="<?php echo set_value("surname");?>"/></td>
51.    </tr>
52. 
53.    <tr>
54.        <td>Email</td>
55.        <td><input type='text' name='email' value="<?php echo set_value("email");?>"/></td>
56.    </tr>
57. 
58.    <tr>
59.        <td>&nbsp;</td>
60.        <td><input type='submit' name='submit' value="Save"/></td>
61.    </tr>
62.</table>
63. 
64.<?php echo form_close();?>
65. 
66. 
67.</body>
68.</html>

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-02-18 09:04:21 By : tatalas
 

 

No. 3



โพสกระทู้ ( 84 )
บทความ ( 0 )



สถานะออฟไลน์


กดปุ่ม save แล้วไม่ตอบสนองเลยครับ

แต่พอย้ายไปอยู่คนละ view ดันกดได้ปกติ

พอจะมีทำให้มันรวมอยู่ในหน้าเดียวกัน และทำงานได้ไหมครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-02-18 09:05:41 By : tatalas
 

 

No. 4



โพสกระทู้ ( 342 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


ตอบคุณ : tatalas เมื่อวันที่ 2015-02-18 09:05:41
รายละเอียดของการตอบ ::
case 1:
---------
0. สมมติว่าโค้ดทำงานที่ member/index
1. view ที่ให้มา เดาว่าเป็น view member/index
2. เปิด form โล่งๆ ใน CI => action=member/index, method= post

จะ submit จนเม้าส์พัง member/index ก็ไม่ทำงานอะไรนอกเหนือจากโหลด view เดิม มาแสดง


case 2:
----------
0. สมมติว่าโค้ดทำงานที่ member/create
1. สมมติว่า view ที่ให้มา คือ view member/create
2. ทำงานครั้งแรก validations error 100% โหลด view member/create
3. form เปิดโล่ง ==> submit ที่ member/create, method=post
4. ถ้า submit form เปล่า ๆ หรือ ถ้าเจตนาให้ validations ไม่ผ่าน ก็ย้อนกลับไปดูข้อ 2 อีกที
5. ถ้าผ่าน required, valid email, check email (custom) ==> โค้ดไม่แสดงผลอะไรเลย

กรณีทำงานที่ member/create โค้ดไม่ตอบสนอง
เพราะเมื่อโหลดมาครั้งแรก validations ตรวจสอบก่อนทันที(ทุกครั้ง) ทำให้เข้าเงื่อนไข ไปโหลด member/create view ขึ้นมาใหม่ตลอด

ถามว่า "พอจะมีทำให้มันรวมอยู่ในหน้าเดียวกัน และทำงานได้ไหมครับ"
ตอบว่า "ได้ครับ"

แต่เบื้องต้น ให้ลองไล่แก้ตามที่แนะนำไปก่อน

แก้เสร็จแล้ว เดี๋ยวจะมาพูดถึงลำดับการวางโค้ดอีกที (best practice)


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-02-18 09:44:52 By : triplea
 

 

No. 5



โพสกระทู้ ( 120 )
บทความ ( 0 )



สถานะออฟไลน์


Controller

Code (PHP)
01.<?php
02.class manage extends CI_Controller
03.{
04.    public function __Construct()
05.    {
06.        parent::__Construct();
07.        $this->load->model('user_model','user');
08.    }
09.    public function index()
10.    {
11.        $var['rs'] = $this->user->get_all();
12.        $this->load->view('user/index',$var);
13.    }
14.    public function inser_user()
15.    {
16.        $ar = array(
17.            'name' => $this->input->post('fname')
18.        ); 
19.        if($this->user->insert($ar))
20.        {
21.            redirect('manage/index');
22.        }
23.    }  
24.}
25.?>






Model

Code (PHP)
01.<?php
02.class user_model extends CI_Model
03.{
04.    public function get_all()
05.    {
06.        return $this->db->get('tb_user')->result();
07.    }
08.    public function insert($ar)
09.    {
10.        if(!empty($ar)){
11.            return $this->db->insert('tb_user',$ar);
12.        }  
13.    }
14.}
15.?>




View

Code (PHP)
01.<html>
02.    <head>
03.        <title>Hello</title>
04.    <head/>
05.    <body>
06.        <table>
07.            <thead>
08.                <td>Name</td>
09.            </thead>
10.            <tbody>
11.                <?php if(!empty($rs)):?>
12.                    <?php foreach($rs as $data):?>
13.                    <tr>
14.                        <td><?php echo $data->name;?></td>
15.                    </tr>
16.                    <?php endforeach;?>
17.                <?php :else:?>
18.                    <td>--No Data--</td>
19.                <?php endif;?>
20.            </tbody>
21.        </table>
22.        <hr>
23.        <?php echo form_open('manage/insert_user');?>
24.            <input type="text" name="fname">
25.            <input type="submit" value="save">
26.        <?php echo form_close();?>
27.    </body>
28.</html>



ประวัติการแก้ไข
2015-02-18 11:00:18
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-02-18 10:52:39 By : tam78910
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : codeigniter Insert ข้อมูลในหน้าเดียวกันยังไงครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)





Load balance : Server 01
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2025 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่