Tag Archives: ফর্ম

অ্যাপ এম এল ফর্ম (AppML Forms)

Huge Sell on Popular Electronics

রিদওয়ান বিন শামীম

 

এই অধ্যায়ে দেখানো হবে কীভাবে ডাটাবেসের বিপরীতে ইনপুট ফর্ম তৈরি করা যায়।

 

ফর্ম মডেল তৈরি করা

model_customersform.js


{
 "database" : {
     "connection" : "localmysql",
     "maintable" : "Customers",
     "keyfield" : "CustomerID",
     "sql" : "SELECT * FROM Customers"},
 "updateItems" : [
     {"item" : "CustomerName"},
     {"item" : "Address"},
     {"item" : "PostalCode"},
     {"item" : "City"},
     {"item" : "Country"}]
 }

 

 

এইচটিএমএল ফর্ম তৈরি করা

পূর্ববর্তী অধ্যায়ে আমরা দেখেছি কীভাবে ডাটাবেস থেকে রেকর্ড লিস্ট করার জন্য এপ্লিকেশন তৈরি করতে হয়। এখানে ওয়েব পেজে একটি ফর্ম এপ্লিকেশন যোগ করতে হবে,

HTML Form


<div id="Form01" appml-data="local?model=model_customersform"
 class="jumbotron">
 
 <div class="form-group">
   <label for="customername">Customer:</label>
   <input id="customername" class="form-control">
 </div>
 
 <div class="form-group">
   <label for="address">Address:</label>
   <input id="address" class="form-control">
 </div>
 
 <div class="form-group">
   <label for="city">City:</label>
   <input id="city" class="form-control">
 </div>
 
 <div class="form-group">
   <label for="postalcode">Postal Code:</label>
   <input id="postalcode" class="form-control">
 </div>
 
 <div class="form-group">
   <label for="country">Country:</label>
   <input id="country" class="form-control">
 </div>
 
 </div>

 

 

এইচটিএমএল ফর্মের ব্যাখ্যা

appml-data="local?model=model_customersform" দ্বারা ফরমের জন্য অ্যাপ এম এল এপ্লিকেশন বোঝায়।

 

এইচটিএমএল ফর্ম কমান্ড তৈরি করা

পছন্দসই স্টাইলশিট ব্যবহার করে(এখানে bootstrap ব্যবহার করা হয়েছে) কাঙ্খিত ফর্ম কমান্ড তৈরি করা হয়,

inc_formcommands.htm


<button type="button" class="close" onclick="document.getElementById('Form01').style.display='none';">X</button>
 
 <button type="button" class="close">X</button>
 
 <div class="btn-toolbar" style="margin-bottom:20px;">
 <div class="btn-group">
 
 <button type="button" class="btn btn-default" onclick="appml('Form01').newRecord();">
 <span class="glyphicon glyphicon-new-window"></span> New</button>
 
 <button type="button" class="btn btn-primary" onclick="appml('Form01').saveRecord();">
 <span class="glyphicon glyphicon-floppy-disk"></span> Save</button>
 
 <button type="button" class="btn btn-default" onclick="appml('Form01').deleteRecord();">
 <span class="glyphicon glyphicon-trash"></span> Delete</button>
 
 </div>
 </div>
 
 <div id="appmlmessage" class="alert alert-warning" style="display:none;">
 <button type="button" class="close"
 onclick="this.parentNode.style.display='none';">X</button>
 <div id="message"></div>
 
</div>

 

 

ফর্ম কমান্ড অন্তর্ভুক্তি

ফরমে ফর্ম কমান্ড অন্তর্ভুক্ত করা হয়,

HTML Form


<div id="Form01" appml-data="local?model=model_customersform"
 class="jumbotron">
 
 <div appml-include-html="inc_formcommands.htm"></div>
 
 <div class="form-group">
 <label for="customername">Customer:</label>
 <input id="customername" class="form-control">
 </div>
 
 <label for="address">Address:</label>
 <input id="address" class="form-control">
 </div>
 
 <div class="form-group">
 <label for="city">City:</label>
 <input id="city" class="form-control">
 </div>
 
 <div class="form-group">
 <label for="postalcode">Postal Code:</label>
 <input id="postalcode" class="form-control">
 </div>
 
 <div class="form-group">
 <label for="country">Country:</label>
 <input id="country" class="form-control">
 </div>
 
 </div>

 

 

 

 

ডাটা টেবিলে ক্লিকেবল কলাম যোগ করা

পূর্ববর্তী অধ্যায়ে আমরা দেখেছি কীভাবে ডাটাবেস থেকে রেকর্ড লিস্ট করার জন্য এপ্লিকেশন তৈরি করতে হয়।এখানে আমরা টেবিলে নতুন কলাম যোগ করব।

 

HTML Source


<div appml-data="local?model=model_customerslist">
 
 <h1>Customers</h1>
 <div appml-include-html="inc_listcommands.htm"></div>
 <div appml-include-html="inc_filter.htm"></div>
 
 <table class="table table-striped table-bordered">
   <tr>
     <th></th>
     <th>Customer</th>
     <th>City</th>
     <th>Country</th>
   </tr>
   <tr appml-repeat="records">
     <td style="cursor:pointer;width:34px;"
         onclick="appml('Form01').run({{CustomerID}})">
         <span class="glyphicon glyphicon-edit"></span></td>
     <td>{{CustomerName}}</td>
     <td>{{City}}</td>
     <td>{{Country}}</td>
   </tr>
 </table>
 
</div>

 

 

নতুন কলামের অনক্লিক ইভেন্ট অ্যাপ এম এল এর একটি এপ্লিকেশন রান করায়, যা এইচটিএমএল উপাদানের মধ্যে id="Form01" পরিচিতি নিয়ে অবস্থান করে।

 

  • appml('Form01') অ্যাপ এম এল এর এপ্লিকেশন পুনরাবৃত্তি করায়,
  • run({{CustomerID}}) প্যারামিটাররূপে কাস্টমার আইডির সাথে এপ্লিকেশন রান করায়।

 

চূড়ান্ত পর্যায়ে, ফর্মকে লুকিয়ে রাখা

ফর্মকে লুকিয়ে রাখতে একধরনের স্টাইল ব্যবহার করা হয়,

 

HTML


<div id="Form01" appml-data="local?model=model_customersform"
 appml-controller="myFormController"
 class="jumbotron" style="display:none">

 

ফর্মে একটি কন্ট্রোলার ব্যবহার করা হয় যেন এটি কেবল তখনই দৃশ্যমান হবে যখন এটি লোডেড ও ডাটা প্রদর্শনের জন্য প্রস্তুত।

Controller


<script>
 function myFormController($appml) {
     if ($appml.message == "ready") {return -1;}
     if ($appml.message == "loaded") {
         document.getElementById("Form01").style.display="";
     }
 }
 </script>

 

 

 

এইচটিএমএল ইনপুট বৈশিষ্ট্যাবলী (HTML Input Attributes)

Huge Sell on Popular Electronics

শরিফুল ইসলাম
Job category-Php Coder

 

ভ্যালু attribute

ফর্ম এর শুরুতে ইনপুট ফিল্ড এর জন্য একটি প্রাথমিক ভ্যালু সেট করার জন্য value attribute ব্যবহার করা হয়

উদাহরণ


<form action="">
 First name:<br>
 <input type="text" name="firstname" value="John">
 <br>
 Last name:<br>
 <input type="text" name="lastname">
 </form>

 

ফলাফল


First name:
Last name:

 

 

কেবল পঠনযোগ্য অ্যাট্রিবিউট (Readonly attribute)

ইনপুট ফিল্ডের ভ্যালু শুধু পরতে পারবে কিন্তু কোন প্রকার পরিবর্তন করতে পারবে না এই readonly attribute দ্বারা

উদাহরণ


<form action="">
First name:<br>
<input type="text" name="firstname" value="John" readonly>
<br>
Last name:<br>
<input type="text" name="lastname">
</form>


এই attribute এর জন্য কোন মান লাগবে না শুধু লিখতে হবে readonly=”readonly”

 

ফলাফল


First name:
Last name:

 

নিষ্ক্রিয়করণ অ্যাট্রিবিউট (Disabled attribute)

ইনপুট ফিল্ডের কোন ডাটা এডিট করা যাবে না,বাবহার করা যাবে না, ক্লিক করা যাবে না এবং সাবমিট করা যাবে না এই রকম disable করে রাখার জন্য এই disable attribute ব্যবহার করা হয়

উদাহরণ


<form action="">
 First name:<br>
 <input type="text" name="firstname" value="John" disabled>
 <br>
 Last name:<br>
 <input type="text" name="lastname">
 </form>

এই attribute এর কোন মানের দরকার পরে না (disabled=”disabled”)

 

ফলাফল


First name:
Last name:

 

আকার অ্যাট্রিবিউট (Size attribute)

ইনপুট ফিল্ডের এর character এর আকার size attribute দ্বারা করা হয়

উদাহরণ


 <form action="">
 First name:<br>
 <input type="text" name="firstname" value="John" size="40">
 <br>
 Last name:<br>
 <input type="text" name="lastname">
 </form>

 

ফলাফল


First name:
Last name:

 

সর্বচ্চোআকার অ্যাট্রিবিউট (Maxlength attribute)

ম্যাক্সিমাম কতটি ক্যারেক্টার হতে পারে এর জন্য আমরা maxlength attribute ব্যবহার করব।

উদাহরণ


<form action="">
 First name:<br>
 <input type="text" name="firstname" maxlength="10">
 <br>
 Last name:<br>
 <input type="text" name="lastname">
 </form>

 

ফলাফল


First name:
Last name:

Maxlength দ্বারা নির্দিষ্ট character এর বেশি কোন ওয়ার্ড সাপোর্ট করে না। এই attribute কোন ফিডব্যাক প্রদান করে না। যদি ইউজার কে আমরা alert করতে চাই তাহলে আমাদের javascript বাবকার করতে হবে

ইনপুট নিষেধাজ্ঞা অব্যর্থ হয় না। javascript এর মাধ্যমে অবৈধ ভাবে ইনপুট করার অনেক উপায় আছে। নিরাপত্তার জন্য নিষেধাজ্ঞার পাশাপাশি রিসিভার (সার্ভার) দ্বারা চেক করা আবশ্যক.

 

এইচটিএমএল ৫ এর attribute গুলো

  • autocomplete
  • autofocus
  • form
  • formaction
  • formenctype
  • formmethod
  • formnovalidate
  • formtarget
  • height and width
  • list
  • min and max
  • multiple
  • pattern (regexp)
  • placeholder
  • required
  • step

এবং ফর্ম এর জন্য

  • Autocomplete
  • Novalidate

 

স্বয়ংকৃয়ভাবে সম্পূর্ণ বৈশিষ্ট্য (Autocomplete attribute)

কোন ইনপুট ফিল্ড আপনা থেকেই পরিপূর্ণ করবে কিনা এর জন্য autocomplete অন বা অফ ব্যবহার করা হয়। যদি তা অন করা থাকে তাহলে ব্রাউজার ইনপুট ফিল্ডের কোন ভ্যালু insert করার আগে আগেই অটোমেটিক পুরণ হয়ে যাবে যদি আগে এই ভ্যালুটি ইনপুট করা হয়ে থাকে। ফর্মের এর ক্ষেত্রে autocomplete অন রাখা সম্ভব নির্দিষ্ট কিছু ইনপুট ফিল্ডের এর জন্য তা অফ করে রাখা যাবে। autocomplete attribute ফর্মের এর ক্ষেত্রে কাজ করে এবং ইনপুট ফিল্ড এর ভিন্ন ভিন্ন ধরন যেমন text, search, url, tel, email, password, date picker, range, এবং color এই সব ক্ষেত্রে কাজ করে।

উদাহরণ


<form action="action_page.php" autocomplete="on">
 First name:<input type="text" name="fname">
Last name: <input type="text" name="lname">
E-mail: <input type="email" name="email" autocomplete="off">
<input type="submit">
 </form>

কিছু কিছু ব্রাউজার এর ক্ষেত্রে কাজের জন্য autocomplete ফাংশন চালু করা লাগতে পারে।

 

ফলাফল


First name:Last name: E-mail:


 

Novalidate attribute

ফর্ম ডাটা সাবমিট করার পর এটাকে অবৈধ ঘোষণা করার জন্য এই attribute ব্যবহার করা হয়

উদাহরণ


<form action="action_page.php" novalidate>
E-mail: <input type="email" name="user_email">
<input type="submit">
</form>


 

ফলাফল


E-mail:

 

অটোফোকাস বৈশিষ্ট্য (Autofocus attribute)

কোন ইনপুট ফিল্ড পেজ লোড হওয়ার সাথে সাথে ওই ঘরে কার্সর আনার জন্য এই attribute ব্যবহার করা হয়

উদাহরণ


First name:<input type="text" name="fname" autofocus>


 

ফলাফল


First name:Last name:


এইখানে firstname এর ঘরে কার্সর দেখা যাবে।

 

ফর্ম attribute

একাধিক ফর্মের input ফিল্ড কে একটি কমন ফর্ম এর ID দিয়ে চিহ্নিত করার জন্য এই attribute ব্যবহার করা হয়

উদাহরণ

যদিও ফর্ম এর বাইরে একটি ইনপুট ফিল্ড ব্যবহার করা হচ্ছে কিন্তু তারপরও এটি ফর্মের একটি অংশ


<form action="action_page.php" id="form1">
 First name: <input type="text" name="fname">
<input type="submit" value="Submit">
 </form>
Last name: <input type="text" name="lname" form="form1">

 

ফলাফল


First name:

The "Last name" field below is outside the form element, but still part of the form.

Last name:


 

 

Formaction attribute

Form action attribute একটি ফর্ম এর ফাইল এর URL চিহ্ন করে যেখানে যেয়ে ইনপুট ডাটা সাবমিট হবে। এই attribute দুটি টাইপ এ ব্যবহার করা হয় type=”submit”, type=”image”

উদাহরণ

ভিন্ন ভিন্ন action এ দুইটি বাটন দ্বারা দেখানো হল


<form action="action_page.php">
First name: <input type="text" name="fname">

Last name: <input type="text" name="lname">

<input type="submit" value="Submit">

<input type="submit" formaction="demo_admin.asp"
value="Submit as admin">
</form>


 

ফলাফল


First name: Last name:


 

Formenctype attribute

যখন সার্ভার এ ফর্ম ডাটা সাবমিট করা হবে তখন তা কিভাবে encode করা হবে এর জন্য আমরা এই attribute ব্যবহার করব পোস্ট মেথড এর ক্ষেত্রে । type=”submit” & type=”image” এই দুই ধরেনের ক্ষেত্রে এই attribute ব্যবহার করা হয়।

উদাহরন

প্রথম সাবমিট বাটন ডিফল্ট encoded এবং দ্বিতীয় সাবমিট বাঁটন multipart/form-data হিসেবে encode করা হয়েছে


<form action="demo_post_enctype.asp" method="post">
First name: <input type="text" name="fname">

<input type="submit" value="Submit">
<input type="submit" formenctype="multipart/form-data"
value="Submit as Multipart/form-data">
</form>


 

ফলাফল


First name:

 

Formmethod attribute

ফর্ম ডাটা url এ পাঠানোর ক্ষেত্রে HTTP মেথড বোঝার জন্য এই attribute ব্যবহার করা হয় । type=”submit” & type=”image” এই দুই ধরেনের ক্ষেত্রে এই attribute ব্যবহার করা হয়।

উদাহরণ

দ্বিতীয় বাটন টি HTTP এই মেথড এর


<form action="action_page.php" method="get">
First name: <input type="text" name="fname">

Last name: <input type="text" name="lname">

<input type="submit" value="Submit">
<input type="submit" formmethod="post" formaction="demo_post.asp"
value="Submit using POST">
</form>


 

ফলাফল


First name: Last name:


 

Formnovalidate attribute

Input উপাদান কে সাবমিট করার পর তা অবৈধ ঘোষণা করার ক্ষেত্রে এই বুলিয়ান attribute ব্যবহার করা হয়। type=”submit” এই ধরেনের ক্ষেত্রে এই attribute ব্যবহার করা হয়।

উদাহরণ

দুইটি সাবমিট বাটন একটি validate ছাড়া অন্যটি validate সহ


<form action="action_page.php">
E-mail: <input type="email" name="userid">

<input type="submit" value="Submit">

<input type="submit" formnovalidate value="Submit without validation">
</form>


 

ফলাফল


E-mail:


 

Formtarget attribute

ফর্ম সাবমিট করার পর কোথায় আমরা এর প্রতিক্রিয়া দেখতে চাই তা আমরা এই attribute এর মাধ্যমে করতে পারি। type=”submit” & type=”image” এই দুই ধরেনের ক্ষেত্রে এই attribute ব্যবহার করা হয়।

উদাহরণ

ভিন্ন ভিন্ন টার্গেট এর জন্য দুইটি বাটন ব্যবহার করা হল


<form action="action_page.php">
First name: <input type="text" name="fname">

Last name: <input type="text" name="lname">

<input type="submit" value="Submit as normal">
<input type="submit" formtarget="_blank"
value="Submit to a new window">
</form>


 

ফলাফল


First name: Last name:


 

উচ্চতা এবং প্রস্থ অ্যাট্রিবিউট Height and width attribute

ইনপুট ফিল্ডের আকার নির্ধারণ করার জন্য এই attribute ব্যবহার করা হয়। type=”image” ধরেনের ক্ষেত্রে এই attribute ব্যবহার করা হয়।

উদাহরণ

Width এবং height সহ একটি ইমেজ যুক্ত বাটন দেখানো হল


<input type="image" src="img_submit.gif" alt="Submit" width="48" height="48">


 

ফলাফল


First name: Last name:


 

তালিকা বৈশিষ্ট্য (List attribute)

<datalist> উপাদান যাতে ইনপুট করার জন্য কিছু pre-defned অপশন থাকবে

উদাহরণ

Pre-defined ভ্যালু সহ একটি ইনপুট ফিল্ড


<input list="browsers">
<datalist id="browsers">
 <option value="Internet Explorer">
 <option value="Firefox">
 <option value="Chrome">
 <option value="Opera">
 <option value="Safari">
 </datalist>

 

ফলাফল





 

ন্যূনতম, সর্বোচ্চ অ্যাট্রিবিউট (Min, max attribute)

একটি ইনপুট ফিল্ড এর মিনিমাম এবং ম্যাক্সিমাম ডাটা ইনপুট করার ক্ষেত্রে এই attribute গুলো ব্যবহার করা হয় ভিন্ন ভিন্ন ধরনের ইনপুট ব্যবহার করা যায় number, range, date, datetime, datetime-local, month, time এবং week।

উদাহরন

মিনিমাম এবং ম্যাক্সিমাম ভ্যালু সহ একটি উদাহরণ


Enter a date before 1980-01-01:
 <input type="date" name="bday" max="1979-12-31">
Enter a date after 2000-01-01:
 <input type="date" name="bday" min="2000-01-02">
Quantity (between 1 and 5):
 <input type="number" name="quantity" min="1" max="5">

 

ফলাফল


Enter a date before 1980-01-01:
Enter a date after 2000-01-01:
Quantity (between 1 and 5):

 

একাধিক অ্যাট্রিবিউট (Multiple attribute)

ইনপুট ফিল্ডে একাধিক ডাটা সাবমিট করার ক্ষেত্রে এই বুলিয়ান attribute ব্যবহার করা হয়।দুই ধরনের ইনপুটে কাজ করা যায় ইমেইল, ফাইল।

উদাহরণ

এই ইনপুট ফিল্ড এ অনেকগুলো ইমেজ আপলোড করা যাবে


Select images: <input type="file" name="img" multiple>

 

ফলাফল


Select images:

 

প্যাটার্ন অ্যাট্রিবিউট (Pattern attribute)

Regular expression এই ধরনের ডাটা ইনপুট করার ক্ষেত্রে আমরা এই attribute ব্যবহার করব। এতে ফরম্যাট দেওয়া থাকে সেই অনুপাতে ডাটা ইনপুট দিতে হয়। এই টাইপ গুলো হল text, search, url, tel, email এবং password।

উদাহরণ

এই ইনপুট ফিল্ড এ ৩ টা লেটার ইনপুট করা যাবে যেখানে কোন নাম্বার বা special character থাকবে না


Country code: <input type="text" name="country_code" pattern="[A-Za-z]{3}" title="Three letter country code">

 

ফলাফল


Country code:

 

স্থানধারক অ্যাট্রিবিউট (Placeholder attribute)

ইনপুট ফিল্ড এ কোন কিছু ইনপুট করার আগে হালকা ভাবে কোন লেখা ডিসপ্লে করার জন্য এই attribute ব্যবহার করা হয়। এই টাইপ গুলো হল text, search, url, tel, email এবং password।

উদাহরণ


<input type="text" name="fname" placeholder="First name">

 

ফলাফল



 

আবশ্যক অ্যাট্রিবিউট (Required attribute)

কোন ইউজার যেন কোন নির্দিষ্ট ইনপুট ফিল্ড ফাকা না রেখে ফর্ম সাবমিট করে সেই জন্য আমরা এই attribute ব্যবহার করব। এই টাইপ গুলো হল text, search, url, tel, email, password, date pickers, numbers, checkbox, radio, file.।

উদাহরণ


Username: <input type="text" name="usrname" required>

 

ফলাফল


Username:

 

ধাপ অ্যাট্রিবিউট (Step attribute)

ইনপুট ফিল্ড এ লিগাল নাম্বার ইনপুট দেওয়ার ক্ষেত্রে এই attribute টি ব্যবহার করা হয়। যেমন যদি স্টেপ ৩ হয় তাহলে লিগাল নাম্বার গুলো হবে -৩,০,৩,৬

এই attribute যেই ধরনের ইনপুট টাইপ গুলোর ক্ষেত্রে কাজ করতে পারে এইগুলো হল number, range, date, datetime, datetime-local, month, time এবং week.

উদাহরণ


<input type="number" name="points" step="3">

 

ফলাফল




 

ASP.NET টিউটোরিয়াল :[পর্বঃ ৬]:: ASP.NET Web Forms দিয়ে একসাথে ফর্মের অনেক কোডের নিয়ন্ত্রণ . ASP.NET Web Forms – Maintaining the ViewState

Huge Sell on Popular Electronics

ASP.NET টিউটোরিয়াল :[পর্বঃ ৬]:: ASP.NET Web Forms দিয়ে একসাথে ফর্মের অনেক কোডের নিয়ন্ত্রণ
লেখকঃ মোস্তাফিজুর ফিরোজ ।

গত পর্বে আমরা শিখেছিলাম ASP.NET Web Forms দিয়ে এইচটিএমএল ফর্ম ট্যাগের ব্যবহার । আজ আমরা শিখবো একসাথে ফর্মের অনেক কোডের নিয়ন্ত্রণ । এজন্য আগে আপনাকে ViewState এর নিয়ন্ত্রণ সম্পর্কে জানতে হবে ।

ViewState এর নিয়ন্ত্রণ
যখন একটি ফর্ম classic ASP আকারে নিবেদন করা হয় তখন ফর্মের সকল মান চলে যায় । ধরুন আপনি একটি ফর্মের সাথে অনেক তথ্য যোগ করে পাঠালেন আর এরর রিপোর্ট আসলো । তাহলে বুঝতেই পারছেন আপনার কেমন মেজাজ গরম হবে । আপনার মেজাজ গরম না হলেও আমার কিন্তু খুব মেজাজ গরম হবে । তাই আবার ব্যাক করে এসে দেখলেন আবার সব ফর্ম পূরণ করা লাগছে । তাহলে বুঝতে হবে এই সাইট আপনার ViewState পুরাপুরি নিয়ন্ত্রণ করতে পারেনি ।

আবার অনেক সাইটে দেখবেন এমন এরর রিপোর্ট দেখালেও ব্যাক করলে ফর্মে আপনার পূরণ করা সকল তথ্য দেখতে পারবেন । এটা কে করলো? তাইতো । খুব খুশি তাই নাহ? এটা ঐ পেজের ASP .NET ধারণ করে রেখেছে । তার মানে ঐ পেজের ViewState পুরাপুরি নিয়ন্ত্রণ করতে সক্ষম হয়েছে । ঐ পেজে একটা <form runat="server"> ট্যাগ হিডেন করা আছে যা আপনার সকল তথ্য সংরক্ষণ করে রেখেছে । তাহলে আসুন দেখি ঐ পেজের সোর্স কোড কেমন হয়ঃ

<form name="_ctl0" method="post" action="page.aspx" id="_ctl0">
<input type="hidden" name="__VIEWSTATE"
value="dDwtNTI0ODU5MDE1Ozs+ZBCF2ryjMpeVgUrY2eTj79HNl4Q=" />

.....some code

</form>

ViewState এর নিয়ন্ত্রণ হলো ASP.NET Web Forms এর ডিফল্ট সেটিংস । আপনি যদি এটাকে নিয়ন্ত্রণ না করতে চান তাহলে .aspx পেজের উপরে একটি <%@ Page EnableViewState="false" %> অথবা EnableViewState="false" এই ট্যাগ যোগ করতে পারেন ।

তাহলে দেখেন পুরাতন পদ্ধতিতে কোডগুলো কেমন দেখায়ঃ

<html>
<body>

<form action="demo_classicasp.aspx" method="post">
Your name: <input type="text" name="fname" size="20">
<input type="submit" value="Submit">
</form>
<%
dim fname
fname=Request.Form("fname")
If fname<>"" Then
Response.Write("Hello " & fname & "!")
End If
%>

</body>
</html>

এটা হল পুরাতন পদ্ধতি যাতে আপনি যখন সাবমিট করবেন তখন এর ভিতরকার কোডগুলো অন্তর্নিহিত থাকবে ।

তাহলে এইবার নতুন পদ্ধতিটা দেখে নেই যে কেমন হবে কোডটাঃ

<script runat="server">
Sub submit(sender As Object, e As EventArgs)
lbl1.Text="Hello " & txt1.Text & "!"
End Sub
</script>

<html>
<body>

<form runat="server">
Your name: <asp:TextBox id="txt1" runat="server" />
<asp:Button OnClick="submit" Text="Submit" runat="server" />
<p><asp:Label id="lbl1" runat="server" /></p>
</form>

</body>
</html>

আপনি এই নতুন পুরাতন দুই পদ্ধতিতেই একটি ফর্মের সকল কোড নিয়ন্ত্রণ করতে পারবেন । যেটা আপনার সুবিধা হবে সেটাই প্র্যাকটিস করবেন । তাহলে আজ এটাই শিখতে থাকুন ভালো করে ।

পিএইচপি ৫ কমপ্লিট ফর্ম উদাহরণ (PHP 5 Complete Form Example)

Huge Sell on Popular Electronics

ইনপুট ফিল্ড এর টাইপ করা ডাটা যদি ইউজার সাবমিট বাটন ক্লিক করার পর দেখতে চায় আমরা কিছু পিএইচপি কোড যুক্ত করব ইনপুট ফিল্ড এর মধ্যে (name, email, and website)। কমেন্ট টেক্সট এরিয়া এর মধ্যে আমরা পিএইচপি কোড যুক্ত করব <textarea> and </textarea> এই ট্যাগ এর ভিতরে। এই চারটি ফিল্ড এর জন্য রাখা হয়েছে $name, $email, $website, and $comment এই variables গুলোকে ব্যবহার করা হয়েছে। আমাদের এরপর লক্ষ্য রাখতে হবে যে রেডিও বাটন চেক করা হয়েছে কিনা। এই চারটি ফিল্ড ব্যবহার করে আমরা যদি কোড এর দিকে লক্ষ্য করি


Name: <input type="text" name="name" value="<?php echo $name;?>">
 
 E-mail: <input type="text" name="email" value="<?php echo $email;?>">
 
 Website: <input type="text" name="website" value="<?php echo $website;?>">
 
 Comment: <textarea name="comment" rows="5" cols="40"><?php echo $comment;?></textarea>
 
 Gender:
 <input type="radio" name="gender"
 <?php if (isset($gender) && $gender=="female") echo "checked";?>
 value="female">Female
 <input type="radio" name="gender"
 <?php if (isset($gender) && $gender=="male") echo "checked";?>
 value="male">Male

 

 

পিএইচপি - সম্পূর্ণ ফর্ম উদাহরণ


PHP Form Validation Example

* required field.

 

Name: * E-mail: *

Website:

Comment:

Gender: Female Male *

Your Input:

 



 

বুটস্ট্র্যাপ ফর্মস (Bootstrap Forms)

Huge Sell on Popular Electronics

বুটস্ট্র্যাপ এর ডিফল্ট সেটিংস

বুটস্ট্র্যাপ ফর্মস কন্ট্রোলগুলো স্বয়ংক্রিয়ভাবে কিছু global styling নেয়:

সকল Textual .form-control Class এর <input>, <textarea>, এবং <select> এলিমেন্টগুলোর  বিস্তার ১০০%

 

বুটস্ট্র্যাপ ফরম লেআউট

Bootstrap তিন ধরনের ফর্ম layouts প্রদর্শন করেঃ

  • Vertical form বা উল্লম্ব ফর্ম (এটি ডিফল্ট হিসেবে থাকে)
  • Horizontal form বা আড়াআড়ি ফর্ম
  • Inline form

এই সকল ফর্ম layouts এর জন্য কিছু আদর্শ বিধিমালা আছে

  • সবসময় <form role="form"> ব্যবহার করতে হবে (স্ক্রিন রিডার ব্যবহার করে মানুষের জন্য প্রবেশযোগ্যতা উন্নত করতে সাহায্য করে)
  • ফর্ম গুছাতে এবং নিয়ন্ত্রন করতে <div class="form-group"> ব্যবহার করতে হয় (সর্বোত্তম ফাঁকা স্থান দেয়ার জন্য প্রয়োজন)
  • সকল টেক্সট বেজ এলিমেন্ট <input>, <textarea>, এবং <select> এর জন্য .form-control ক্লাস কোয করা হয়।

 

বুটস্ট্র্যাপ উল্লম্ব ফরম Vertical Form (default)

দুইটা input fields, একটি চেকবক্স এবং একটি submit button এর সাহায্যে নিচের উদাহরন এর মতো একটি উলম্ব ফর্ম গঠন করা যায়:

উদাহরনঃ


<form role="form">
  <div class="form-group">
    <label for="email">Email address:</label>
    <input type="email" class="form-control" id="email">
  </div>
  <div class="form-group">
    <label for="pwd">Password:</label>
    <input type="password" class="form-control" id="pwd">
  </div>
  <div class="checkbox">
    <label><input type="checkbox"> Remember me</label>
  </div>
  <button type="submit" class="btn btn-default">Submit</button>
</form>

 

বুটস্ট্র্যাপ ইনলাইন ফরম

একটি inline form এ সকল উপাদানগুলো একটা সরল রেখায় থাকে , left-aligned, এবং লেবেল পাশাপাশি থাকে

বিশেষ দ্রস্টব্যঃ এটা শুধু মাত্র তখনই প্রদর্শিত হবে যখন viewports এর প্রসস্থতা 768px হবে।

কিছু অতিরিক্ত নিয়ম আছে এটা ব্যবহার করার জন্যঃ

  • .form-inline class টা <form> এর মাঝে স্থাপন করতে হয়

উদাহরনঃ


<form class="form-inline" role="form">
  <div class="form-group">
    <label for="email">Email address:</label>
    <input type="email" class="form-control" id="email">
  </div>
  <div class="form-group">
    <label for="pwd">Password:</label>
    <input type="password" class="form-control" id="pwd">
  </div>
  <div class="checkbox">
    <label><input type="checkbox"> Remember me</label>
  </div>
  <button type="submit" class="btn btn-default">Submit</button>
</form>

ফলাফল : Bootstrap Inline Form

 

সতর্কতাঃ প্রত্যেক input এর জন্য যদি label ব্যবহার না করা হয় তাহলে screen readers ফর্ম গঠনে সমস্যা করতে পারে ।

শধু মাত্র screen reader ছাড়া .sr-only class ব্যবহার করে সকল devices এর জন্য labels hide করে রাখা যাবে।

উদাহরনঃ


<form class="form-inline" role="form">
  <div class="form-group">
    <label class="sr-only" for="email">Email address:</label>
    <input type="email" class="form-control" id="email">
  </div>
  <div class="form-group">
    <label class="sr-only" for="pwd">Password:</label>
    <input type="password" class="form-control" id="pwd">
  </div>
  <div class="checkbox">
    <label><input type="checkbox"> Remember me</label>
  </div>
  <button type="submit" class="btn btn-default">Submit</button>
</form>

ফলাফল : Inline form with sr-only class

 

বুটস্ট্র্যাপ অনুভূমিক ফর্ম

A horizontal form stands apart from the other forms both in the amount of markup, and in the presentation of the form.

উভয় markup এবং presentation ফর্ম এর ক্ষেত্রে আড়াআড়ি ফর্ম গুলো অন্য ফর্মগুলো থেকে দূরত্ব বজায় রাখে

টা ব্যবহার করার কিছু নিয়ম আছে:

  • <form> এলিমেন্ট এর মধ্যে .form-horizontal class স্থাপন করতে হয়
  • সকল <label> এলিমেন্ট এর মাঝে .control-label class ব্যবহার করতে হয়

উদাহরনঃ


<form class="form-horizontal" role="form">
  <div class="form-group">
    <label class="control-label col-sm-2" for="email">Email:</label>
    <div class="col-sm-10">
      <input type="email" class="form-control" id="email" placeholder="Enter email">
    </div>
  </div>
  <div class="form-group">
    <label class="control-label col-sm-2" for="pwd">Password:</label>
    <div class="col-sm-10">
      <input type="password" class="form-control" id="pwd" placeholder="Enter password">
    </div>
  </div>
  <div class="form-group">
    <div class="col-sm-offset-2 col-sm-10">
      <div class="checkbox">
        <label><input type="checkbox"> Remember me</label>
      </div>
    </div>
  </div>
  <div class="form-group">
    <div class="col-sm-offset-2 col-sm-10">
      <button type="submit" class="btn btn-default">Submit</button>
    </div>
  </div>
</form>

ফলাফল : Bootstrap Horizontal Form

 

 

পিএইচপি ৫ ফর্ম হ্যান্ডলিং (PHP 5 Form Handling)

Huge Sell on Popular Electronics

আক্তারুজ্জামান

Department of CSE, University of Chittagong

 

ইউজার এর কাছ থেকে বিভিন্ন ধরনের তথ্য সংগ্রহ করতে ফর্ম (form) ব্যাবহার করা হয়। এই তথ্যগুলো পিএইচপি প্রোগ্রামের মাধ্যমে ডাটাবেজে স্টোর করা হয়। পিএইচপি তে দুটি সুপার গ্লুবাল ভেরিয়েবল আছে যা ফর্ম থেকে বিভিন্ন উপাত্ত বা ইউজার এর ইনপুট তুলে আনতে ব্যাবহৃত হয়। এই দুইটি ভেরিয়েবল হল $_GET এবং $_POST।

নিচের উদাহরণে একটি সিম্পল এইচটিএমএল ফর্ম দেওয়া হয়েছে যেখানে ২ টি ইনপুট ফিল্ড এবং একটি সাবমিট বাটন রয়েছে।


<html>
 <body>
 
 <form action="welcome.php" method="post">
 Name: <input type="text" name="name"><br>
 E-mail: <input type="text" name="email"><br>
 <input type="submit">
 </form>
 
 </body>
 </html>

 

যখন ইউজার এই ফর্মের ডাটা ফিল্ড গুলো পূর্ণ করে সাবমিট বাটনে ক্লিক করবে তখন উক্ত ডাটা গূলো “welcome.php” ফাইলে চলে যাবে। এখানে যেহেতু মেথড “post” ব্যাবহার করা হয়েছে তাই ডাটা গুলো HTTP POST মেথডের মাধ্যমে সেন্ড হবে।
সাবমিট করা ডাটা গুলো খুব সহজে নিচের মত করে “welcome.php” ফাইলে প্রদর্শন করা যাবে।


 <html>
 <body>
 
 Welcome <?php echo $_POST["name"]; ?><br>
 Your email address is: <?php echo $_POST["email"]; ?>
 
 </body>
 </html>

 

এই কোডটির আউটপূট হবে নিচের মতঃ


Welcome John
Your email address is john.doe@example.com


 

একই ভাবে HTTP GET মেথডে ব্যাবহার করেও কাজটি করা যাবে।
উদাহরনঃ


 <html>
 <body>
 
 <form action="welcome_get.php" method="get">
 Name: <input type="text" name="name"><br>
 E-mail: <input type="text" name="email"><br>
 <input type="submit">
 </form>
 
 </body>
 </html>

 

এখেত্রে "welcome_get.php" ফাইলটি নিচের মত হবেঃ


<html>
 <body>
 
 Welcome <?php echo $_GET["name"]; ?><br>
 Your email address is: <?php echo $_GET["email"]; ?>
 
 </body>
 </html>

 

গেট বনাম পোষ্ট (GET vs. POST)

  • GET এবং POST উভয়েইএকটি অ্যারে নির্মাণ করে (যেমনঃ array( key => value, key2 => value2, key3 => value3, ...))। এখানে key,key1,key2 হল ফর্ম কন্ট্রোল গুলোর নামে এবং value,value1,value2 হল ইউজারের ইনপুট ডাটা।
  • GET এবং POST উভয়েই $ _GET এবং $ _POST হিসাবে গণ্য হয়। এইগুলো হল সুপার গ্লুবালস অর্থাৎ এইগুলো সবসময় সব ফাংশন এবং সব ক্লাস থেকে এক্সেস করা যাবে।
  • ফর্মের ডাটা GET মেথড ব্যাবহার করে সেন্ড করলে সকল ডাটা ব্রাউজার এড্রেসবারে URL এ প্রদর্শিত হয়। অন্য দিকে ফর্মের ডাটা POST মেথড ব্যাবহার করে সেন্ড করলে ডাটা ব্রাউজার এড্রেসবারে URL এ প্রদর্শিত হয় না।

 

কখন GET ব্যবহার করতে হবে? (When to use GET?)

GET এর মাধ্যমে পাঠানো ডাটা সবাই দেখতে পায়। GET এর মাধ্যমে খুব বেশি ডাটা পাঠানো যায় না ,সর্বোচ্চ 2000 characters পাঠানো যায়। সেনসিটিভ ডাটা যেমন passwords সেন্ড করার জন্য কখনো GET ব্যাবহার করা উচিত নয়।

 

কখন POST ব্যবহার করতে হবে? (When to use POST?)

POST এর মাধ্যমে পাঠানো ডাটা অন্যরা দেখতে পায় না এবং এইখানে যত ইচ্ছা তথ্য পাঠানো যায়। এছাড়াও POST এর মাধ্যমে সার্ভারে ফাইল আপলোড করা যায় যেটা GET এর মাধ্যমে করা সম্ভব না।

 

পিএইচপি ৫ ফর্ম রিকোয়ার্ড ফিল্ডস (PHP 5 Forms – Required Fields)

Huge Sell on Popular Electronics

ফর্ম ব্যবহার করে ডাটাকে আমরা পোস্ট করে থাকি। কিন্তু অনেক সময় ইউজার কোন ফিল্ড কে খালি রেখে অথবা কোন কিছু পুরণ না করে পোস্ট করতে পারে এই ক্ষেত্রে তাকে এই এররটা ইউজার কে দেখিয়ে দেওয়ার জন্য আমরা পিএইচপি তে কিছু কোড ব্যবহার করব। এখন আমরা একটি উদাহরণ দেখব যেখানে এইচটিএমএল ব্যবহার করে একটি ফর্ম ব্যবহার করা হয়েছে তাতে ফিল্ড খালি রেখে পোস্ট করলে পরবর্তীতে তাকে যেই ফিল্ড গুলো সে পূর্ণ করে নি সেখানে এরর মেসেজ দেখাবে। কোড গুলো নিম্মরুপ


<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
                                          /*ডাটা পোস্ট করা হবে*/
 
 Name: <input type="text" name="name">    /*একটি নামের ফিল্ড*/
 <span class="error">* <?php echo $nameErr;?></span>
                            /*যদি ফাকা রেখে সাবমিট করা হয় তাহলে পিএইচপি এর মাধ্যমে 
                            এররর মেসেজ দেখাবে এই span id এর ভিতরে*/
 <br><br>
 E-mail:
 <input type="text" name="email">
 <span class="error">* <?php echo $emailErr;?></span>
 <br><br>
 Website:
 <input type="text" name="website">                    
 <span class="error"><?php echo $websiteErr;?></span>
                    /*যদি ফাকা রেখে সাবমিট করা হয় 
                      তাহলে পিএইচপি এর মাধ্যমে এররর 
                      মেসেজ দেখাবে এই span id এর ভিতরে*/
 <br><br>
 <label>Comment: <textarea name="comment" rows="5" cols="40"></textarea>
 <br><br>
 Gender:
 <input type="radio" name="gender" value="female">Female
 <input type="radio" name="gender" value="male">Male
 <span class="error">* <?php echo $genderErr;?></span>
                  /*যদি ফাকা রেখে সাবমিট করা হয় তাহলে পিএইচপি 
                    এর মাধ্যমে এররর মেসেজ দেখাবে এই span id এর ভিতরে*/
 <br><br>
 <input type="submit" name="submit" value="Submit">
                 /*সমস্ত ডাটাগুলো লেখার পর পোস্ট বাটন এ ক্লিক করলে 
                   ডাটাগুলো পিএইচপি পরবে তার জন্য আমরা এখন কোড লিখব*/ 
 
 </form>

 

ফাংশন


 < ?php
       // ফাকা ডাটা বা variable গুলো চিহ্নিত করার জন্য।
 $nameErr = $emailErr = $genderErr = $websiteErr = "";
 $name = $email = $gender = $comment = $website = "";
 if ($_SERVER["REQUEST_METHOD"] == "POST")
        /*যদি পোস্ট নামের বাটন এ ক্লিক করা হয়ে থাকে তাহলে 
          পরবর্তী ভিতরের অংশ কাজ করবে।*/
   {
     if (empty($_POST["name"]))
         /*চেক করবে এই ফিল্ডের এর ডাটা ইউজার ইনপুট করেছিল 
           কিনা যদি না করে থাকে তাহলে span id এর ভিতরে 
           এইচটিএমএল পার্ট এর ভিতরে যেখানে আমরা লিখেছিলাম সেইখানে ডিসপ্লে করবে*/
       {
         $nameErr = "Name is required";
 /*এই টেক্সট টি নাম ফিল্ড ফাকা থাকলে তার পাসে দেখাবে*/
      }
        else { 
          $name = test_input($_POST["name"]);
            /*অথবা যদি পোস্ট করে থাকে তাহলে এই কোড 
              এর মাধ্যমে পিএইচপি দতা টা পরবে*/
         }
         if (empty($_POST["email"]))
            /*চেক করবে এই ফিল্ডের এর ডাটা ইউজার ইনপুট করেছিল কিনা যদি না করে
              থাকে তাহলে span id এর ভিতরে এইচটিএমএল পার্ট এর ভিতরে যেখানে
              আমরা লিখেছিলাম সেইখানে ডিসপ্লে করবে*/
          {
            $emailErr = "Email is required";
          }
         else 
          { 
            $email = test_input($_POST["email"]);
          }
         if (empty($_POST["website"]))
             /*চেক করবে এই ফিল্ডের এর ডাটা ইউজার ইনপুট করেছিল কিনা
               যদি না করে থাকে তাহলে span id এর ভিতরে এইচটিএমএল পার্ট
               এর ভিতরে যেখানে আমরা লিখেছিলাম সেইখানে ডিসপ্লে করবে*/
         {
           $website = "";
         }
         else 
         {
           $website = test_input($_POST["website"]);
         }
           if (empty($_POST["comment"]))
               /*চেক করবে এই ফিল্ডের এর ডাটা ইউজার ইনপুট করেছিল কিনা
                 যদি না করে থাকে তাহলে span id এর ভিতরে এইচটিএমএল পার্ট
                 এর ভিতরে যেখানে আমরা লিখেছিলাম সেইখানে ডিসপ্লে করবে*/
         {
           $comment = "";
         }
         else {
           $comment = test_input($_POST["comment"]);
         }
         if (empty($_POST["gender"]))
               /*চেক করবে এই ফিল্ডের এর ডাটা ইউজার ইনপুট করেছিল কিনা
                 যদি না করে থাকে তাহলে span id এর ভিতরে এইচটিএমএল পার্ট
                 এর ভিতরে যেখানে আমরা লিখেছিলাম সেইখানে ডিসপ্লে করবে*/
         {
           $genderErr = "Gender is required";
         }
         else {
           $gender = test_input($_POST["gender"]);
         }
     }
 ?>

 

PHP Form Validation Example


* required field.

* Name: * E-mail:

* Website:

Comment:

Gender:
Female
Male