Codeigniter
CodeIgniter Tutorials Collection at NetTuts+
Thursday, 16 December 2010 12:42
Nettuts+ က CodeIgniter Tutorials ေတြစုထားတဲ့ Post တစ္ခုျဖစ္ပါတယ္။ CodeIgniter သုံးေနသူေတြ အဖို႔ တကယ္ပဲ အသုံးဝင္မယ့္ စုစည္းမူပဲ ျဖစ္ပါတယ္။ စကားမစပ္ ကြၽန္ေတာ္ကေတာ့ scratch ကို CodeIgniter နဲ႔ ေရးရတာကို ေတာ္ေတာ္ေလးၾကိဳက္သြားျပီဗ်ာ။ ရုံးက Portal Project တစ္ခုက ready made ေတြနဲ႔ အဆင္မေျပလို႕ CodeIgniter နဲ႔ေရးလိုက္တာျပီးေတာ့မယ္။ ကြၽန္ေတာ္ေျပာခ်င္တာက စေရးတုန္းက အဲဒီ Nettuts+ Tutorials ေတြကို ဖတ္ျပီးေရးလိုက္တာေၾကာင့္ တကယ္ကို အဖိုးတန္ Tutorials ေတြပဲျဖစ္ပါတယ္။
XML Helper In CodeIgniter
Tuesday, 02 November 2010 16:44
ကြၽန္ေတာ္ CI Project မွာ XML File ႐ိုက္ျပီး တျခား application တစ္ခုကို data ထုတ္ေပးဖို႔ အေၾကာင္းဖန္လာပါတယ္။ CI မွာလည္း built in XML helper ရွိေသာ္လည္း ကြၽန္ေတာ္လိုခ်င္တဲ့ အတိုင္းသုံးလို႕ မရတာေၾကာင့္ Google မွာရွာရင္း ေဖြရင္းနဲ႔ တျခားသူ တစ္ေယာက္ ေရးထားျပီးသား XML helper ေလးကိုသြားေတြ႔တယ္ဗ်ာ။ သူ႕ helper ထဲမွာေတာ့ DOMDocument('1.0') ကိုသုံးျပီး XML File တစ္ခု အတြက္ လိုအပ္တာေတြ အားလုံးကို create လုပ္သြားတာကို ေတြ႔ရပါတယ္။ တကယ္ေတာ့ PHP DOMDocument Class ကိုသုံးထားတာ ျဖစ္တာေၾကာင့္ ကိုယ္လိုခ်င္တဲ့ function မပါရင္လည္း Reference Guide ကို ဒီမွာ ဖတ္ျပီး function ေတြထပ္ေပါင္းထည့္ ႏိုင္ပါတယ္။
Download Helper File
အရင္ဆုံး XML Helper ကို ဒီေနရာမွာ အရင္ download လုပ္ျပီး application >> helper ေအာက္ကို ေပါင္းထည့္လိုက္ပါ။
Create Controller File
ဒီ example မွာ controller file ေလးတစ္ခုနဲတင္ လုံေလာက္ပါတယ္။ ဒီ code ေလးကိုထည့္လိုက္ျပီ xml_test.php လို႕ အမည္ေပး လိုက္ပါမယ္။ <?php
Class Xml_test extends controller{
function Xml_test(){
parent::Controller();
}
function index(){
$this->load->helper('xml');
$dom = xml_dom();
$book = xml_add_child($dom, 'book');
//add element
xml_add_child($book, 'title', 'Hyperion');
$author = xml_add_child($book, 'author', 'Dan Simmons');
//add attribute
xml_add_attribute($author, 'birthdate', '1948-04-04');
xml_print($dom);
}
}
ဒီ code ကိုၾကည့္မယ္ ဆိုရင္ေတာ့ XML ရဲ႔ သေဘာေလးကို နားလည္ထားဖို႔ လိုပါတယ္။ ဒီမွာေတာ့ element နဲ႔ attribute ကိုသိမယ္ ဆိုရင္ ရပါတယ္။
Add Element
Element တစ္ခုကို ေပါင္းထည့္မယ္ ဆိုရင္ေတာ့ ဒီ function ကို အသုံးျပဳႏိုင္ပါတယ္။ xml_add_child($parent, $name, $value = NULL, $cdata = FALSE)
- parent: XML element
- name: string
- value: string
- cdata: boolean
Add Attribute
Attribute တစ္ခုကို ေပါင္းထည့္မယ္ ဆိုရင္ေတာ့ xml_add_attribute($node, $name, $value = NULL)
- node: XML element
- name: string
- value: string
ေနာက္ဆုံးျပန္ၾကည့္ခ်င္တယ္ ဆိုရင္ေတာ့ xml_print($dom, $return = FALSE)
ကိုသုံးသြားတာ ေတြ႔ႏိုင္ပါတယ္။ အဆင္ေျပမယ္လို႕ ထင္ပါတယ္။ မူရင္းကိုသြားဖတ္ခ်င္တယ္ ဆိုရင္လည္း ဒီ link မွာ ရွိပါတယ္။
Mail Library in CodeIgniter
Sunday, 17 October 2010 21:10
ကြ်န္ေတာ္ ဒီ POST ကေတာ့ CodeIgniter မွာ built in ရွိေနတဲ့ mail Library ကိုသံုးၿပီး email ဘယ္လိုပို႔မလဲဆိုတဲ့ Tutorial အေသးေလးတစ္ခုပဲ ျဖစ္ပါတယ္။ လက္ရွိ ကြ်န္ေတာ္ projects ေတြကို CI နဲ႔ပဲေရးေနေတာ့ ေခါင္းထဲမွာ ေရးစရာေတြ အမ်ားႀကီးရွိေပမယ့္ အခ်ိန္မရလို႔ ခ်မေရးႏိုင္ဘူးျဖစ္ေနတာကိုလည္း မေၾကနပ္ျဖစ္ေနမိတယ္။ ဘာပဲျဖစ္ျဖစ္ ကြ်န္ေတာ္ေျဖးေျဖးခ်င္း တစ္ခုခ်င္းစီ ျပန္ေရးပါမယ္။ ကြ်န္ေတာ္ CI POST တစ္ခုမွာ Email အေၾကာင္းေမးထားတာရွိလို႔ ဒီ email အေၾကာင္းေလးကို အရင္ေရးပါမယ္။
1. Creating Controller File
ကြ်န္ေတာ္ ဒီ example မွာ Contact Us Page ကိုေရးမယ္လို႔ စိတ္ကူထားတာေၾကာင့္ ဒီ Controller ကို contactus.php လို႔ပဲအမည္ ေပးလိုက္ပါမယ္။ ဒီ Code ေလးကို ေရးလိုက္ရေအာင္
<?php
class Contactus extends Controller {
function Contactus()
{
parent::Controller();
}
function index()
{
$this->load->view('contactus');
}
}
<?
2. Creating View File
ေနာက္တစ္ဆင့္အေနနဲ႔ View File ေလးကို create လုပ္ပါမယ္။ name ကိုေတာ့ contactus.php ကိုပဲေပးလိုက္ပါမယ္။
if ($this->session->flashdata('message')){
echo $this->session->flashdata('message');
}
?>
<? echo form_open('contactus/submit');?>
<table>
<tr>
<td>Subject*</td>
<td><input type="text" name="subject"></td>
</tr>
<tr>
<td>Your Name</td>
<td><input type="text" name="yourname"></td>
</tr>
<tr>
<td>Your email address</td>
<td><input type="text" name="youremail"></td>
</tr>
<tr>
<td>Your Message</td>
<td><textarea name="yourmessage"></textarea></td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" name="submit" value="Submit Message">
<input type="reset" name="reset" value="Reset">
</td>
</tr>
</table>
<? echo form_close(); ?>
ဒီ code ကေတာ့ simple HTML Form တစ္ခုျဖစ္ၿပီးေတာ့ Form submit လုပ္တဲ့အခါ contactus controller ထဲက submit Function ကိုသြားပါလိမ့္မယ္။ ဒါေၾကာင့္ ကြ်န္ေတာ္တို႔ေရးထားတဲ့ contactus controller ထဲမွာ submit Function သြားထည့္ရေအာင္ ....
<?php
3. Edit to Controller File
contactus.php ဆိုတဲ့ controller File ေလးကို ဒီလိုေလးျပင္ေပး လိုက္ရေအာင္္။
class Contactus extends Controller {
function Contactus()
{
parent::Controller();
}
function index()
{
$this->load->view('contactus');
}
function submit(){
//get value from html form
$subject = $this->input->post('subject');
$yourname = $this->input->post('yourname');
$youremail = $this->input->post('youremail');
$yourmessage = $this->input->post('yourmessage');
//Load mail lib:
$this->load->library('email');
//To send the mail with CI mail lib:
$this->email->from('pphmit@gmail.com', 'Zack');
$this->email->to('pyephyohan@gmail.com');
$this->email->subject($subject);
$this->email->message($yourmessage);
$this->email->send();
$this->session->set_flashdata('message', 'Your messsage has been sent.');
redirect('contactus');
}
}
ဒီ code ေလးကို ေလ့လာၾကည့္မယ္ ဆိုရင္ေတာ့
- $this->load->library('email'); (ဒါေတာ့ CI mail Library ကို Load လုပ္ထားတာျဖစ္ပါတယ္။)
- CI mail Library ကေန support လုပ္ထားတဲ့ Function ေတြျဖစ္တဲ့ from, to, cc, bcc, subject, message စတာေတြကိုယူသံုးႏိုင္ပါတယ္။
- $this->email->send(); ကေတာ့ mail send ဖို႔ command ေပးလုိက္တာျဖစ္ပါတယ္။
Send ၿပီးသြားရင္ေတာ့ ကြ်န္ေတာ္ေရးထားတဲ့ Redirect Function ေၾကာင့္ contact us page ကိုျပန္ေရာက္သြားၿပီး “Your Message has been sent” ဆိုတဲ့ messate ကိုျမင္ရပါလိမ့္မယ္။
ကြ်န္ေတာ္ hosting ေပၚတင္ၿပီး စမ္းထားေသာ screen cap ေတြကို ၾကည့္ႏိုင္ပါတယ္။
မပို႔ခင္ ျမင္ရပုံ

ပို႔ျပီး redirect ျပန္လာပုံ

mail လက္ခံ ရရွိပုံ

ဒါကေတာ့ CI Mail Library အၾကမ္းထည္ေလး ျဖစ္ပါတယ္။ မိမိတို႔ idea ရွိသေလာက္ CodeIgniter Mail Reference ေလးကိုဖတ္ျပီး ဆက္လက္ ခဲ်႕ထြင္ႏိုင္ၾကပါတယ္။ အဆင္ေျပၾကပါေစဗ်ာ။ 
.htaccess issue in CodeIgniter
Sunday, 03 October 2010 01:18
CodeIgniter ေရးတဲ့အခါ index.php ကိုမသုံးပဲ .htaccess နဲ႔ url ကိုပိုျပီး ရွင္းရွင္းလင္းလင္း ျဖစ္သြားေအာင္ လုပ္ႏိုင္တာကို အားလုံးသိပါတယ္။ ကြၽန္ေတာ္ ဒီလိုမ်ိဳး .htaccess file ကို local မွာသုံးတာ လုံးဝ အဆင္ေျပပါတယ္။ DirectoryIndex index.php
RewriteEngine on
RewriteCond !^(index\.php|images|css|js|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php/ [L,QSA]
ကံဆိုးခ်င္ေတာ့ server ေပၚကိုတင္လိုက္ေတာ့ 500 Internal Server Error နဲ႔ေတြ႔ပါတယ္။ ကံေကာင္းခ်င္ေတာ့ Googling လုပ္ေသာအခါ ဒီလိုမ်ိဳး .htaccess file ကိုသုံးရင္ျဖင့္ အဆင္ေျပမွာ ျဖစ္ေၾကာင္းကို သိလိုက္ရပါတယ္။
Options +FollowSymLinks
RewriteEngine On
RewriteCond !^(index\.php|images|css|js|robots\.txt|favicon\.ico)
RewriteRule ^(.*)$ /index.php?/ [L]
AJAX/jQuery in CodeIgniter
Sunday, 03 October 2010 00:27
CodeIgniter Post ေတြဆက္မေရးျဖစ္တာေတာင္ ၾကာသြားၿပီျဖစ္လို႔ CI နဲ႔ AJAX ( jQuery )ကိုဘယ္ လို ေပါင္းစပ္ၿပီးသံုးမလဲ ဆိုတဲ့ Basic Tutorial ေလးကိုေရးပါမယ္။ ဒီ Post ကိုမဖတ္ခင္ CodeIgniter နဲ႔ JQuery အေျခခံေလးကို သိထားဖို႔ေတာ့ လိုပါတယ္။ ကြ်န္ေတာ္ေရးထားၿပီးသေလာက္ CodeIgniter ေတြကို ဒီမွာ ျပန္ ဖတ္ႏိုင္သလို JQuery အေျခခံ Post ေလးတစ္ခ်ဳိ႕ကိုလည္း ဒီေနရာ မွာၾကည့္ႏိုင္ပါတယ္။ ဒီ Tutorial ကေတာ့ JQuery (AJAX) သံုးၿပီး data insert လုပ္ပံုကိုေရးမွာျဖစ္ ပါတယ္။ အရမ္းကို ႐ိုးရွင္းတဲ့ Example ေလး တစ္ ခု ျဖစ္တာေၾကာင့္ ေသခ်ာသေဘာေပါက္သြားမယ္ ဆိုရင္ မိမိတို႔ ဥာဏ္စြမ္း ရွိသ၍ ထပ္ျပီး ေပါင္းထည့္လို႕ ရႏိုင္ပါတယ္။
Creating Table
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`address` varchar(255) NOT NULL,
`phone` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Creating Controller
အရင္ဆံုး Controller file တစ္ခုကို create လုပ္လိုက္ပါမယ္။ ဒီ file ကို entry.php လို႔နာမည္ေပးလုိက္ပါမယ္။
<?php
if (! defined('BASEPATH')) exit('No direct script access');
class entry extends Controller {
function __construct() {
parent::Controller();
}
function index() {
$this->load->view('entry_view');
}
}
Creating View
Entry.php ဆိုတဲ့ controller ကေန entry_view.php ကိုေခၚထားတာ ေတြ႕ရပါလိမ့္မယ္။ ဒါေၾကာင့္ ဒီ view file ကို entry_view.php လို႔နာမည္ေပးလိုက္ၾကရေအာင္။
<?php
echo form_open('entry/submit');
echo "Name :<br> ";
echo form_input('name', '', 'id="name"');
echo "<br><br>";
$data = array('name' => 'address', 'cols' => 35, 'rows' => 12);
echo "Address :<br> ";
echo form_textarea($data, '', 'id="address"');
echo "<br><br>";
echo "Phone :<br> ";
echo form_input('phone', '', 'id="phone"');
echo "<br><br>";
echo form_submit('submit', 'Submit', 'id="submit"');
echo form_close();
?>
ဒီအေနအထားမွာ Run ၾကည့္မယ္ဆိုရင္ေတာ့ ဒီလိုျမင္ရပါလိမ့္မယ္။

view ကို jQuery ထည့္ၿပီးနဲနဲျပင္လိုက္ရေအာင္
Editing View
ၿပီးရင္အရင္ File name အတိုင္းပဲ ျပန္ save လုပ္လိုက္ပါ။
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript" charset="utf-8"></script>
<div id="main_content">
<?
if ($this->session->flashdata('message')){
echo $this->session->flashdata('message');
}
?>
</div>
<?php
echo form_open();
echo "Name *:<br> ";
echo form_input('name', '', 'id="name"');
echo "<br><br>";
$data = array('name' => 'address', 'cols' => 35, 'rows' => 12);
echo "Address *:<br> ";
echo form_textarea($data, '', 'id="address"');
echo "<br><br>";
echo "Phone *:<br> ";
echo form_input('phone', '', 'id="phone"');
echo "<br><br>";
echo form_submit('submit', 'Submit', 'id="submit"');
echo form_close();
?>
<script type="text/javascript">
$('#submit').click(function() {
var name = $('#name').val();
var address = $('#address').val();
var phone = $('#phone').val();
if (name == "") {
alert('Please enter your name');
return false;
}
if (address == "") {
alert('Please enter your address');
return false;
}
if (phone == "") {
alert('Please enter your phone');
return false;
}
var form_data = {
name: $('#name').val(),
address: $('#address').val(),
phone: $('#phone').val()
};
$.ajax({
url: "<?php echo site_url('entry/submit'); ?>",
type: 'POST',
data: form_data,
success: function(msg) {
$('#main_content').html(msg);
}
});
});
</script>
ခုထည့္လိုက္တာကို ၾကည့္မယ္ဆိုရင္ေတာ့့
- Jquery ကိုေခၚလိုက္ပါတယ္။
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript" charset="utf-8"></script>
ဒီအတိုင္းေခၚမယ္ဆိုရင္ေတာ့ internet connection လုိပါတယ္။ အဲဒီမွမဟုတ္ရင္ေတာ့ JQuery file ကို Download လုပ္ၿပီး offline သံုးလို႔ရေအာင္လည္းလုပ္ႏိုင္ပါ တယ္။
- ဒီေနရာကေတာ့ Submit buttom ကို Click လုပ္လိုက္ရင္ လာၿပီး Run မယ့္ Code ပဲျဖစ္ပါ တယ္။
<script type="text/javascript">
$('#submit').click(function() {
var name = $('#name').val();
var address = $('#address').val();
var phone = $('#phone').val();
if (name == "") {
alert('Please enter your name');
return false;
}
if (address == "") {
alert('Please enter your address');
return false;
}
if (phone == "") {
alert('Please enter your phone');
return false;
}
var form_data = {
name: $('#name').val(),
address: $('#address').val(),
phone: $('#phone').val()
};
$.ajax({
url: "<?php echo site_url('entry/submit'); ?>",
type: 'POST',
data: form_data,
success: function(msg) {
$('#main_content').html(msg);
}
});
});
</script>
$.ajax ကိုသုံးျပီး AJAX ပုံစံ Server Side ကို data ပို႔လို႕ရေအာင္ လုပ္ထားတာကိုေတြ႔ ရႏိုင္ပါတယ္။
url ကေတာ့ submit လုပ္လိုက္တဲ့အခါေခၚမယ့္ controller ကိုေျပာတာျဖစ္ပါတယ္။
type ကေတာ့ POST or GET ကိုေျပာတာျဖစ္ပါတယ္။
data ကေတာ့ Form ေပၚကေန Server side ကိုပို႔ခ်င္တဲ့ values ေတြကို ေျပာတာျဖစ္ပါတယ္။ အဲဒီ value ေတြကို အေပၚမွာ ဒီလိုေလးယူထားတာ ေတြ႕ႏိုင္ပါတယ္။
ဒါဆိုရင္ တစ္ခုပဲလိုေတာ့တယ္ဗ်ာ။ Model file ကိုဆက္ၿပီး Create လုပ္လိုက္ရေအာင္
Creating Model
mentry.php လို႔ နာမည္ေပးလိုက္ရေအာင္
<?php
if (! defined('BASEPATH')) exit('No direct script access');
class MEntry extends Model {
function __construct() {
parent::Model();
}
function insert_data() {
$name = $this->input->post('name');
$address = $this->input->post('address');
$phone = $this->input->post('phone');
$data = array(
'name' => $name,
'address' => $address,
'phone' => $phone
);
$this->db->insert('user',$data);
$this->session->set_flashdata('message', 'Data successfully saved!');
$this->load->view('entry_view');
}//insert_data
}
ဒီထဲမွာ insert data ဆိုတဲ့ Function ေလးတစ္ခုရွိၿပီး data insert လုပ္ထားတာကိုေတြ႕ရပါလိမ့္မယ္။ ဒီ Model ကိုေခၚလိုက္လို႕ controller code ေလးကိုနဲနဲျပင္ဖို႔ လိုပါတယ္။
Edit Controller
<?php
if (! defined('BASEPATH')) exit('No direct script access');
class entry extends Controller {
function __construct() {
parent::Controller();
}
function index() {
$this->load->view('entry_view');
}
function submit(){
$this->load->model('MEntry');
$this->MEntry->insert_data();
}
}
ဒီတစ္ၾကိမ္ run ၾကည့္ရင္ေတာ့ entry form ကိုျမင္ရမွာ ျဖစ္ျပီး တကယ္လို႕ validation ေအာင္ျမင္သြားရင္ေတာ့ data insert လုပ္သြားမွာ ျဖစ္ျပီး Data successfully saved! ဆိုတဲ့ message ကိုလည္း ျပန္ျမင္ရပါမယ္။ ဒီေနရာမွာ ဆက္လုပ္ခ်င္တယ္ ဆိုရင္ေတာ့ CSS ေတြေပါင္းထည့္ျပီး validation ကို user friendly ျဖစ္ေအာင္ အလွဆင္ႏိုင္ပါတယ္။ ဒါအျပင္ insert လုပ္သြားတဲ့ records ေတြကိုလည္း list နဲ့ ခ်က္ခ်င္းျပန္ျပတာမ်ိဳးေတြကိုလည္း လုပ္ၾကည့္ႏိုင္ပါတယ္။ ဒီ Tutorial ေလးရဲ႔ source code ကိုလိုခ်င္ရင္ေတာ့ comment ကေနေတာင္းလို႕ ရပါတယ္။ အားလုံး အဆင္ေျပၾကပါေစဗ်ာ။ 
More Articles...
Page 1 of 4
«StartPrev1234NextEnd»Login Form
Latest Post
Categories Table View
- Reader's Conner (133)
- PHP (48)
- Joomla CMS (46)
- Codeigniter (18)
- jQuery (12)
- iDhamma (11)
- Mobile Development (10)
- PHP & AJAX (4)
- Apache (3)
- For Mac (3)
- mySQL (2)
- DhammaDroid (1)