জেন্ড ডেটা ইনসার্ট

এই টিউটোরিয়ালে দেখানো হবে কিভাবে আগের টিউটোরিয়ালে তৈরী ডেটাবেসে  ডেটা ঢুকাতে হয় (ব্রাউজার থেকে)।আগের টিউটোরিয়ালে Myform.php
নামে যে ফাইলে একটা ফর্ম তৈরী করেছিলেন সেটা খুলে নিচের কোড লিখুন।

01.<?php
02. 
03.class Application_Form_Myform extends Zend_Form {
04. 
05.public function init() {
06.$username = new Zend_Form_Element_Text('username');
07.$username->setLabel('Name')
08.->setRequired(true)
09.->addValidator('alnum')
10.->addValidator('regex', false, array('/^[a-z]/'))
11.->addFilter('StringToLower');
12. 
13.$email = new Zend_Form_Element_Text('email');
14.$email->setLabel('Email')
15.->setRequired(true)
16.->addValidator('EmailAddress');
17.$textarea = new Zend_Form_Element_Textarea('comment');
18.$textarea->setLabel('Comment')
19.->setRequired(true);
20.$submit = new Zend_Form_Element_Submit('submit');
21.$submit->setLabel('Add new Data');
22.$this->addElements(array($username, $email, $textarea, $submit));
23.}
24. 
25.}?>

ব্যাখ্যা: আগের ফর্মটি ছিল একটা লগিন ফর্ম তেমন কোন ভেলিডেশন ছিলনা।এবার সেটা রিপ্লেস করে করলাম আরেকটা ফর্ম দিয়ে।যাইহোক প্রথমে Zend_Form_Element_Text এই ক্লাসটি instantiate করে একটা টেক্সট ফিল্ড তৈরী করেছি।

1.$username->setLabel('Name')
2.->setRequired(true)
3.->addValidator('alnum')
4.->addFilter('StringToLower');

এরপর এই মেথডগুলি দিয়ে প্রথমে ফিল্ডটির নাম দিয়েছি,setRequired(true) এটা দিয়ে এই ফিল্ডটি পুরন করতেই হবে এমন শর্ত তৈরী করেছি।এখন যদি কেউ নামের ঘরটি ফাকা রেখে ফর্ম সাবমিট করে তাহলে ফর্ম ফাকা রাখা যাবেনা এই ধরনের মেসেজ দেখাবে।

addValidator('alnum') দিয়ে এই ঘরে শুধু আলফানিউমেরিক (শুধু নাম্বার এবং অক্ষর) character হবে তা নির্ধারন করেছি।

addFilter('StringToLower') এটি দিয়ে একটা ফিল্টার করেছি তা হচ্ছে ইউজারের টাইপকৃত স্ট্রিং ছোট হাতের করে নেবে।জেন্ড এর ম্যানুয়ালে আরও এমন অনেক ভেলিডেটর আছে,ফিল্টার আছে যেসব দিয়ে আপনি ফর্ম ভেলিডেশন এবং ফিল্টার করে ডেটবেসে ডেটা নিতে পারবেন।যেমন আমরা এখানে প্রতিটি এলিমেন্টের ক্ষেত্রে কিছু ভেলিডেশন করেছি।

উপরের কোডে -> এই অপারেটর দিয়ে একটার পর একটা মেথড লিখে তাতে একসেস  নেয়া হয়েছে।এটা অবজেক্ট অরিয়েন্টেড প্রোগ্রামিং এর একটা ফিচার যার নাম মেথড চেইনিং।এতে কোড কম লিখতে হচ্ছে তা নাহলে
1.$username->setLabel('Name')
2.$username->setRequired(true)
3.$username->addValidator('alnum')
4.$username->addFilter('StringToLower');
এভাবে লিখতে হত,যেটা বিরক্তিকর।
এবার tutorial/models/Tutorial.php ফাইলে নিচের মত ফাংশন টি লিখুন
1.public function addEntry($name, $email, $comment) {
2.$data = array(
3.'name' => $name,
4.'email' => $email,
5.'comment' => $comment,
6.);
7.$this->insert($data);
8.}

insert() হচ্ছে Zend_Db_Table_Abstract এই ক্লাসটির মেথড যা দিয়ে সহজেই ডেটাবেসে ডেটা ঢুকাতে পারেন।আমরা অ্যারে দিয়ে ৩ টি ফিল্ডের ডেটা ইনসার্ট করেছি, আপনার ফর্মে যতগুলি ফিল্ড থাকবে আপনি প্যারামিটার এবং অ্যারেতে সেভাবে তা যোগ করে নিবেন।

এখন tutorial/application/controllers/IndexController.php ফাইলে একটা নতুন একশন তৈরী করুন (zf create action add Index ) এবং এখানে নিচের কোড লিখুন
01.public function addAction() {
02.$form = new Application_Form_Myform();
03.$this->view->assign('form', $form);
04.if ($this->getRequest()->isPost()) {
05.$formData = $this->getRequest()->getPost();
06.if ($form->isValid($formData)) {
07.$name = $form->getValue('username');
08.$email = $form->getValue('email');
09.$comment = $form->getValue('comment');
10.$tutorial = new Application_Model_DbTable_Tutorial();
11.$tutorial->addEntry($name, $email, $comment);
12. 
13.$this->_helper->redirector('index');
14.} else {
15.$form->populate($formData);
16.}
17.}
18.}

ব্যাখ্যা: কোড দেখেই বোঝা যাচ্ছে কি হবে।
index.phtml ফাইলে শুধু লিংকটি  নিচের মত আপডেট করুন
1.<a href="/<?php echo $this->url(array("controller" => "index", "action" => "add")) ?>">Add Data</a>
সবশেষে add.phtml ফাইলে নিচের কোডটি লিখুন (যখন কমান্ড দিয়ে add একশনটি তৈরী করবেন তখন অটোমেটিক add.phtml ফাইলটি index ফোল্ডারে তৈরী হবে)
1.<?php
2.echo $this->form;
3.?>

এখন http://localhost/tutorial/public/ এই এড্রেস টাইপ করলে নিচের মত আসবে


এবং Add Data লিংকে ক্লিক করলে নিচের মত ফর্ম আসবে,এখানে ফর্ম পূরন করে সাবমিট করলে ডেটাবেসে গিয়ে সেভ হবে এবং হোমপেজ দেখাবে।

কোন মন্তব্য নেই

Blogger দ্বারা পরিচালিত.