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,037

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



 

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 : 4510 Reply : 5
 

 

No. 1



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



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


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

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

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

Code (PHP)
<?php 
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Ledger extends CI_Controller {
	private $ss;
	public function index(){
		$this->load->library('session');
		$this->ss=(array)$this->session->userdata('profile');
		if(!isset($ss['id'])) exit('No found session id '); //exit('No direct script access allowed');
		if(!isset($_REQUEST['run'])) exit('No found request run'); // exit('No direct script access allowed');
		$rq=$_REQUEST;
		switch($rq['run']){
			case 'save_main': $this->save_main( $rq ); break;
			case 'save_group': $this->save_group( $rq ); break;
			case 'save_ledger': $this->save_ledger( $rq ); break;
			case 'test': echo 'TEST';
		}
	}
	private function save_main($rq){
		if( $rq['m_id']!=='insert'){
			$id=intval($rq['m_id']); $where = "m_id = $id"; 
			$str = $this->db->update_string('acc_ledger_main', $rq['ro'], $where);		
			$this->db->query($str);
		}else{
			$ro=$rq['ro'];
			if($ro['main_id']>''){
				$ro['user_id']=$this->ss['id'];
				$str = $this->db->insert_string('acc_ledger_main', $ro );
				$this->db->query($str); 
			}else{
				$str='INSERT INTO acc_ledger_main '.
					'SELECT null, ?, max(main_id) + 1, ? , ? '.
					'FROM acc_ledger_main where user_id='.$ss['id'];
				$this->db->query($str, array($this->ss['id'], $ro['main_name'], $ro['main_is_cr']));
			}
			$id = $this->db->insert_id();
		}
		$rs=$this->db->query('select * from acc_ledger_main where m_id='.$id); 
		$row=$rs->result_array();
		echo json_encode( array( 'type'=>'complete', 'id'=>$id, 'str'=>$str, 'ro'=>$row[0] ) ); 
	}
	private function save_group( $rq ){
		if( $rq['id']!=='insert'){
			$id=intval($rq['id']);
			$where = "g_id = $id"; 
			$str = $this->db->update_string('acc_ledger_grouup', $rq['ro'], $where); 
			$this->db->query($str);
		}else{
			$str = $this->db->insert_string('acc_ledger_grouup', $rq['ro'] );
			$this->db->query($str); $id = $this->db->insert_id();
		}
		echo json_encode( array( 'type'=>'complete', 'id'=>$id, 'str'=>$str ) ); 
	}
	private function save_ledger( $rq ){
		if( $rq['id']!=='insert'){
			$id=intval($rq['id']);
			$where = "id = $id"; 
			$str = $this->db->update_string('acc_ledger', $rq['ro'], $where); 
			$this->db->query($str);
		}else{
			$str = $this->db->insert_string('acc_ledger', $rq['ro'] ); 
			$this->db->query($str); $id = $this->db->insert_id();
		}
		echo json_encode( array( 'type'=>'complete', 'id'=>$id, 'str'=>$str ) );
	}
}
?>









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


 

No. 2



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



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


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

Code
<?php
class Member extends CI_CONTROLLER
{
    public function __construct()
    {
        parent::__construct();
        $this->load->model("member_model","member");
        $this->load->library("form_validation");
    }
    public function index()
    {
        //$this->rs = $this->member->getall();
        $this->load->view("member/index");
    }
    public function create()
    {
        $config = array(
            array(
                "field"=>"name",
                "label"=>"ชื่อ",
                "rules"=>"required"
            ),
            array(
                "field"=>"surname",
                "label"=>"นามสกุล",
                "rules"=>"required"
            ),
            array(
                "field"=>"email",
                "label"=>"อีเมล์",
                "rules"=>"required|valid_email|callback_check_exists_email"
            )
        );

        $this->form_validation->set_rules($config);

        if($this->form_validation->run()==FALSE)
        {
            $this->load->view("member/create");
        }else
        {
        }
    }
    public function check_exists_email($email){
        $check = $this->member->findemail($email);
        if($check)
        {
            return TRUE;
        }else{
            $this->form_validation->set_message("check_exists_email","%s มีข้อมูลอยู่แล้ว");
            return FALSE;
        }
    }

    public function check_exists_email_edit($email,$id){
        $check = $this->member->findemail_edit($email,$id);
        if($check)
        {
            return TRUE;
        }else{
            $this->form_validation->set_message("check_exists_email_edit","%s มีข้อมูลอยู่แล้ว");
            return FALSE;
        }
    }
}


Code
<!doctype html>
<html lang="th">
<head>
    <meta charset="utf-8"/>
    <title>MEMBER</title>
</head>
<body>

<h1>MEMBER</h1>

<table>
    <thead>
        <tr>
            <th>No</th>
            <th>ชื่อ</th>
            <th>นามสกุล </th>
            <th>Email</th>
        </tr>
    </thead>
    <tbody>
        <?php if(count($rs)>0):
            $no = 1;
        ?>
            <?php foreach($rs as $r):?>
                <tr>
                    <td><?php echo $no;?></td>
                    <td><?php echo $r->name;?></td>
                    <td><?php echo $r->surname;?></td>
                    <td><?php echo $r->email;?></td>
                </tr>
            <?php
                $no++;
            endforeach;?>
        <?php endif;?>
    </tbody>
</table>

<?php echo validation_errors(); ?>

<?php echo form_open("");?>

<table>
    <tr>
        <td>Name</td>
        <td><input type='text' name='name' value="<?php echo set_value("name");?>"/></td>
    </tr>

    <tr>
        <td>Surname</td>
        <td><input type='text' name='surname' value="<?php echo set_value("surname");?>"/></td>
    </tr>

    <tr>
        <td>Email</td>
        <td><input type='text' name='email' value="<?php echo set_value("email");?>"/></td>
    </tr>

    <tr>
        <td>&nbsp;</td>
        <td><input type='submit' name='submit' value="Save"/></td>
    </tr>
</table>

<?php echo form_close();?>


</body>
</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)
<?php 
class manage extends CI_Controller
{
	public function __Construct()
	{
		parent::__Construct();
		$this->load->model('user_model','user');
	}
	public function index()
	{
		$var['rs'] = $this->user->get_all();
		$this->load->view('user/index',$var);
	}
	public function inser_user()
	{
		$ar = array(
			'name' => $this->input->post('fname')
		);	
		if($this->user->insert($ar))
		{
			redirect('manage/index');
		}
	}	
}
?>






Model

Code (PHP)
<?php
class user_model extends CI_Model
{
	public function get_all()
	{
		return $this->db->get('tb_user')->result();
	}
	public function insert($ar)
	{
		if(!empty($ar)){
			return $this->db->insert('tb_user',$ar);
		}	
	}
}
?>




View

Code (PHP)
<html>
	<head>
		<title>Hello</title>
	<head/>
	<body>
		<table>
			<thead>
				<td>Name</td>
			</thead>
			<tbody>
				<?php if(!empty($rs)):?>
					<?php foreach($rs as $data):?>
					<tr>
						<td><?php echo $data->name;?></td>
					</tr>
					<?php endforeach;?>
				<?php :else:?>
					<td>--No Data--</td>
				<?php endif;?>
			</tbody>
		</table>
		<hr>
		<?php echo form_open('manage/insert_user');?>
			<input type="text" name="fname">
			<input type="submit" value="save">
		<?php echo form_close();?>
	</body>
</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 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

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