1. Codeigniter Framework (CodeIgniter Framework Tutorial) Basic Tutorials of Codeigniter Framework
  2. কোডইগনাইটার ইনস্টল (CodeIgniter Install Tutorial in Bangla)
  3. How to create First Application in CodeIgniter
  4. কোডইগনাইটারের URL স্ট্রাকচার (structure of codeigniter)
  5. Codeigniter দিয়ে query করা এবং result দেখা (CI Query & Show Results)
  6. Database থেকে Data দেখা (CI Fetch Data from Database)
  7. Model তৈরী এবং কন্ট্রোলারে Access (Create Model & Access in Controller)
  8. Codeigniter দিয়ে ডেটাবেসে data ঢুকানো (CodeIgniter Insert Data to Database)
  9. Form দিয়ে ডেটাবেসের data সম্পাদনা (Data Edit in Database Via Form | Codeigniter Tutorials)
  10. ডেটাবেসের data delete (Data Delete in Database | Codeigniter Tutorials) | SP Foundationbd
  11. Form Validation টিউটোরিয়াল (CI Form Validation Tutorial | Codeigniter Tutorials) | SP Foundation
  12. Form validation tutorials (CI Form Validation Tutorial) - আরও উন্নত validation
  13. Codeigniter bootstrap integration এবং best প্রাকটিস | SP Foundationbd
  14. Codeigniter পেজিনেশন Tutorials (CodeIgniter Pagination Tutorial) | SP Foundationbd
  15. কোডইগনাইটার pagination tutorials (CodeIgniter Pagination Tutorial) - ২য় পদ্ধতিতে pagination
  16. Codeigniter সেশন Management (Session Management CodeIgniter) part one
  17. Codeigniter session ম্যানেজমেন্ট (Session Management CodeIgniter) - সেশন ড্রাইভার part two
  18. কোডইগনাইটার file আপলোড (CodeIgniter File Upload)
  19. কোডইগনাইটার Ajax টিউটোরিয়াল (CodeIgniter Ajax Tutorial) | SP Foundationbd
  20. কোডইগনাইটার URI রাউটিং টিউটোরিয়াল (CodeIgniter URI Routing Bangla Tutorials) | SP Foundationbd
  21. কোডইগনাইটারে একসাথে একাধিক ডেটাবেস ব্যবহার (Use Multiple Database Together in CodeIgniter)

Form দিয়ে ডেটাবেসের data সম্পাদনা (Data Edit in Database Via Form | Codeigniter Tutorials)

যে form দিয়ে ডেটাবেসে input দিলাম সেটা দিয়েই Edit করা যাবে অর্থ্যাৎ একই ভিউ ফাইল ব্যবহার করব। শুধু নতুন একটি মেথড ব্যবহার করব নাম edit, আপনি মেথডের নাম ইচ্ছেমত দিতে পারবেন। প্রথমেই ভিউ ফাইলটি দেখুন আগের টিউটোরিয়ালের "create.php" তবে সামান্য পরিবর্তন আছে (তবে এই পরিবর্তন এমনভাবে করব যাতে create ফর্মের বা একশনের কোন সমস্যা না হয়)

আরেকটা জরুরী কথা বলে রাখি তা হল index মেথডে যেখানে আমরা টেবিলটির ডেটাগুলি তুলে এনে দেখার কোড লিখেছিলাম সেখানে প্রতিটি row তে একটি Edit লিংক যোগ করব যে লিংকে ক্লিক করলে সংশ্লিষ্ট row টির এডিট ফর্ম আসবে। নিচে পুরো প্রজেক্টের পরিবর্তিত ফাইলগুলির ডাউনলোড লিংক আছে। যাই হোক এখন index মেথড রান করালে নিচের মত পাবেন।

এবার Edit লিংকে ক্লিক করলে যে view ফাইলটি load হবে সেটার code টুকু দেখে নিন।

ভিউ ফাইল (spfoundationbd/application/views/create.php)

01.<?php defined('BASEPATH') OR exit('No direct script access allowed');?>

02.<html>

03.<head>

04.<title><?php echo $title; ?></title>

05.</head>

06.<body>

07.<form action="<?php echo $action;?>" method="post">

08.<p>Username : <input type="text" name="username" value="<?php echo isset($users[0]['username']) ? $users[0]['username']: '';?>" required/></p>

09.<p>Email : <input type="text" name="email" value="<?php echo isset($users[0]['email']) ? $users[0]['email']: '';?>" required/></p>

10.About <textarea rows="8" name="about"><?php echo isset($users[0]['about']) ? $users[0]['about']: '';?></textarea>

11.<input type="hidden" name="id" value="<?php echo isset($users[0]['id']) ? $users[0]['id']: '';?>"/>

12.<p><input type="submit" name="submit" value="<?php echo $button;?>"/></p>

13.</form>

14.</body>

15.</html>

 ব্যাখ্যা: ৭ নম্বর লাইনে $action একটি variable দিয়েছি এটার মান ঠিক করা হবে কন্ট্রোলারে, যদি create method থেকে আসে তাহলে URL একরকম হবে অর্থ্যাৎ একশন একরকম হবে আর edit method থেকে আসলে আরেক রকম। edit মেথডে কেমন URL হবে এটা নিচের কোডে দেখুন (site_url('users/edit'))। একইভাবে ১২ নম্বর লাইনে $button এর মান মেথডভেদে ঠিক করেছি। isset() ফাংশন দিয়ে প্রতিটি ইনপুট ফিল্ডের value এর মান দেখুন চেকিং করে echo করা হয়েছে। এটার কারনে যখন এই ফাইলটিই create মেথডে ব্যবহার তখন কোন এরর দেখাবেনা কেননা isset() দিয়ে দেখবে $users ভেরিয়েবল নামে কিছু নেই তাই ফাকা মান value তে বসবে। আর যখন edit মেথডে এই ভিউ ফাইল থাকবে তখন $users এ মান পাবে সুতরাং তখন সংশ্লিষ্ট কলামের মান দেখাবে।

উপরে ১১ নম্বর লাইনে দেখুন একটি হিডেন ফিল্ড আছে এখানে row টির id  value তে থাকবে। এটা দিয়ে ডেটাবেসে update করব।

** এই টিউটোরিয়ালে আগের tutorials থেকে code সুসজ্জিত করে লেখা হয়েছে যেমন আগে $data['title'] এভাবে $data অ্যারের একটা একটা করে ইনডেক্স দিয়ে সেখান মান এসাইন করেছিলাম আর এখন $data = array(); এভাবে এক অ্যারেতেই সব মান নিচ্ছি এতে কোড কমে আসল এবং সুসজ্জিত হল। যেমন নিচের ৪-৯ নম্বর লাইন পর্যন্ত এভাবে লেখা যেত

$data['title'] = 'Edit a User';

$data['action'] = site_url('users/edit');   ... ইত্যাদি

নিচের মেথডটি কপি করে Users কন্ট্রোলারে দিয়ে যেকোন Edit লিংকে click করলে (যেমন http://localhost/ spfoundationbd /index.php/users/edit/2) নিচের মত এডিট ফর্ম পাবেন

এবার Users কন্ট্রোলারের edit মেথড (spfoundationbd /application/controllers/Users.php)

01.public function edit($id = FALSE) {

02.if ($id != '') {

03.$user_id = (int) $id;

04.$data = array(

05.'title' => 'Edit a User',

06.'action' => site_url('users/edit'),

07.'users' => $this->prime_model->get_data('users', 'id', $user_id),

08.'button' => 'Update'

09.);

10.if (count($data['users']) < 1) {

11.redirect('users');

12.}

13.}

14.if ($this->input->post('submit')) {

15.$user_id = (int) $this->input->post('id');

16.$username = $this->input->post('username', TRUE);

17.$email = $this->input->post('email', TRUE);

18.$about = $this->input->post('about', TRUE);

19.$user = array(

20.'username' => $username,

21.'email' => $email,

22.'about' => $about

23.);

24.$this->db->where('id', $user_id)->update('users', $user);

25.redirect('users');

26.}

27.$this->load->view('create', $data);

28.}

 ব্যাখ্যা: $id = FALSE দিয়েছি কারন $id শুধু তখনি থাকবে যখন URL দিয়ে এডিট করতে আসবে যেমন ("http://localhost/users/index.php/edit/2" ) অর্থ্যাৎ $id এখানে অপশনাল। ইচ্ছে করেই অপশনাল রেখেছি এতে করে এই মেথড দিয়েই সাবমিটের কাজ হবে যখন এডিট করে সাবমিট করবে। কোডইগনাইটার এই $id টি নিবে URL থেকে, যেহেতু সাবমিটের একশন রেখেছি "http://localhost/users/index.php/edit" সুতরাং সাবমিটের সময় $id না থাকার পরেও কোন এরর দেখাবেনা।

১০ নম্বর লাইনে চেক করেছি যে আইডি দিয়ে এডিট করতে এসেছে সেই আইডি দিয়ে আসলে কোন ইউজার আছে কিনা। count() ফাংশন $data['users'] অ্যারেটিতে কয়টি ডেটা আছে সেটা গুনে সংখ্যাটি রিটার্ন করে। যদি ১ এর ছোট হয় মানে কোন ইউজার না থাকে তাহলে redirect() ব্যবহার করে আবার Users কন্ট্রোলারের index মেথডে নিয়ে যাবে।

এরপর check করেছি form সাবমিট করেছে কিনা, যদি করে তাহলে ১৫-২৫ নম্বর লাইন পর্যন্ত এক্সিকিউট হবে। $this->db->where() এখানে where() মেথডে কোন কলাম ধরে update করতে চাই সেটার নাম যেমন আমি দিয়েছি id (১ম প্যারামিটার) আর $user_id হল (২য় প্যারামিটার) ১৫ নম্বর লাইন থেকে পাওয়া row টির আইডি যেটা হিডেন ফিল্ডে ছিল।  "->" চিহ্ন দিয়ে where, update একটার পিছে আরেকটা লিখেছি এটাকে বলে মেথড চেইনিং। এভাবে না দিয়ে $this->db->where('id', $user_id);$this->db->update(('users', $user); এভাবে দিলেও একি কাজ হবে। সবশেষে আপডেট হলে redirect করে আবার index মেথডে নিয়ে যাবে। get(), where() এসব নিয়ে কোয়েরি বিল্ডার টিউটোরিয়াল আরও বিস্তারিত আছে

 

 

 

মডেলের get_data() মেথডটি নতুন করে লিখেছি। এই মেথডে এবার নতুন দুটি প্যারামিটার দিয়েছি $id_name এবং $id, দুটোই optional। $id_name এ দিতে হবে যে কলাম দিয়ে ডেটাবেস থেকে row extract করতে চাই সেটার নাম আর $id তে দিতে হবে সম্ভাব্য মান। উপরে কন্ট্রোলারে দেখুন এই মেথডটি কিভাবে কল করেছি $this->prime_model->get_data('users', 'id', $user_id) মানে users টেবিলের ঐ ডেটা বা row টি আনবে যেটার id = $user_id (এই $user_id ই হল URL থেকে নেয়া edit এর পর দেয়া সংখ্যাটি)।

মডেল  (spfoundationbd /application/models/Prime_model.php)

1.public function get_data($table_name, $id_name = FALSE, $id = FALSE) {

2.if ($id_name) {

3.$query = $this->db->where($id_name, $id);

4.}

5.$query = $this->db->get($table_name);

6.return $query->result_array();

7.}

এখন পর্যন্ত করা কন্ট্রোলার, মডেল এবং ভিউ file download করুন।

একটা ভাল পরামর্শ দেই, এত কোড দেখে হয়রান হইয়েন না।  আমারতো মনে হয় এসব লেখা না পড়ে শুধু কোডটুকু ডাউনলোড করে ভাল করে দেখুন, বুঝুন এবং রান করান তাহলেই হবে। এরপরও না বুঝলে ফোরাম আছে।