Category Archives: পি এইচ পি টিউটোরিয়াল । PHP tutorial

পি এইচ পি টিউটোরিয়াল php tutorial

সমস্যা এবং সমাধান ঃ SaLearningSchool এর হোস্টিং পরিবর্তন

আপাতত একটু বাংলা লেখার চেষ্টা । পরে উন্নয়ন করবো। বানান এ সমস্যা হবে। বলে রাখি, বাংলাতে অনেক আগে letter (multiple choice এর যুগে) পেয়েছিলাম।

SaLearningSchool.com এবং Bangla.SaLearningSchool.com কে ক্লাউড হোস্টিং এ নেয়া হয়েছে। জাস্ট কিছু অভিজ্ঞতা

১। SaLearningSchool.com - আসলে অনেক আগে ২০০৫-২০০৬ এর দিকে লিখা ছিল। বলা যায় টেস্ট কোড। পিএইচপি এর ভার্সন ৪ (অথবা পুরাতন) ব্যবহার করা হয়েছিল। mysql কম্যান্ড ব্যবহার করা হয়েছিল। mysqli তখন ছিল না অথবা নতুন ছিল। PDO ও হয়ত ছিল না।

এখন mysqli অথবা PDO বেশী আধুনিক । mysql এখন supported না। বাদ দেয়া হয়েছে, নতুন পিএইচপি ভার্সন এ।

তাই আমাকে mysqli ব্যবহার করতে হয়েছে নতুন হোস্টিং এ। PHP এর বিভিন্ন ভার্সন সার্ভারে রাখাটা ভালো ব্যাপার মনে হয় নাই। আবার mysql পিএইচপি থেকে বাদ দেয়া হয়েছে। PDO তে পরিবর্তন করা - অনেক বেশি কাজ (বেশী কোড পরিবর্তন করতে হবে ) এবং সময় নিবে । SaLearningSchool.com এখন প্রধান সাইট না। সব লিখা sitestree.com এ নেয়া হয়েছে। SaLearningSchool.com historical কারণ এ রাখা হচ্ছে। mysqli.

mysqli commands - যে গুলো ব্যবহার করা হয়েছে

mysqli_connect
mysqli_num_rows
mysqli_select_db
mysqli_query

mysqli_result - আসলে PHP এর নতুন ভার্সন এ নাই। তাই আমি mysqli_result ফাংশন ওয়েব থেকে কপি করে ব্যবহার করেছি। ওয়েব থেকে ব্যবহার করাটাই সহজ এবং কম সময় নিবে মনে হইছে (আমি এখানে বেস্ট সমাধান খুঁজি নাই, ফাস্ট সমাধান খুঁজছি) । mysqli_result - data_seek command ব্যবহার করেছে। অবশ্যই আমি mysql_result এর যায়গা গুলো তে mysqli_result ব্যবহার করেছি।

পিএইচপিঃ ইন্টারভিউয়ের প্রশ্নাবলী এবং উত্তরসমূহ। PHP Interview Questions and Answers

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

 

প্রিয় পাঠক, আপনারা পিএইচপি বিষয়ক ইন্টারভিউতে যে ধরনের প্রশ্নের সম্মুখীন হতে পারেন এখানে আমরা সে ধরনের কিছু প্রশ্নের ধারা দেখিয়েছি। অভিজ্ঞতা থেকে বলছি, ভাল সাক্ষাৎকার গ্রহণকারীরা কোনও নির্দিষ্ট প্রশ্ন প্ল্যানমাফিক করেন না,প্রথমে মৌলিক কিছু বিষয় নিয়ে আলোচনা করা হয়, পরে সেবিষয়ে বিস্তারিত আলোচনা চলে।

যে প্রশ্নগুলো সাধারণত আলোচনায় এসে থাকে সেগুলো হল,

পিএইচপি কী?

পিএইচপির মাধ্যমে হাইপারটেক্সট প্রিপ্রসেসর বোঝায়, এটি একটি সার্ভারসাইড স্ক্রিপ্টিং ল্যাঙ্গুয়েজ যা এইচটিএমএলের সাথে কাজ করে। ডাইনামিক কন্টেন্ট, ডাটাবেস, সেশন ট্র্যাকিং এমনকি সম্পূর্ণ ইকমার্স সাইট তৈরিতে এটি ব্যবহার হতে পারে।

 

পিএইচপির সাধারণ ব্যবহারগুলি কি কি?

পিএইচপি যে ধরনের কাজ সাধারণত করে থাকে সেগুলো হল,

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

 

কতগুলো উপায়ে আপনি এইচটিএমএল পেজে পিএইচপি কোড এমবেড করতে পারেন?

তিনটি মার্কআপ ট্যাগ আছে যা পিএইচপি পারসার অনুমোদিত, সমস্ত পিএইচপি কোড অবশ্যই এদের যেকোন একটির মাধ্যমে অন্তর্ভুক্ত হবে।


<?php PHP code goes here ?>
<?    PHP code goes here ?>
<script language="php"> PHP code goes here </script>
Most common tag is the <?php...?>

সবচেয়ে কমন ট্যাগ হল<?php...?>।

 

php.ini  ফাইলের উদ্দেশ্য কী?

এটি  পিএইচপি কনফিগারেশন ফাইল, পিএইচপির ফাংশনালিটিতে প্রভাব বিস্তারের চূড়ান্ত ও সবচেয়ে কার্যকর পদ্ধতি। অন্য ওয়ার্ডে পিএইচপি শুরু হওয়ার সময়, মডিউল ভার্সনের জন্য httpd রিস্টার্টের সময়, অথবা CGI ভার্সনের জন্য স্ক্রিপ্ট সম্পাদনের সময় php.ini ফাইল পড়া হয়। কাঙ্খিত পরিবর্তন দৃশ্যমান না হলে থেমে আবার httpd  রিস্টার্ট করতে হয়। এরপরও কাঙ্খিত পরিবর্তন দৃশ্যমান না হলে phpinfo() দ্বারা php.ini এর পাথ চেক করতে হবে।

 

এস্কেপিং টু পিএইচপি কী?

কোনও পেজের অন্যসব উপাদান থেকে পিএইচপি কোডকে আলাদা করার ক্ষেত্রে পিএইচপি পারসিং এঞ্জিনের একটি উপায় দরকার হয়। সেই কৌশলকে ‘এস্কেপিং টু পিএইচপি’ বলা হয়।

 

পিএইচপিকে হোয়াইটস্পেস ইনসেনসিটিভ বলা হয়, এবিষয়ে কি জানেন?

হোয়াইটস্পেস টাইপ করা এমন বিষয় যা সাধারণত স্ক্রিনে অদৃশ্য, স্পেস, ট্যাব ও ক্যারেজ রিটার্ন এর অন্তর্ভুক্ত। পিএইচপিকে হোয়াইটস্পেস ইনসেনসিটিভ বলা হয় কারণ কতগুলো হোয়াইটস্পেস ক্যারেক্টার একটি রোতে আছে তা ধর্তব্য না, একটি হোয়াইটস্পেস ক্যারেক্টার এরকম অনেকগুলো সম্মিলিত ক্যারেক্টারের কাজ করে।

 

পিএইচপি কি কেস সেনসিটিভ ভাষা?

হ্যাঁ।

 

পিএইচপি ভেরিয়েবলের গুরুত্বপূর্ণ বৈশিষ্ট্য কী?

পিএইচপি ভেরিয়েবলকে লিডিং ডলার সাইন ($) দ্বারা প্রকাশ করা হয়, ভেরিয়েবলের মান হল সর্বশেষ এসাইনমেন্টের মান। ভেরিয়েবল = অপারেটর দ্বারা এসাইন থাকে।

 

বিভিন্ন ধরনের পিএইচপি ভেরিয়েবলগুলো কী কী?

পিএইচপিতে আট ধরনের ডাটা টাইপ আছে যাদের আমরা ভেরিয়েবল হিসেবে ব্যবহার করতে পারি। এরা হল ইন্টেজার,ডাবলস, বুলিয়ান, নাল, স্ট্রিং , অ্যারি, অবজেক্ট, রিসোর্স।

 

পিএইচপি ভেরিয়েবলের নামকরণের নিয়ম কী?

ভেরিয়েবলের নাম লেটার বা আন্ডারস্কোর দিয়ে শুরু হবে, ভেরিয়েবলের নামের মধ্যে লেটার, আন্ডারস্কোর বা নাম্বার থাকতে পারে কিন্তু + , - , % , ( , ) . &, এসব চিহ্ন থাকতে পারবে না।

 

কোনও ভেরিয়েবল বুলিয়ান টাইপের না- এর সত্যতা  নিশ্চিত হতে কী নিয়ম আছে?

যদি এর মান সংখ্যা হয় তবে শূন্যের সমান  হলে মিথ্যা, অন্য আরকিছু হলে সত্য হবে। এর মান স্ট্রিং হয় তবে এটি খালি হলে অর্থাৎ স্ট্রিং "0" হলে মিথ্যা, অন্য আরকিছু হলে সত্য হবে। নাল টাইপের ভ্যালু সব সময় মিথ্যা। যদি এর মান অ্যারি হয় তবে অন্য কোনও মান বহন না করলে মিথ্যা, নতুবা সত্য হবে। অবজেক্টের ক্ষেত্রে তবে অন্য কোনও মান বহন করা মানে সদস্য ভেরিয়েবল থাকা যা কিনা কোনও মান বিবৃত করে। ভ্যালিড রিসোর্স সত্য। ডাবলসকে বুলিয়ান হিসেবে ব্যবহার করা যাবে না।

 

নাল কী?

নাল একটি বিশেষ শ্রেণীর ভেরিয়েবল যার মাত্র একটি মান থাকে।

 

পিএইচপিতে  ধ্রুবককে কীভাবে বিবৃত করবেন?

define() ফাংশন ব্যবহার করে পিএইচপিতে  কোনও ধ্রুবককে বিবৃত করা যায়, পুনরায় কোনও মানকে ফিরিয়ে আনতে এর নাম স্পেসিফাই করতে হয়।

 

constant() ফাংশনের কাজ কী?

এটি ধ্রুবকের মান ফিরিয়ে আনে। পুনরায় কোনও মানকে ফিরিয়ে আনার ক্ষেত্রে নাম না জানা থাকলে এই ফাংশন কাজে লাগে।

 

constant() ফাংশনের উদাহরণ দিন।


<?php
define("MINSIZE", 50);
echo MINSIZE;
echo constant("MINSIZE"); // same thing as the previous line
?>


ধ্রুবকে কেবল স্কেলার ডাটা থাকতে পারে।

 

পিএইচপি ধ্রুবক ও চলকের মধ্যে পার্থক্য কী?

ধ্রুবকের আগে ডলার সাইন($)লেখার দরকার আছে, কিন্তু চলকের আগে দরকার নাই।ধ্রুবক  define() ফাংশন ছাড়া বিবৃত হতে পারে না, এটি যেকোনো স্থানে চলক সংক্রান্ত নিয়ম ছাড়াই বিবৃত ও অন্তর্ভুক্ত হতে পারে।

 

পিএইচপি ম্যাজিক কন্সটেন্ট কী?

পিএইচপি যেকোনো স্ক্রিপ্টে পূর্বনির্ধারিত অনেক ধ্রুবক ব্যবহার করে। এদের পিএইচপি ম্যাজিক কন্সটেন্ট বলে।

 

_LINE_ কন্সটেন্টের কাজ কী?

এটি ফাইলের বর্তমান লাইনের অবস্থান নির্দেশ করে।

 

_FILE_ কন্সটেন্টের কাজ কী?

এটি ফাইলের ফুল পাথ ও ফাইলনেম নির্দেশ করে।

 

_FUNCTION_ কন্সটেন্টের কাজ কী?

এটি ফাইলের ফাংশন নেম নির্দেশ করে।

 

_CLASS_ কন্সটেন্টের কাজ কী?

এটি ফাইলের ক্লাস নেম নির্দেশ করে।

 

_METHOD_ কন্সটেন্টের কাজ কী?

এটি ফাইলের ক্লাস মেথডের  নেম নির্দেশ করে।

 

ব্রেক স্টেটমেন্টের কাজ কী?

ব্রেক ‘ফর লুপ’ ও সুইচ স্টেটমেন্টকেকে টারমিনেট করে।

 

কন্টিনিউ স্টেটমেন্টের কাজ কী?

কন্টিনিউ রিমাইন্ডার স্কিপ করার জন্য লুপ তৈরি করে এবং পুনরাবৃত্তির প্রেক্ষিতে এর কন্ডিশন নিরীক্ষণ করে।

 

'foreach' লুপের জন্য সিনট্যাক্স ব্যাখ্যা করুন?

'foreach' স্টেটমেন্ট অ্যারির মাধ্যমে লুপ তৈরি করে সহায়তা করে। এর সিনট্যাক্স হল,


foreach (array as value)
{
    code to be executed;
}

 

নিউমেরিক অ্যারি কী?

নিউমেরিক অ্যারি একধরনের অ্যারি যাতে নিউমেরিক ইনডেক্স আছে। লিনিয়ার ফ্যাশনে মান সংরক্ষণ ও এতে প্রবেশ করা যায়।

 

এসোসিয়েট অ্যারি কী?

এসোসিয়েট অ্যারি একধরনের অ্যারি যাতে ইনডেক্স হিসেবে স্ট্রিং ব্যবহৃত হয়। এটি মান সংশ্লিষ্ট উপাদানকে লিনিয়ার ইনডেক্স অর্ডারের পরিবর্তে কী-ভ্যালুর সমন্বয়ে সংরক্ষণ করে।

 

মাল্টিডাইমেন্সনাল অ্যারি কী?

এই অ্যারি একধরনের অ্যারি যাতে মাল্টিপল ইনডাইস ব্যবহার করে এক বা একাধিক অ্যারি ও মান অন্তর্ভুক্ত করা হয়।

 

পিএইচপিতে দুটি স্ট্রিংকে কীভাবে পরপর সমন্বয় করা যায়?

ডট অপারেটর (.) ব্যবহার করে এটি করা যায়,


<?php
$string1="Hello World";
$string2="1234";
echo $string1 . " " . $string2;
?>

যা থেকে আমরা এই ফলাফল পাব,

Hello World 1234

 

পিএইচপিতে কোনও স্ট্রিংএর লেন্থ বের করা যায় কীভাবে?

strlen() ফাংশন ব্যবহার করে আমরা এটি করতে পারি। যেমন "Hello world!" স্ট্রিংএর লেন্থ বের করা যাক,


<?php
echo strlen("Hello world!");
?>

যার ফলাফল পাব ১২।

 

পিএইচপিতে কোনও স্ট্রিংএর ভেতর অন্য কোনও স্ট্রিংএর অবস্থান কীভাবে সনাক্ত করা যাবে?

স্ট্রিংএর ভেতর অন্য কোনও স্ট্রিং বা ক্যারেক্টার খুঁজতে strpos() ফাংশন ব্যবহার করা হয়।


<?php
echo strpos("Hello world!","world");
?>

এটি ফলাফল দেখাবে, ৬।

 

পিএইচপিতে এনভায়রনমেন্ট ভেরিয়েবল কীভাবে পাবেন?

getenv() ফাংশন ব্যবহার করে আমরা পিএইচপিতে এনভায়রনমেন্ট ভেরিয়েবলের মান পাব।

 

পিএইচপিতে ব্রাউজারের ডিটেইল কীভাবে পাওয়া যাবে?

HTTP_USER_AGENT এই এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করে ব্রাউজারের ডিটেইল পাওয়া যাবে।

 

পিএইচপিতে রেনডম নাম্বার কীভাবে জেনারেট করা যায়?

rand()ফাংশন ব্যবহার করে রেনডম নাম্বার জেনারেট করা যায়।

 

$_PHP_SELF ভেরিয়েবলের কাজ কী?

এটি স্ক্রিপ্ট নেমের জন্য ব্যবহৃত হয়, এটি প্রয়োগের পর "submit" বাটনে চাপলে একই স্ক্রিপ্ট পাওয়া যাবে।

 

পিএইচপিতে কোনও পেজ রিডাইরেক্ট করতে হলে কী করতে হবে?

header() ফাংশন ব্যবহার করে এটি করা যায়, এটি ব্রাউজারে র(raw) এইচটিটিপি হিডার সাপ্লাই করে এটি করে।

 

পিএইচপি ব্যবহার করে ফাইল ডাউনলোড ডায়ালগ বক্স কীভাবে দেখাতে পারবেন?

এইচটিটিপি হিডার মূল হিডার থেকে আলাদা হবে যেখানে আমরা কন্টেন্ট টাইপ হিসেবে text/html\n\n পাঠাই। এক্ষেত্রে কন্টেন্ট টাইপ application/octet-stream ভিত্তিক হবে এবং মূল কন্টেন্ট নেম এর সাথে ক্রমানুসারে এরসাথে সংযুক্ত থাকবে। যেমন, কোনও লিঙ্ক থেকে ডাউনলোডের উপযোগী FileName নামের ফাইল তৈরি করতে চাইলে এর সিনট্যাক্স হবে,


#!/usr/bin/perl
# HTTP Header
print "Content-Type:application/octet-stream; name=\"FileName\"\r\n";
print "Content-Disposition: attachment; filename=\"FileName\"\r\n\n";
# Actual File Content
open( FILE, "<FileName" );
while(read(FILE, $buffer, 100) )
{
   print("$buffer");
}

 

পিএইচপিতে গেট মেথডে তথ্য পাওয়ার উপায় কী?

পিএইচপিতে $_GET এসোসিয়েটিভ  অ্যারি ব্যবহার করে গেট মেথডে তথ্য পাওয়া যায়।

 

পিএইচপিতে পোস্ট মেথডে তথ্য পাওয়ার উপায় কী?

পিএইচপিতে $_POST এসোসিয়েটিভ  অ্যারি ব্যবহার করে গেট মেথডে তথ্য পাওয়া যায়।

 

$_REQUEST ভেরিয়েবলের কাজ কী?

$_REQUEST ভেরিয়েবল $_GET, $_POST,ও $_COOKIE এই সবগুলি ভেরিয়েবলের উপাদান সংরক্ষণ করে।

 

অ্যারি তৈরি করতে কোন ফাংশন ব্যবহার করবেন?

array() − এর মাধ্যমে অ্যারি তৈরি করা যায়।

 

কোনও অ্যারি সর্ট করতে হলে কোন কোড ব্যবহার করতে হবে?

অ্যারি সর্ট করতে sort() ব্যবহার করতে হবে

 

সিঙ্গেল কোটেড স্ট্রিং আর ডাবল কোটেড স্ট্রিংএর মধ্যে পার্থক্য কী?

সিঙ্গেল কোটেড স্ট্রিং আক্ষরিক ভাবে প্রয়োগ হয় যেখানে ডাবল কোটেড স্ট্রিং তাদের মান দ্বারা চলককে প্রতিস্থাপিত করে। যেমন,


<?php
$variable = "name";
$literally = 'My $variable will not print!\\n';
print($literally);
print "<br />";
$literally = "My $variable will print!\\n";
print($literally);
?>

 

এটি যে ফলাফল দেখাবে তা হল,

My $variable will not print!\n

My name will print

 

দুটি স্ট্রিং কীভাবে সমন্বয় অর্থাৎ কনক্যাটেনেট করবেন?

দুটি স্ট্রিং চলককে কনক্যাটেনেট করতে ডট অপারেটর ব্যবহার করতে হবে, যেমন,


<?php
$string1="Hello World";
$string2="1234";
echo $string1 . " " . $string2;
?>

এটি যে ফলাফল দেখাবে তা হল,

Hello World 1234

 

$_REQUEST ভেরিয়েবলের ব্যবহার কী?

পিএইচপি $_REQUEST ভেরিয়েবল $_GET, $_POST, ও $_COOKIE এসবের উপাদানকে ধারণ করে।

 

একটি পিএইচপি ফাইলের কন্টেন্টকে কীভাবে অন্য একটি পিএইচপি ফাইলে অন্তর্ভুক্ত করা যাবে?

দুটি ফাংশন ব্যবহার করে একটি পিএইচপি ফাইলের কন্টেন্টকে অন্য একটি পিএইচপি ফাইলে অন্তর্ভুক্ত করা যাবে,

include() ফাংশন ও require() ফাংশন

 

include()ফাংশন ও require()ফাংশনের মধ্যে পার্থক্য কী?

কোনও ফাইল লোডের সময় সমস্যা হলে require() ফাংশন ফেটাল এরর দেখায় এবং স্ক্রিপ্ট সম্পাদন থামিয়ে দেয় কিন্তু include() ফাংশন ওয়ার্নিং দিলেও স্ক্রিপ্ট সম্পাদন চালিয়ে যায়।

 

রিড অনলি মোডে ফাইল ওপেন করতে হলে কী করতে হবে?

পিএইচপি fopen() ফাংশন ব্যবহার করে এটি করা যাবে।

 

পিএইচপিতে কোনও ফাইল পড়তে কী করতে হবে?

fopen() ফাংশন দ্বারা ওপেন করা কোনও পিএইচপি ফাইলকে fread() ফাংশন দ্বারা পড়া যাবে। এক্ষেত্রে দুটি আর্গুমেন্টের প্রয়োজন হয়, ফাইল পয়েন্টার থাকতে হয় এবং ফাইলের লেন্থ বাইটে প্রকাশ করা হতে হবে।

 

কোনও পিএইচপি ফাইলের আকার কীভাবে জানা যাবে?

filesize() ফাংশন ব্যবহার করে।

 

কোনও ফাইল আছে না নেই তা পিএইচপিতে কীভাবে জানা যাবে?

file_exist() ফাংশন ব্যবহার করে কোনও ফাইলের অস্তিত্ব সম্পর্কে নিশ্চিত হওয়া যাবে।

 

ফাংশন প্যারামিটারে কি ডিফল্ট ভ্যালু আরোপ করা যাবে?

হ্যাঁ। ডিফল্ট ভ্যালু পেতে প্যারামিটার সেট করা যাবে যদি ফাংশনের কলার এটিকে পাশ না করে।

 

পিএইচপি ব্যবহার করে কীভাবে কুকিজ সেট করা যায়?

setcookie() ফাংশন ব্যবহার করে পিএইচপিতে কুকিজ সেট করা যায়।

setcookie(name, value, expire, path, domain, security);

 

পিএইচপিতে কীভাবে কুকিজ পাওয়া যায়?

বিভিন্নভাবে পাওয়া যায়, সবচেয়ে সহজ উপায় হল $_COOKIE বা $HTTP_COOKIE_VARSচলক ব্যবহার করে।

 

কোনও কুকিজ সেট করা আছে না নেই তা পিএইচপিতে কীভাবে জানা যাবে?

isset() ফাংশন ব্যবহার করে কোনও কুকিজ সেট করা আছে না নেই তা জানা যাবে।

 

কুকিজ কীভাবে ডিলিট করবেন?

কুকিজ ডিলিট করতে নামের আর্গুমেন্ট সহ setcookie() ফাংশন কল করতে হবে।

 

পিএইচপিতে সেশন শুরু করে কীভাবে?

সেশন শুরুর জন্য session_start() ফাংশন ব্যবহার করে কল করতে হয়।

 

পিএইচপিতে সেশন চলকে প্রবেশের জন্য কী করতে হবে?

সেশন চলক $_SESSION[] নামক এসোসিয়েটিভ অ্যারিতে সঞ্চিত থাকে। কোনও সেশনের সক্রিয় কালে এই চলকে প্রবেশ করা সম্ভব।

 

সেশন চলক সেট করা আছে না নেই তা পিএইচপিতে কীভাবে জানা যাবে?

isset() ফাংশন ব্যবহার করে সেশন চলক সেট করা আছে না নেই তা জানা যাবে।

 

একক সেশন চলককে আনসেট করতে কী করতে হবে?

একক সেশন চলককে আনসেট করতে নিচের মত করে কোড ব্যবহার করতে হবে,


<?php
   unset($_SESSION['counter']);
?>

 

পিএইচপিতে সেশন ডেস্ট্রয় করতে কি করা লাগে?

session_destroy() ফাংশন ব্যবহার করে এটি করা যায়।

 

পিএইচপিতে কীভাবে ইমেইল করা যায়?

mail() ফাংশন ব্যবহার করে পিএইচপিতে ইমেইল করা যায়। উদাহরণ দেয়া যাক,


mail( to, subject, message, headers, parameters );

 

 

পিএইচপিতে $_FILES চলকের কাজ কী?

এটি একটি বৈশ্বিক চলক, এটি দ্বিমাত্রিক অ্যারি এবং আপলোডকৃত ফাইলের সব তথ্য সঞ্চিত রাখে।

 

পিএইচপিতে আপলোডকৃত ফাইলে প্রবেশ করা যায় কেমন করে?

$_FILES['file']['tmp_name'] ফাংশন ব্যবহার করে। এটি ওয়েব সার্ভারের টেম্পোরারি ডিরেক্টরিতে আপলোডকৃত ফাইলে প্রবেশের ব্যবস্থা করে দেয়।

 

পিএইচপিতে আপলোডকৃত ফাইলের প্রকৃত নামে প্রবেশ করা যায় কেমন করে?

$_FILES['file']['name']ফাংশন ব্যবহার করে।

 

পিএইচপিতে আপলোডকৃত ফাইলের সাইজে প্রবেশ করা যায় কেমন করে?

$_FILES['file']['size'] ফাংশন ব্যবহার করে।

 

পিএইচপিতে আপলোডকৃত ফাইলের কন্টেন্ট টাইপে প্রবেশ করা যায় কেমন করে?

$_FILES['file']['type'] ফাংশন ব্যবহার করে।

 

পিএইচপিতে আপলোডকৃত ফাইলের এরর কোডে প্রবেশ করা যায় কেমন করে?

$_FILES['file']['error'] ফাংশন ব্যবহার করে।

 

পিএইচপিতে $GLOBALSচলকের কাজ কী?

এই চলক স্ক্রিপ্টের গ্লোবাল স্কোপে অবস্থিত সব চলকের রেফারেন্স নির্দেশ করে।

 

পিএইচপিতে $_SERVER চলকের কাজ কী?

এটি এমন অ্যারি যা হিডার, পাথ এবং স্ক্রিপ্ট লোকেশন সম্পর্কে তথ্য সংরক্ষণ করে। ওয়েব সার্ভার এই অ্যারির এন্ট্রিগুলো তৈরি করে থাকে।

 

পিএইচপিতে $_COOKIE চলকের কাজ কী?

এটি সেইসব চলকের এসোসিয়েটিভ অ্যারি যারা এইচটিটিপি কুকিজ হয়ে কারেন্ট স্ক্রিপ্টে আসে।

 

পিএইচপিতে $_SESSION চলকের কাজ কী?

এরা সেইসব এসোসিয়েটিভ অ্যারি যারা কারেন্ট স্ক্রিপ্টে থাকা সেশন ভেরিয়েবল ধারণ করে।

 

পিএইচপিতে $_PHP_SELF চলকের কাজ কী?

এটি একটি স্ট্রিং যা পিএইচপি স্ক্রিপ্ট ফাইল নেম ধারণ করে।

 

পিএইচপিতে $php_errormsgচলকের কাজ কী?

এটি একটি চলক যা সর্বশেষ এরর ম্যাসেজের টেক্সট ধারণ করে ।

 

ereg()ফাংশন কীভাবে কাজ করে?

ereg()ফাংশন একটি স্ট্রিং খোঁজে,যা প্যাটার্ন দ্বারা নির্ধারিত। প্যাটার্ন পাওয়া গেলে ট্রু আর অন্য কিছু হলে ফলস দেখায়।

 

eregi()ফাংশন কীভাবে কাজ করে?

eregi()ফাংশন একটি স্ট্রিং খোঁজে,যা প্যাটার্ন দ্বারা নির্ধারিত।এই সার্চ কেস সেন্সেটিভ নয়।

 

split()ফাংশন কীভাবে কাজ করে?

split()ফাংশন স্ট্রিংকে বিভিন্ন অংশে বিভক্ত করে, স্ট্রিঙে অকারেন্সের প্যাটার্নের উপর অংশগুলোর ধরণ নির্ভর করে।

 

preg_match()ফাংশন কীভাবে কাজ করে?

preg_match()ফাংশন স্ট্রিঙে প্যাটার্ন খোঁজে, কাঙ্খিত প্যাটার্ন থাকলে ট্রু আর না থাকলে ফলস দেখায়।

 

preg_split()ফাংশন কীভাবে কাজ করে?

preg_split()ফাংশন প্রায় split()ফাংশনের মতই কাজ করে,কেবল রেগুলার এক্সপ্রেশনগুলো প্যাটার্নের ইনপুট প্যারামিটার হিসেবে কাজ করে।

 

ভুল হলে এক্সেপ্সন ক্লাস ব্যবহার করে কীভাবে এরর ম্যাসেজ পুনরুদ্ধার করা যাবে?

getMessage() ব্যবহার করে।

 

ভুল হলে এক্সেপ্সন ক্লাস ব্যবহার করে কীভাবে কোড অফ এক্সেপ্সন পুনরুদ্ধার করা যাবে?

getCode()মেথড ব্যবহার করে।

 

ভুল হলে এক্সেপ্সন ক্লাস ব্যবহার করে কীভাবে সোর্স ফাইলনেম পুনরুদ্ধার করা যাবে?

getFile()মেথড ব্যবহার করে।

 

ভুল হলে এক্সেপ্সন ক্লাস ব্যবহার করে কীভাবে সোর্স লাইন পুনরুদ্ধার করা যাবে?

getLine()মেথড ব্যবহার করে।

 

ভুল হলে এক্সেপ্সন ক্লাস ব্যবহার করে কীভাবে স্টাক স্ট্রেস পুনরুদ্ধার করা যাবে?

getTrace()মেথড ব্যবহার করে।

 

ভুল হলে কীভাবে ফরম্যাটিং স্ট্রিং অফ স্ট্রেস পুনরুদ্ধার করা যাবে?

getTraceAsString()মেথড ব্যবহার করে এটি করা যাবে।

 

পিএইচপি ব্যবহার করে কীভাবে বর্তমান দিন ও সময় পাব?

time()ফাংশন ব্যবহার করে।

 

getdate() ফাংশনের কাজ কী?

এটি টাইম ষ্ট্যাম্প গ্রহণ করে তারিখ সম্পর্কিত এসসিয়েটিভ অ্যারি রিটার্ন করে।

 

date() ফাংশনের কাজ কী?

এটি ফরম্যাটিং স্ট্রিং রিটার্ন করে, যা ডেট হিসেবে পরিগনিত হয়।

 

পিএইচপি ব্যবহার করে কীভাবে মাইএসকিউএল ডাটাবেস কানেক্ট করবেন?

ডাটাবেস কানেকশন খোলার জন্য mysql_connect ফাংশন ব্যবহার করা যাবে।


connection mysql_connect(server,user,passwd,new_link,client_flag);

 

পিএইচপি ব্যবহার করে কীভাবে মাইএসকিউএল ডাটাবেস তৈরি করবেন?

mysql_queryফাংশন ব্যবহার করে। এই ফাংশন দুটি প্যারামিটার ব্যবহার করে।


bool mysql_query( sql, connection );

 

পিএইচপি ব্যবহার করে কীভাবে মাইএসকিউএল ডাটাবেস বন্ধ করবেন?

mysql_close ফাংশন ব্যবহার করে।


bool mysql_close ( resource $link_identifier );

 

পিএইচপি ব্যবহার করে কীভাবে এক্সএমএল ডকুমেন্ট বিশ্লেষণ করবেন?

পিএইচপি৫ এর নতুন SimpleXML মডিউল ব্যবহার করে এটি করা যায়।

 

পিএইচপিতে কি ক্লাস তৈরি করা সম্ভব?

হ্যাঁ!

 

পিএইচপি ক্লাসে কন্সট্রাকটর ফাংশন কীভাবে সংযুক্ত করবেন?

__construct() ফাংশন ব্যবহার করে।

 

পিএইচপি ক্লাসে ডিসট্রাকটর ফাংশন কীভাবে সংযুক্ত করবেন?

__destruct()ফাংশন ব্যবহার করে।

 

পিএইচপিতে একই অবজেক্টের ভেতরে থাকা কোনও অবজেক্টের ক্ষেত্রে সেই অবজেক্টের রেফারেন্সে প্রবেশ করবেন কীভাবে?

$thisএকটি বিশেষ চলক, এটি সেই অবজেক্ট( অবজেক্ট নিজে) বোঝায়, এর মাধ্যমে সেই অবজেক্টের রেফারেন্সে প্রবেশ  করা যাবে।

 

পিএইচপিতে অবজেক্ট তৈরি করা যাবে কীভাবে?

একবার ক্লাস তৈরি হয়ে গেলে সেই ক্লাসের অধীনে যত খুশি অবজেক্ট তৈরি করা যাবে। যেমন,


$physics = new Books;
$maths = new Books;
$chemistry = new Books;

 

পিএইচপিতে ক্লাসের মেম্বার ফাংশনকে কীভাবে ডাকা যাবে?

অবজেক্ট তৈরির পরে সেই অবজেক্ট রিলেটেড মেম্বার ফাংশনকে ডাকা যাবে। যেমন,


$physics−>setTitle( "Physics for High School" );
$chemistry−>setTitle( "Advanced Chemistry" );
$maths−>setTitle( "Algebra" );
$physics−>setPrice( 10 );
$chemistry−>setPrice( 15 );
$maths−>setPrice( 7 );

 

ফাংশন ওভাররাইডিং কী?

শিশু শ্রেণীর ফাংশন ডেফিনিশন বড়দের ক্লাসে একই নামে ফাংশন ওভাররাইডিং হয়ে থাকে।

 

পিএইচপিতে ইন্টারফেস কী?

ইন্টারফেস ইমপ্লিমেন্টরের জন্য কমন ফাংশন নেমের ব্যবস্থা করে।

 

ফাইনাল কীওয়ার্ডের কাজ কী?

এটি পিএইচপি৫ এর নতুন সংযোজন, এটি কিছু ক্ষেত্রে শিশু শ্রেণীর ফাংশন ওভাররাইডিং প্রতিহত করে।

 

এরপরে কী?

আগের সম্পন্ন করা এসাইনমেন্ট সম্পর্কে পরিষ্কার ধারণা থাকতে হবে, এগুলো নিয়ে পরিষ্কারভাবে, আত্মবিশ্বাসের সাথে কথা বলার দক্ষতা থাকতে হবে। আপনি নতুন হলে যারা সাক্ষাৎকার নিচ্ছেন তাঁরা খুব জটিল প্রশ্নের উত্তর আপনার কাছ থেকে আশা করবে না বরং আপনার নিজের বেসিক ভাল করার চেষ্টা করা উচিৎ।

আরেকটি বিষয় হল কিছু প্রশ্নের উত্তর আপনি না দিতে পারলেও দেখার বিষয় হল আপনি  আত্মবিশ্বাসের সাথে প্রশ্নের উত্তর দিচ্ছেন কিনা। তাই সাক্ষাৎকারের সময় আত্মবিশ্বাসী থাকুন। আমরা টিউটোরিয়ালস পয়েন্টের পক্ষ থেকে আপনার সার্বিক মঙ্গল কামনা করছি, আশা করছি অবশ্যই সাক্ষাৎকার সফল হবে।

 

পিএইচপি ৫ ফরম – ই-মেইল এবং URL সন্নিবেশ করা (PHP 5 Forms – Validate E-mail and URL)

এই অধ্যায়ে আমরা ই-মেইল ও URL কিভাবে বেলিডেট করা যায় সে সম্পর্কে আলোচনা করবো।

পিএইচপি - নাম যাচাই করা

নিচের কোডটি নিশ্চিত করে যে, এতে শুধুমাত্র লেটার বা বর্ণ থাকবে এবং কোন ফাঁকা স্থান থাকবে না। যদি শর্ত না মানে তাহলে এরর ম্যাসেজ দেখাবে।


$name = test_input($_POST["name"]);
 if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
   $nameErr = "Only letters and white space allowed"; 
 }

 

preg_match() ফাংশন স্ট্রিং এর ধরণ খুঁজে দেখে এবং যদি ফাংশনে উল্লেখিত ধরণ সঠিক থাকে তাহলে সত্য ফেরত দেয় না হলে মিথ্যা ফেরত দেয়।

 

পিএইচপি - ই-মেইল যাচাই করা

filter_var() ফাংশনের মাধ্যমে পিএইচপি যাচাই করে দেখে যে ই-মেইল এন্ট্রিটি সঠিকভাবে প্রবেশ করানো হয়েছে কিনা।


$email = test_input($_POST["email"]);
 if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
   $emailErr = "Invalid email format"; 
 }

 

 

পিইএচপি - URL যাচাই করা

নিচের কোডটি URL ঠিকানা ঠিকভাবে লেখা হয়েছে কিনা তা যাচাই করে দেখে


$website = test_input($_POST["website"]);
 if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)
    [-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) {
   $websiteErr = "Invalid URL"; 
 }

 

 

পিইএচপি - নাম, ই-মেইল, URL যাচাইকরণ


<?php
 // define variables and set to empty values
 $nameErr = $emailErr = $genderErr = $websiteErr = "";
 $name = $email = $gender = $comment = $website = "";
 
 if ($_SERVER["REQUEST_METHOD"] == "POST") {
   if (empty($_POST["name"])) {
     $nameErr = "Name is required";
   } else {
     $name = test_input($_POST["name"]);
     // check if name only contains letters and whitespace
     if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
       $nameErr = "Only letters and white space allowed"; 
     }
   }
 
   if (empty($_POST["email"])) {
     $emailErr = "Email is required";
   } else {
     $email = test_input($_POST["email"]);
     // check if e-mail address is well-formed
     if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
       $emailErr = "Invalid email format"; 
     }
   }
 
   if (empty($_POST["website"])) {
     $website = "";
   } else {
     $website = test_input($_POST["website"]);
     // check if URL address syntax is valid 
        (this regular expression also allows dashes in the URL)
     if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)
        [-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) {
       $websiteErr = "Invalid URL"; 
     }
   }
 
   if (empty($_POST["comment"])) {
     $comment = "";
   } else {
     $comment = test_input($_POST["comment"]);
   }
 
   if (empty($_POST["gender"])) {
     $genderErr = "Gender is required";
   } else {
     $gender = test_input($_POST["gender"]);
   }
 }
 ?>

 

 

পরবর্তী অধ্যায় এ ফর্ম সাবমিট করার পূর্বে সকল ফিল্ডগুলো পূরণ করা হয়েছে কিনা এবং না করলে কিভাবে সাবমিট করা থামানো যায় সে সম্পর্কে আলোচনা করা হবে।

 

 

পিএইচপি অপারেটর (PHP Operators)

ভেরিয়েবল এবং মুল্যের উপর অপারেশন সম্পাদন করতে অপারেটর ব্যবহার করা হয়।

পিএইচপি অপারেটরকে নিম্নলিখিত গ্রুপ এ ভাগ করা যায়:

  • গাণিতিক অপারেটর
  • অ্যাসাইনমেন্ট অপারেটর
  • তুলনা অপারেটর
  • বর্ধিত / হ্রাস অপারেটার
  • লজিক্যাল অপারেটর
  • স্ট্রিং অপারেটর
  • এরে অপারেটর

পিএইচপি গাণিতিক অপারেটর

পিএইচপি গাণিতিক অপারেটর যেমন উপরন্তু, বিয়োগ, গুণ, ইত্যাদি হিসাবে সাধারণ আঙ্কিক অপারেশন, সঞ্চালন সাংখ্যিক মান সঙ্গে ব্যবহার করা হয়।

অপারেটর নাম উদাহরণ ফলাফল
+ সংযোজন $x + $y $ X এবং $ y এর যোগফল
- বিয়োগ $x - $y $ X ও $ Y এর পার্থক্য
* গুণ $x * $y $ X এবং $ X এর গুণ
/ ভাগ $x / $y $ x এবং $ y এর ভাগফল
% বাকি $x % $y $ x এর ভাগফল
** সূচকীয় $x ** $y $ x এর পাওয়ার $ y এর ফলাফল

পিএইচপি অ্যাসাইনমেন্ট অপারেটর

পিএইচপি অ্যাসাইনমেন্ট অপারেটর ভ্যারিয়েবল এর মান লেখার জন্য সংখ্যাগত মান এর সাথে ব্যবহার করা হয়।
পিএইচপি মৌলিক অ্যাসাইনমেন্ট অপারেটর হচ্ছে "=" । এটা বাম operand এর মান ডান operand এর মান দ্বারা পরিবর্তিত হয়।

অ্যাসাইনমেন্ট হিসাবে একই ... বিবরণ
x = y x = y বাম operand এর মান ডান দিকের মানের সমান
x += y x = x + y সংযোজন
x -= y x = x - y বিয়োগ
x *= y x = x * y গুণ
x /= y x = x / y ভাগ
x %= y x = x % y ভাগশেষ

 

তুলনা অপারেটর

পিএইচপি তুলনা অপারেটর দুটি মান (সংখ্যা বা স্ট্রিং) এর মধ্যে তুলনা করতে ব্যবহৃত হয়:

অপারেটর নাম উদাহরণ ফলাফল
== সমান $x == $y $ x ও $ y সমান হলে TRUE প্রদান করে
=== অভিন্ন $x === $y $ x ও $ y সমান এবং একই টাইপের হলে TRUE প্রদান করে
!= সমান না $x != $y $x, $y এর সমান না হলে TRUE প্রদান করে
<> সমান না $x <> $y $x, $y এর সমান না হলে TRUE প্রদান করে
!== অভিন্ন নয় $x !== $y $ x ও $ y সমান না হলে অথবা একই টাইপের না হলে TRUE প্রদান করে
> তার চেয়ে অনেক বেশী $x > $y $x, $y এর থেকে বড় হলে TRUE প্রদান করে
< কম $x < $y $x, $y এর থেকে ছোট হলে TRUE প্রদান করে
>= এর চেয়ে বড় বা সমান $x >= $y $x, $y এর থেকে বড় অথবা সমান হলে TRUE প্রদান করে
<= এর চেয়ে কম বা সমান $x <= $y $x, $y এর থেকে ছোট অথবা সমান হলে TRUE প্রদান করে

 

বর্ধিত / হ্রাস অপারেটার PHP Increment / Decrement Operators

পিএইচপি বৃদ্ধি অপারেটরদের একটি ভেরিয়েবল এর মান বৃদ্ধি করতে ব্যবহার করা হয়।

পিএইচপি হ্রাস অপারেটরদের একটি ভেরিয়েবল এর মান হ্রাস করতে ব্যবহার করা হয়।

অপারেটর নাম বর্ণনা
++$x প্রাক-বৃদ্ধি $x এর মান এক বৃদ্ধি করে, তারপর $x এর মান প্রদান করে
$x++ পরবর্তীতে-বৃদ্ধি $x এর মান প্রদান করে, তারপর $x এর মান এক বৃদ্ধি করে
--$x প্রাক-হ্রাস $x এর মান এক হ্রাস করে, তারপর $x এর মান প্রদান করে
$x-- পরবর্তীতে-হ্রাস $x এর মান প্রদান করে, তারপর $x এর মান এক হ্রাস করে

 

লজিক্যাল অপারেটর

পিএইচপি লজিক্যাল অপারেটর শর্তাধীন বিবৃতি একত্রিত করতে ব্যবহার করা হয়।

অপারেটর নাম উদাহরণ ফলাফল
and And $x and $y সত্য যদি $x এবং $y উভয়ই সত্য হয়
or Or $x or $y সত্য যদি $x অথবা $y এর যেকোনটি সত্য হয়
xor Xor $x xor $y সত্য যদি $x অথবা $y সত্য হয়, কিন্তু উভয়ই সত্য না হয়
&& And $x && $y সত্য যদি $x এবং $y উভয়ই সত্য হয়
|| Or $x || $y সত্য যদি $x বা $y সত্য হয়
! Not !$x সত্য যদি $x সত্য না হয়

 

 

স্ট্রিং অপারেটর

 

পিএইচপি এ দুটি অপারেটর আছে যাদেরকে বিশেষভাবে স্ট্রিং এর জন্য ডিজাইন করা হয়েছে।

অপারেটর নাম উদাহরণ ফলাফল
. সংযুক্তকরণ $txt1 . $txt2 $txt1 এবং $txt2 কে সংযুক্ত করে
.= সংযুক্তকরণের অ্যাসাইনমেন্ট $txt1 .= $txt2 $txt2 কে $txt1 এর সাথে যুক্ত করে

 

পিএইচপি অ্যারে অপারেটর

পিএইচপি অ্যারে অপারেটর অ্যারেগুলোর মধ্যে তুলনা করতে ব্যবহার করা হয়।

অপারেটর নাম উদাহরন ফলাফল
+ মিলন $x + $y $x এবং $y এর মিলন
== সমতা $x == $y True প্রদান করে যদি $x এবং $y এর একই কী / মান জোড়া থাকে
=== পরিচিতি $x === $y True প্রদান করে যদি $x এবং $y এর একই ক্রম এবং প্রকার অনুসারে কী/মান জোড়া থাকে
!= অসাম্য $x != $y True প্রদান করে যদি $x, $y এর সমান না হয়
<> অসমতা $x <> $y True প্রদান করে যদি $x, $y এর সমান না হয়
!== অ-পরিচয় $x !== $y True প্রদান করে যদি $x, $y এর সাথে পরিচিত না হয়

 

আপনাকে ধন্যবাদ আমাদের টিউটোরিয়াল সাইটে আসার জন্য। আপনার যেকোন সমস্যা হলে আমাদের জানাবেন আমরা আপনাকে সহায়তা করতে চেষ্ট করব।

পিএইচপি ত্রুটি পরিচালনার ব্যবস্থা (PHP Error Handling)

পিএইচপি প্রোগ্রামিং এ একটি Default Error Handling built-in থাকে যা স্বয়ংক্রিয় ভাবে যে ফাইলে ভুল রয়েছে সেই ফাইলের নাম, যে লাইন এ ভুল হয়েছে তার নম্বর এবং কি ধরনের ভুল হয়েছে তা প্রদর্শন করে থাকে এবং ব্রাউসারে একটি error message প্রেরন করে। আমরা উক্ত error message দেখে খুব সহজে আমাদের করনিও নিরধারন করতে পারি।

পিএইচপি স্ক্রিপ্ট এবং ওয়েব অ্যাপ্লিকেশন তৈরি করার সময় যদি আমরা ত্রুটিপূর্ণ ফাইল পরিচালনা করি তাহলে আপনার প্রোগ্রাম খুব অপেশাদারী হতে পারে এবং এই অ্যাপ্লিকেশন এ নিরাপত্তা ঝুঁকি থেকে যাবে যা আমাদের মটেই কাম্য নয়।
সুতরাং পিএইচপি স্ক্রিপ্ট এ কোন প্রকার ত্রুটি রয়েছে কিনা তা নির্ধারণ করা একটি গুরুত্বপূর্ণ অংশ।

এই টিউটোরিয়ালটিতে আমরা পিএইচপি প্রোগ্রামিং এর কিছু সাধারণ ভুল রয়েছে তা সমাধান সহ বেশ কিছু জিনিস শিখবো। আমরা সমাধানের জন্য নিম্নোক্ত দুটি পদ্ধতি বর্ণনা করব।

"die()” statements এর সাহায্যে কিভাবে error handling করা যায় তা আলোচনা করব।


<?php
 $file=fopen("welcome.txt","r");
 ?>

 

প্রথমে আমরা একটি স্ক্রিপ্ট লিখব যা একটি .txt ফাইল খুলার নির্দেশ বহন করছে।


<?php
$file=fopen("welcome.txt","r");
?>

 

এখন যদি মূল পিএইচপি এর জন্য বরাদ্দকৃত ফোল্ডার এ এই welcome.txt ফাইলটির কোন অস্তিত্ব না থাকে তাহলে আমরা নিম্নক্ত error message পাব।


Warning: fopen(welcome.txt) [function.fopen]: failed to open stream:
No such file or directory in C:\webfolder\test.php on line 2


 

উপরোক্ত error messege দেখে খুব সহজেই বোঝা জাচ্ছে যে আমাদের webfolder এ welcome.txt নামের কোন ফাইল compiler খুজে পায় নি।

এখন আমরা "die()” statements এর সাহায্যে welcome.txt ফাইলটি আমাদের মূল webfolder এ আছে কিনা তা চেক করে দেখবো।


<?php
 if(!file_exists("welcome.txt")) {
   die("File not found");
 } else {
   $file=fopen("welcome.txt","r");
 }
 ?>

 

এই script পরিচালনা করার পর যদি ফাইলটি webfolder এ না থাকে তাহলে নিচের message টি পাবো এবং script পরিচালনা সয়ংক্রিওভাবে বন্ধ হয়ে যাবে।


“File not found”


 

এখন আমরা Custom Creator Handler এর সাহায্যে কিভাবে error handling করা যায় তা দেখবো। Custom Creator Handler এমন একটি ফাংসন যা script এ কোন error থাকলে এর সাহায্য নেয়া যাবে। এই ফাংসন এর সাহায্যে সর্বনিম্ন দুটি (error level এবং error message) থেকে পাঁচটি (file, line-number, এবং the error context) পর্যন্ত parameters ব্যবহার করা যাই।

Syntax গুলো নিম্নের নিয়মে লেখা যায়।


error_function(error_level,error_message,
error_file,error_line,error_context)

 

Parameter বর্ণনা

error_level অবশ্য প্রয়োজনীয়। এটি error report level প্রদর্শন করে থাকে এবং এর ফলাফল একটি value number হতে হবে।
error_message অবশ্য প্রয়োজনীয়। এটি error message প্রদর্শন করে থাকে।
error_file ঐচ্ছিক। এটি filename প্রদর্শন করে যেখানে error টি নম্পাদন হয়েছে।
error_line ঐচ্ছিক। এটি line number প্রদর্শন করে যেখানে error টি রয়েছে।
error_context ঐচ্ছিক। এটি একটি array নির্দিষ্ট করে, এবং script এ অন্তরভুক্ত প্রত্যেকটি variable এবং তাদের value প্রদর্শন করে থাকে।

Set Error Handler

আমরা আগেই জেনেছি যে, পিএইচপি তে Error Handler built-in থাকে। আমরা একটি function তৈরি করবো যা default error handler টিকে script পরিচালন এর সময় ব্যবহার করবো। তবে জরুরি কোন প্রয়জনে কিছু কিছু error এর জন্য default error handler টি পরিবর্তন করা যায়। নিম্নে একটি উধাহরন দেখান হল।


set_error_handler("customError");


 

যদি আমরা আমাদের নিজস্ব ফাংশন দিয়ে সব ত্রুটি হ্যান্ডেল করতে চাই তাহলে set_error_handler () একটি মাত্র parameter ব্যবহার করবো এবং দ্বিতীয় parameter টি error level এর জন্য ব্যাবহার করতে পারব। নিম্নে একটি উধাহরন দেখানো হল।


<?php
 //error handler function
 function customError($errno, $errstr) {
   echo "<b>Error:</b> [$errno] $errstr";
 }
 
 //set error handler
 set_error_handler("customError");
 
 //trigger error
 echo($test);
 ?>

 

পিএইচপি৫ : এ এক ফাইল এর মধ্যে অন্য ফাইল এর কোড ব্যবহার করা। (PHP 5 Include Files)

include ও require statement পিএইচপি প্রোগ্রামিং এর একটি গুরুত্বপূর্ণ অংশ যা ব্যবহার করে আপনি একটি ওয়েবসাইটে একাধিক পাতায় একই পিএইচপি, এইচটিএমএল, অথবা টেক্সট অন্তর্ভুক্ত করতে পারবেন যা আপনার পিএইচপি কোডিং কে সহজে ব্যাবহার যোগ্য এবং কোডিং এর আকার সংক্ষিপ্ত করে।

include file ব্যাবহারের মাধ্যমে ওয়েব পেইজ এর প্রতিটি পাতার জন্য একটি আদর্শ header, footer, এবং একটি মেন্যু ব্যাবহার করা যেতে পারে। যদি কখনও header অথবা footer অথবা মেন্যুতে জরুরি পরিবর্তন করতে হয় তাহলে শুধুমাত্র header অথবা footer অথবা মেন্যু অংশে পরিবর্তন আনলেই চলবে। এক্ষেত্রে পুরো পাতাই অন্য কোন পরিবর্তনের ঝামেলা নেই। উক্ত সুবিধার কারনেই পিএইচপি কোডিং এইচটিএমএল কোডিং থেকে নিরাপত্তা ও সহজে ব্যাবহারের দিক থেকে অনেক এগিয়ে।

মনে করি আমরা একটি footer ফাইল তৈরি করব যা আমাদের মূল ফাইলে অন্তরভুক্ত হবে। আমরা এই ফাইলটির নাম দিতে পারি “footer.php”


<?php
 echo "<p>Copyright &copy; 1999-" . date("Y") . 
       "http://bangla.salearningschool.com</p>";
 ?>

 

এখন উপরোক্ত footer.php ফাইলটি মূল পিএইচপি ফাইলে অন্তরভুক্ত করব।


<html>
 <body>
<h1>Welcome to my home page!</h1>
 <p>Lets Learn PHP.</p>
 <p>Some more text.</p>
 php include 'footer.php';?>
</body>
 </html>

 

আবার মনে করি আমরা একটি আদর্শ মেন্যু আমাদের মূল পিএইচপি ফাইলের সকল পেইজে ব্যবহার করব। সেক্ষেত্রে মেন্যু ফাইলটির নাম দেয়া হল "menu.php"


<?php
 echo '<a href="/default.asp">Home</a> -
 <a href="/html/default.asp">HTML Tutorial</a> -
 css/default.asp">CSS Tutorial -
 <a href="/js/default.asp">JavaScript Tutorial</a> -
 <a href="default.asp">PHP Tutorial</a>';
 ?>

 

এখন উপরোক্ত menu.php ফাইলটি মূল পিএইচপি ফাইলে অন্তরভুক্ত করব।


<html>
 <body>
<div class="menu">
 <?php include 'menu.php';?>
 </div>
<h1>Welcome to my home page!</h1>
 <p>Some text.</p>
 <p>Some more text.</p>
</body>
 </html>

 

include ও require এ দুটি statement এ যদি কোন ভুল থেকে থাকে তাহলে সাধারনত দু ধরনের error বার্তা প্রদর্শন করে থাকে।

include এর ক্ষেত্রে (E_COMPILE_ERROR) দেখাবে এবং স্ক্রিপ্ট বন্ধ হয়ে যাবে।
require এর ক্ষেত্রে (E_WARNING) দেখাবে কিন্তু স্ক্রিপ্ট বন্ধ না হয়ে চলমান থাকবে।

সুতরাং আপনি যদি include statement সংবলিত পিএইচপি কোডটি পরিচালনা করে এর ফলাফল প্রদর্শন করতে চান সেক্ষেত্রে include file ব্যাবহার অপরিহার্য। এতে যদি কোডিং এ কোন ভুল থাকে তাহলে তা (E_COMPILE_ERROR) দেখাবে। তবে জটিল পিএইচপি অ্যাপ্লিকেশন কোডিং ক্ষেত্রে require statement ই বেশী নিরাপদ এবং এটি উক্ত ফাইলের নিরাপত্তার জন্য নির্ভরযোগ্য।

পিএইচপি ৫ টিউটোরিয়াল (PHP 5 Tutorial in Bangla)

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

সাধারনত পিএইচপি একটি server site scripting language. Php ব্যবহার করে ওয়েব পেজ কে অতি আধুনিক এবং ডাইনামিক করে তলা যায়।

কোন লেখা কে আমরা পিএইচপি এর মাধ্যমে দেখাতে চাইলে echo বা print”” ব্যবহার করতে পারি। যেমন-


<!DOCTYPE html>
<html>
<body>

<?php
echo "My first PHP script!";
?>

</body>
</html>

নোটপ্যাড ওপেন করে এই example টুকু টাইপ করে ফাইল টি সেভ করুন .php extension দিয়ে। তা না হলে এটি পিএইচপি ফাইল হিসেবে চলবে না। আরও একটি বিষয় পিএইচপি ফাইল রান করার জন্য নির্দিষ্ট ভাবে একটি সারভার লাগবে তা না হলে কখনই এই পিএইচপি চলবে না। এইজন্য আপনি xampp server ইন্সটল করে নিতে পারেন। xampp ইন্সটল করার পর c > XAMPP >htdocs এর ভিতরে একটি ফোল্ডার ওপেন করুন আপনি যেকোনো নাম দিতে পারেন। মনে করুন আপনি নাম দিলেন test এবং আপনার ফাইল টি এই test ফোল্ডার এর ভিতর রাখুন। পিএইচপি এর ফাইল এর নাম যেকোনো রাখতে পারেন। ব্রাউজার ওপেন করে এড্রেস বারে লিখুন localhost/test/[পিএইচপি ফাইল এর নাম.php].go বাটন এ ক্লিক করলে দেখুন আপনি পিএইচপি তে লেখা ব্রাউজার এ দেখতে পারবেন।

পি এইচ পি ৫ ইন্সটলেশন (PHP 5 Installation)

PHP 5 ইনস্টলেশন

প্রতাপ চন্দ্র

 

PHP শিখতে গেলে আপনার নিজের পিসিতে কিংবা ওয়েব সার্ভারে এই সফটওয়্যারটি প্রয়োজন। তাই ইনস্টলেশনটা আগে শিখতে হবে।

PHP ইনস্টল করতে আমরা যেসব ব্যবস্থা নিতে পারি:

  • PHP এবং MySQL সাপোর্ট করে এমন একটি ওয়েব হোস্টিং খুজে বের করা। কিংবা,
  • আপনার নিজের কম্পিউটারে ওয়েব সার্ভার ইনস্টল করা এবং তারপর PHP এবং MySQL ইনস্টল করা।

আপনার ওয়েব সার্ভারে যদি আগে থেকেই PHP সাপোর্ট বিদ্যমান থাকে, তবে নতুন করে কিছু করতে হবে না। পিএইচপি এক্সটেনশনযুক্ত একটি ফাইল (*.php) তৈরী করুন এবং তা সার্ভারে আপলোড করুন। তাহলে সার্ভার এই ফাইল আপনার কাজের জন্য প্রস্তুত করে দিবে। আপনার অতিরিক্ত কোনো টুলস ইনস্টল করার প্রয়োজন হবে না। পিএইচপি একটি ফ্রি সফটওয়্যার এবং বেশিরভাগ ওয়েব হোস্টিং এটি সাপোর্ট করে।

নিজের পিসিতে PHP ইনস্টল

যদি আপনার ওয়েব সার্ভার পিএইচপি সাপোর্ট না করে তবে পিএইচপি শিখতে গেলে আপনাকে অবশ্যই নিজের পিসিতে এটি ইনস্টল করে নিতে হবে।
ধারাবাহিকভাবে আপনাকে যা করতে হবে:

  • নিজের পিসিতে একটি ওয়েব সার্ভার ইনস্টল করুন,
  • PHP ইনস্টল করুন,
  • MySQL বা অন্য কোনো ডাটাবেজ ইনস্টল করুন।

পিএইচপি’র অফিসিয়াল ওয়েবসাইটে এটি ইনস্টল করার বিস্তারিত নির্দেশনা দেয়া আছে। সাইটের লিংক ব্রাউজ করতে ক্লিক করুন –
http://php.net/manual/en/install.php

 

পি এইচ পি ৫ সিন্ট্যাক্স (PHP 5 Syntax)

পিএইচপি হলো একটি প্রোগ্রামিং ল্যাগুয়েজ যা ওয়েব ডেভেলপমেন্ট এর জন্য বহুল ব্যবহৃত।

পিএইচপি কোড এর প্রতিটি অংশ < ?php চিহ্ন দিয়ে শুরু এবং ?> চিহ্ন দিয়ে শেষ হবে।
এবার আপনার কোড এডিটর (নোটপ্যাড/ড্রিময়েভার বা আপনি যা ব্যাবহার করেন) খুলুন এবং নিচের মত লিখুনঃ


< ?php
 // PHP code goes here
 ?>

 

 

পিএইচপি কোড কে কাজ করাতে অবশ্যই ফাইলটি সেভ করার সময় .php এক্সটেনশন দিয়ে সেভ করতে হবে। যদি .html থাকে তাহলে পিএইচপি কোড execute হবেনা।

এবার তাহলে ছোট একটা কোড লেখা যাক।


<!DOCTYPE html>
 <html>
 <body>
 
 <h1>My first PHP page</h1>
 
 <?php
 echo "Hello World!";
 ?>
 
 </body>
 </html>

 
উপরে লক্ষ্য করুন echo নামে একটা ফাংশন ব্যবহার করা হয়েছে যেটা দিয়ে php তে কোনো লেখা প্রদর্শন করানো হয়। তারপর লক্ষ্য করুন ";" সেমিকোলন চিহ্ন ব্যবহার করা হয়েছে। এটা দিয়ে পিএইচপি-তে কোনো লাইন শেষ বুঝনো হয়। অর্থাৎ কোনো লাইনের শেষে ; দিয়ে সেই লাইনের এক্সিকিউশন বন্ধ করা হয়। উদাহরণঃ " Hello World!"

PHP তে কমেন্ট

কোনো প্রোগ্রামিং লান্গুয়েজে যখন কমেন্ট বা মন্তব্য যোগ করা হয় তখন তা এক্সিকিউশন হয় না। কমেন্ট সাধারনত সাহায্যকারী হিসেবে ব্যবহৃত হয়। যাতে একটা কোড লেখা দেখে সহজে বুঝা যায় যে কোডটি কেন লেখা হয়েছে। পিএইচপি-তে সাধারনত তিন ধরনের কমেন্ট ব্যবহার করা হয়।

উদাহরণঃ


<!DOCTYPE html>
 <html>
 <body>
 
 <?php
 // This is a single-line comment
 
 # This is also a single-line comment
 
 /*
 This is a multiple-lines comment block
 that spans over multiple
 lines
 */
 
 // You can also use comments to leave out parts of a code line
 $x = 5 /* + 15 */ + 5;
 echo $x;
 ?>
 
 </body>
 </html>

 

single line comment - // এই চিহ্ন দ্বারা।
এখানে // এই চিহ্ন এর পরের This is single line comment এই লেখাটি ব্রাউজার প্রদর্শন করবে না। কারণ এইটা কমেন্ট এর মধ্যে লেখা

multi-line comment - /* */
এখানে # এর পরের লেখাগুলোও ব্রাউজার দেখাবে না। কারণ এটাও একটা কমেন্ট। এটাকে বলা হয় ইউনিক্সের শেল স্টাইল মন্তব্য। এই স্টাইলটা বেশি ব্যবহৃত হয় কোনো পিএইচপি কনফিগারেশন বা মান সম্পর্কিত মন্তব্য যোগ করতে।

পি এইচ পি ৫ ইকো এবং প্রিন্ট স্ট্যাটমেন্ট (PHP 5 echo and print Statements)

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

 

Php তে ফলাফল পাওয়ার জন্য আমাদের echo বা print ব্যবহার করতে হয়। পিএইচপি এর প্রায় সব উদাহরন এ print বা echo এর ব্যবহার দেখতে পাওয়া যায়। কমবেশি print এবং echo এর ফাংশন প্রায় একই। তবে print এর তুলনায় echo একটু তারাতারি কাজ করে।
Echo statement ব্যবহার করে পিএইচপি তে একটি উদাহরন দেখা যাক


<?php
 echo "<h2>PHP is Fun!</h2>";
 echo "Hello world!<br>";
 echo "I'm about to learn PHP!<br>";
 echo "This ", "string ", "was ", "made ", "with multiple parameters.";
 ?>

 

এটি যদি রান করি তাহলে ফলাফল দেখা যাবে


PHP is Fun!

Hello world!
I'm about to learn PHP!
This string was made with multiple parameters.


 

Print statement ব্যবহার করে পিএইচপি তে যদি উদাহরন দেখি


<?php
 print "<h2>PHP is Fun!</h2>";
 print "Hello world!<br>";
 print "I'm about to learn PHP!";
 ?>

 

এটা যদি রান করি তাহলে ফলাফল হবে


PHP is Fun!

Hello world!
I'm about to learn PHP!


 

পিএইচপি ৫ ভেরিয়েবল (PHP 5 Variables)

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

Department of CSE,University of Chittagong.

 

ভেরিয়েবল হচ্ছে একটি স্টোরেজ এরিয়া । এইটিকে কমপিউটারের ডাটা জমা রাখার একটি অস্থায়ী বক্সের মত কল্পনা করা যায়। পিএইচপি তে ভেরিয়েবলকে ডলার চিহ্ন এবং এর পরে ভেরিয়েবলের নাম দ্বারা প্রদর্শন করা হয়। নিচে একটি উদাহরণ দিয়ে বিষয়টি বোজানো হয়েছে।


< ?php
 $text = "Hello World!";
 $num1 = 5;
 $num2 = 10.5;
 ?>

উপরের স্টেটমেন্টটা এক্সিকিউট হওয়ার পর ভেরিয়েবল $text এ থাকবে “Hello world!”, ভেরিয়েবল $num1 এ থাকবে 5 এবং ভেরিয়েবল $num2 এ থাকবে 10.5.

ভেরিয়েবল লেখার সময় আমাদের কিছু নিয়ম অনুসরণ করতে হবে, যেমনঃ

 ভেরিয়েবল সবসময় ডলার চিহ্ন দ্বারা আরম্ভ হবে এবং এর পরে ভেরিয়েবলের নাম লিখতে হবে।

 ভেরিয়েবলের নাম অবশ্যই লেটার অথবা আণ্ডারস্কোর ক্যারেকটার দ্বারা আরম্ভ করতে হবে। কখনো নাম্বার দিয়ে আরম্ভ করা যাবে না।

 আলফা-নিউমেরিক এবং আণ্ডারস্কোর ক্যারেকটার (A-z,0-9,-) ছারা অন্য কিছু ভেরিয়েবলে ব্যাবহার করা যাবে না।

 পিএইচপি তে ভেরিয়েবল কেস সেনসিটিভ । অর্থাৎ $name এবং $NAME দুইটা ভিন্ন ভেরিয়েবল হিসেবে বিবেচিত হবে।

ভেরিয়েবলের ডাটা আঊটপূটে দেখানোর জন্য পিএইচপি এর echo স্টেটমেন্টটা ব্যাবহার করতে হবে। নিচে একটি উদাহরণ দিয়ে বিষয়টি বোজানো হয়েছে।


< ?php
 $myName = "john";
 $myAge = 40;
 echo "Hello, there. My name is $myName and I am $myAge years old"
 ?>

 

 

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


Hello, there. My name is john and I am 40 years old.


 

 

পিএইচপি ৫ কন্সট্যান্ট (PHP 5 Constants)

আক্তারুজ্জামান
Department of CSE,University of Chittagong

 

কনস্টান্ট হচ্ছে এমন একটি identifier যেইটা ভেরিয়েবলের মতই কাজ করে তবে ডিফারেন্স হচ্ছে ভেরিয়েবলের মান বিভিন্ন সময় বিভিন্ন রকম হয় কিন্তু কনস্টান্ট একবার ডিফাইন করা হলে পুরো স্ক্রিপ্টে আর পরিবর্তন হয় না।

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

define() ফাংশনটি দেখতে নিচের মত


define(name, value, case-insensitivity)


প্যারামিটারগুলুর বর্ণনা নিচে দেওয়া হল

  • name: এইটি কনস্টান্টের নামে নির্দেশ করে।
  • value: এইটি কনস্টান্টের মান নির্দেশ করে।

case-insensitivity

এইটি নির্দেশ করে কনস্টান্টের মান কেস সেনসিটিভ কিনা। এইটা ডিফল্ট হিসেবে false থাকে।
উদাহরণ


< ?php
 define("GREETING", "Welcome to PHP!");
 echo GREETING;
 ?>

এই কোডটি GREETING নামের একটি কন্সটান্ট তৈরি করে যার মান হচ্ছে “Welcome to PHP!”।
কনস্টান্ট অটোমেটিক্যালি গ্লূবাল অর্থাৎ এইটি পুরো স্ক্রিপ্টে ব্যাবহার করা যেতে পারে। নিচে একটি উদাহরণ দিয়ে বিষয়টি বোঝানো হয়েছে।


 < ?php
 define("GREETING", "Welcome to PHP!");
function showGreeting() {
 echo GREETING;
 }
showGreeting();
 ?>

উপরের উদাহরণে GREETING কনস্টান্টটি showGreeting() ফাংশনের বাইরে সংজ্ঞায়িত করার পরেও, ফাংশনের ভিতরে এইটি ব্যবহার করা যাচ্ছে।

 

মাইএসকিউএল এ পিএইচপি সংযোগ (PHP Connect to MySQL)

মাইএসকিউএল এ পিএইচপি সংযোগ

নয়ন চন্দ্র দত্ত

কি খবর সবার? সবাই ভালতো । আজ আমি অনেক গুরুত্বপুর্ণ একটা বিষয় মাইএসকিউএল এ পিএইচপি সংযোগ নিয়ে বিস্তারিত আলোচনা করবো । মাইএসকিউএল এ কীভাবে পিএইচপি সংযোগ করতে হয় তা আজ আমরা দেখব। তাহলে চলুন শুরু করা যাক ...।

পিএইচপি 5 এবং পরে্র একটি মাইএসকিউএল ডাটাবেস ব্যবহার করে কাজ করতে পারেন। যেমন-

  • MySQLi extension ("i" দিয়ে উন্নততর বোঝায়)
  • PDO (পিএইচপি ডাটা অবজেক্টস)

পিএইচপি এর আগের ভার্সনে মাইএসকিউএল এক্সটেনশন ব্যবহার করা হত। যাইহোক, এই এক্সটেনশন 2012 সালে অবাঞ্চিত হয়েছে ।

এখন প্রশ্ন হচ্ছে, আমি কী MySQLi বা PDO ব্যবহার করতে পারব?

যদি আপনার একটি সংক্ষিপ্ত উত্তর প্রয়োজন হয়, তাহলে এটি হতে পারে "আপনি কি পছন্দ করেন" ।

MySQLi এবং PDO তাদের উভয়েরই সুবিধা আছে।

PDO 12টি বিভিন্ন ডাটাবেস সিস্টেম কাজ করে এবং MySQLi শুধুমাত্র মাইএসকিউএল উপাত্ত সঙ্গে কাজ করে।

যদি আপনি অন্য ডাটাবেস ব্যবহার করার জন্য আপনার প্রকল্প switch করতে চান তাহলে PDO প্রক্রিয়াটি সহজ করে তোলে। আপনার শুধুমাত্র সংযোগ স্ট্রিং এবং কয়েকটি queries পরিবর্তন করতে হবে। MySQLi দিয়ে আপনি সম্পূর্ণ কোড পুনর্লিখন করতে হবে - প্রশ্ন অন্তর্ভুক্ত হয়েছে।

উভয় বস্তু ভিত্তিক হয়, কিন্তু MySQLi একটি পদ্ধতিগত API- অফার করে।

প্রস্তুত বিবৃতি এসকিউএল ইনজেকশন থেকে রক্ষা করে এবং তা ওয়েব অ্যাপ্লিকেশন নিরাপত্তার জন্য খুবই গুরুত্বপূর্ণ ।

MySQLi এবং PDO সিনট্যাক্স উভয় মাইএসকিউএল এর উদাহরণ

নিম্নলিখিত অধ্যায়গুলির মধ্যে আমরা পিএইচপি এবং মাইএসকিউএল দিয়ে কাজ করার তিনটি উপায় দেখাবঃ

  • MySQLi (অবজেক্ট ওরিয়েন্টেড)
  • MySQLi (পদ্ধতিগত)
  • PDO

MySQLi ইনস্টলেশন

লিনাক্স এবং উইন্ডোজ জন্য: PHP5 মাইএসকিউএল প্যাকেজ ইনস্টল করা থাকলে অধিকাংশ ক্ষেত্রে MySQLi এক্সটেনশন স্বয়ংক্রিয়ভাবে ইনস্টল হয়ে যায়।

ইনস্টলেশন সংক্রান্ত বিস্তারিত বিবরণ এর জন্য ভিজিট করতে পারেন http://php.net/manual/en/mysqli.installation.php

PDO ইনস্টলেশন

ইনস্টলেশন সংক্রান্ত বিস্তারিত বিবরণ এর জন্য ভিজিট করতে পারেন http://php.net/manual/en/pdo.installation.php

মাইএসকিউএল এ একটি সংযোগ খুলুন

MySQL ডাটাবেসের মধ্যে তথ্য অ্যাক্সেস করার পূর্বে আমাদের সার্ভারের সাথে সংযোগ করতে হবে।

উদাহরণ ( MySQLi অবজেক্ট ওরিয়েন্টেড):


<?php
 $servername = "localhost";
 $username = "username";
 $password = "password";
 
 // Create connection
 $conn = new mysqli($servername, $username, $password);
 
 // Check connection
 if ($conn->connect_error) {
     die("Connection failed: " . $conn->connect_error);
 } 
 echo "Connected successfully";
 ?>

 

*** উপরে অবজেক্ট ওরিয়েন্টেড উদাহরণ দ্রষ্টব্য: $ connect_error পিএইচপি 5.2.9 এবং 5.3.0 পর্যন্ত Broken ছিল.
আপনার পূর্বের 5.2.9 এবং 5.3.0 পিএইচপি সংস্করণের সাথে সামঞ্জস্য নিশ্চিত করা প্রয়োজন হলে, পরিবর্তে নিম্নলিখিত কোড ব্যবহার করুন:


<?php
 $servername = "localhost";
 $username = "username";
 $password = "password";
 
 // Create connection
 $conn = new mysqli($servername, $username, $password);
 
 // Check connection
 if ($conn->connect_error) {
     die("Connection failed: " . $conn->connect_error);
 } 
 echo "Connected successfully";
 ?>

 

উদাহরণ (প্রথাগত MySQLi )


<?php
 $servername = "localhost";
 $username = "username";
 $password = "password";
 
 // Create connection
 $conn = mysqli_connect($servername, $username, $password);
 
 // Check connection
 if (!$conn) {
     die("Connection failed: " . mysqli_connect_error());
 }
 echo "Connected successfully";
 ?>

 

উদাহরণ ( PDO )


<?php
 $servername = "localhost";
 $username = "username";
 $password = "password";
 
 try {
     $conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);
     // set the PDO error mode to exception
     $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     echo "Connected successfully"; 
     }
 catch(PDOException $e)
     {
     echo "Connection failed: " . $e->getMessage();
     }
 ?>

 

***উপরের PDO উদাহরণে লক্ষ্য করুন আমরা একটি ডাটাবেস নির্দিষ্ট করেছি ( myDB ) । PDO সংযোগ স্থাপনের জন্য একটি কার্যকর ডাটাবেস প্রয়োজন হয়। যদি কোন ডাটাবেস উল্লেখিত না থাকে তবে একটি ব্যতিক্রম নিক্ষিপ্ত হয়।

সংযোগ বন্ধ করুন

সংযোগ স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যাবে যখন স্ক্রিপ্ট শেষ হবে। সংযোগ বন্ধ করার পূর্বে নিম্নলিখিত কাজগুলো অণুসরণ করুনঃ

উদাহরণ (MySQLi অবজেক্ট ওরিয়েন্টেড)


$conn->close();

 

উদাহরণ (প্রথাগত MySQLi)


mysqli_close($conn);

 

উদাহরণ (PDO)


$conn = null;

 

আজকের মত এই পর্যন্ত। আশা করি সবার খুব ভাল লেগেছে । সবাই বেশি বেশি করে প্রাকটিস করবেন । সবাই ভাল থাকবেন আর কোন সমস্যা হলে নিশ্চই কমেন্ট করবেন ।

 

পিএইচপি ৫ গ্লোবাল ভেরিয়েবলস (PHP 5 Global Variables – Superglobals)

Superglobals যা কিনা সবসময় অ্যাক্সেস করা যায়। যেকোনো ক্লাস, ফাইল, অথবা ফাংশন এ এই superglobals অ্যাক্সেস করা যায় কোন কিছুর সাহায্য ছারাই।

এই variable গুলো হল

  • $GLOBALS
  • $_SERVER
  • $_REQUEST
  • $_POST
  • $_GET
  • $_FILES
  • $_ENV
  • $_COOKIE
  • $_SESSION

 

$GLOBALS

$GLOBALS একটি পিএইচপি এর গ্লোবাল variable যা পিএইচপি script এর যেকোনো জায়গায় গ্লোবাল variables গুলোকে অ্যাক্সেস করতে সাহায্য করে। পিএইচপি সমস্ত গ্লোবাল variable গুলোকে একটি array এর মধ্যে জমা করে $GLOBALS[index]। থার্ড বন্ধনীর মধ্যে লেখা index হল variable এর একটি নাম।

$GLOBALS ব্যবহার করে একটি উদাহরণ


<?php 
 $x = 75; 
 $y = 25;
  
 function addition() { 
     $GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y']; 
 }
  
 addition(); 
 echo $z; 
 ?>

যার ফলাফল হবে ১০০। global array এর মধ্যে একটি variable যা কিনা ফাংশন এর বাইরেও অ্যাক্সেস করা যায়।

 

PHP S_SERVER

$_SERVER পিএইচপি এর একটি সুপার গ্লোবাল variable যা script এর অবস্থান, headers, paths এই বিষয়গুল ধারণ করে।

একটি উদাহরণ যদি লক্ষ্য করি


<?php 
 echo $_SERVER['PHP_SELF'];
 echo "<br>";
 echo $_SERVER['SERVER_NAME'];
 echo "<br>";
 echo $_SERVER['HTTP_HOST'];
 echo "<br>";
 echo $_SERVER['HTTP_REFERER'];
 echo "<br>";
 echo $_SERVER['HTTP_USER_AGENT'];
 echo "<br>";
 echo $_SERVER['SCRIPT_NAME'];
 ?>

 

$_SERVER এর কিছু গুরুত্বপূর্ণ elements

$_SERVER['PHP_SELF'] বর্তমানে গণনাকৃত script এর নামটি পেতে এই element ব্যবহার করা হয়।
$_SERVER['GATEWAY_INTERFACE'] কমন গেটওয়ে ইন্টারফেস এর version পাওয়ার জন্য ব্যবহার করা হয়
$_SERVER['SERVER_ADDR'] host সার্ভার এর IP এড্রেস পাওয়ার জন্য
$_SERVER['SERVER_NAME'] host সার্ভার এর নাম পাওয়ার জন্য যেমন www.w3schools.com
$_SERVER['SERVER_SOFTWARE'] সার্ভার এর পরিচিতি পাওয়ার জন্য যেমন Apache/2.2.24
$_SERVER['SERVER_PROTOCOL'] Information protocol এর নাম পাওয়ার জন্য যেমন HTTP/1.1
$_SERVER['REQUEST_METHOD'] এই মেথড পেজ কে অ্যাক্সেস করার জন্য ব্যবহার করা হয়। যেমন post
$_SERVER['REQUEST_TIME'] request এর শুরু থেকে timestamp জানার জন্য।
$_SERVER['QUERY_STRING'] যদি কোন পেজ query string দ্বারা অ্যাক্সেস হয়ে থাকে তবে তা পাওয়ার জন্য
$_SERVER['HTTP_ACCEPT'] বর্তমান request হইতে header কে অনুমোদন করার জন্য
$_SERVER['HTTP_ACCEPT_CHARSET'] বর্তমান request হইতে Accept_Charset header পাওয়ার জন্য যেমন utf-8,ISO-8859-1
$_SERVER['HTTP_HOST'] বর্তমান request হতে header host পাওয়ার জন্য
$_SERVER['HTTP_REFERER'] বর্তমান পেজ এর পুরো url পাওয়ার জন্য
$_SERVER['HTTPS'] নিরাপদ HTTP Protocol এর মধ্য দিয়ে কোন script query করার জন্য।
$_SERVER['REMOTE_ADDR'] ইউজার এর IP এড্রেস পাওয়ার জন্য
$_SERVER['REMOTE_HOST'] ইউজার এর host নাম পাওয়ার জন্য
$_SERVER['REMOTE_PORT'] ইউজার এর machine এর পোর্ট নাম্বার পাওয়ার জন্য যা দিয়ে সে ওয়েবসারভার এর সাথে যোগাযোগ করতেছে
$_SERVER['SCRIPT_FILENAME'] রানিং script এর সঠিক পাথ নাম পাওয়ার জন্য
$_SERVER['SERVER_PORT'] সার্ভার machine এর পোর্ট নাম্বার পাওয়ার জন্য যা ওয়েব সার্ভার এর যোগাযোগ এর ক্ষেত্রে ব্যবহার করা হয়। যেমন ৮০
$_SERVER['SERVER_SIGNATURE'] সার্ভার ভারসন এবং virtual hostname পাওয়ার জন্য
$_SERVER['PATH_TRANSLATED'] বর্তমান script এর ফাইল সিস্টেম এর পাথ পাওয়ার জন্য
$_SERVER['SCRIPT_NAME'] বর্তমান script এর পাথ পাওয়ার জন্য
$_SERVER['SCRIPT_URI'] বর্তমান পেজ এর URL পাওয়ার জন্য

PHP $_REQUEST

এইচটিএমএল এর ফর্ম সাবমিট করার পর ডাটা কালেক্ট করার জন্য এই মেথড ব্যবহার করা হয়


<html>
 <body>
 
 <form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
   Name: <input type="text" name="fname">
   <input type="submit">
 </form>
 
 <?php
 if ($_SERVER["REQUEST_METHOD"] == "POST") {
     // collect value of input field
     $name = $_REQUEST['fname'];
     if (empty($name)) {
         echo "Name is empty";
     } else {
         echo $name;
     }
 }
 ?>
 
 </body>
 </html>

একটি সাবমিট বাঁটন ও একটি ইনপুট ফিল্ড নিয়ে এই script টি তৈরি করা হয়েছে যখন ইউজার ইনপুট ফিল্ড এ কোন কিছু টাইপ করে সাবমিট করবে সাবমিট করার পর তার টাইপ করা ওয়ার্ড টি সে দেখতে পাবে। আমরা সুপার গ্লোবাল variable হিসেবে $_REQUEST ব্যবহার করতে পারি ইনপুট ফিল্ড থেকে ডাটা কালেক্ট করার জন্য

PHP $_POST

এই মেথড ব্যবহার করা হয় ফর্ম এর ডাটা কালেক্ট করার জন্য। বিশদভাবে variable পাস করার জন্য এই মেথড ব্যবহার করা হয়


<html>
<body>

<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// collect value of input field
$name = $_POST['fname'];
if (empty($name)) {
echo "Name is empty";
} else {
echo $name;
}
}
?>

</body>
</html>


একটি সাবমিট বাঁটন ও একটি ইনপুট ফিল্ড নিয়ে এই script টি তৈরি করা হয়েছে যখন ইউজার ইনপুট ফিল্ড এ কোন কিছু টাইপ করে সাবমিট করবে সাবমিট করার পর তার টাইপ করা ওয়ার্ড টি সে দেখতে পাবে। আমরা সুপার গ্লোবাল variable হিসেবে $_POST ব্যবহার করতে পারি ইনপুট ফিল্ড থেকে ডাটা কালেক্ট করার জন্য

PHP $_GET

এই মেথড ব্যবহার করা হয় ফর্ম সাবমিট করার পর ডাটা কালেক্ট করার জন্য এই মেথড ব্যবহার করে Url এর মাধ্যমেও ডাটা কালেক্ট করা যায়। মনে করি আমাদের একটি পেজ আছে যেখানে hyperlink দেওয়া আছে সেই লিঙ্ক থেকে অন্য পেজ এ যাওয়ার মাধ্যমে আমরা url থেকে ডাটা কালেক্ট করব।


<html>
 <body>
 
 <a href="test_get.php?subject=PHP&web=W3schools.com">Test $GET</a>
 
 </body>
 </html>

 

যখন ইউজার লিঙ্ক এ ক্লিক করবে তখন এই পেজ test_get.php এ সে যাবে। তখন ইউজার value অ্যাক্সেস করতে পারবে

উদাহরণ :


 <html>
 <body>
 
 <?php 
 echo "Study " . $_GET['subject'] . " at " . $_GET['web'];
 ?>
 
 </body>
 </html>

 

 

পিএইচপি ৫ বহুমাত্রিক অ্যারে (PHP 5 Multidimensional Arrays)

এই টিউটোরিয়ালের শুরুর দিকে , আমরা arrays নিয়ে আলোচনা করেছিলাম যা key/value এর একটি Single তালিকা।
যাইহোক তবে কখনও কখনও আপনি একাধিক কী দিয়ে মান সংরক্ষণ করতে চান। যেটা multidimensional arrays এর মাধ্যমে সংরক্ষণ করা যেতে পারে।

পিএইচপি - বহুমাত্রিক অ্যারে

একটি বহুমাত্রিক array এক অথবা অধিক array ধারণকারী একটি array ।
পিএইচপি দুই, তিন, চার, পাঁচ, বা আরো গভীর মাত্রার বহুমাত্রিক অ্যারে বুঝতে পারে।
যাইহোক, তিন মাত্রা বেশী অ্যারে অধিকাংশ মানুষের জন্য পরিচালনা করা কঠিন।

একটি array এর মাত্রা আপনার একটি উপাদান নির্বাচন করা প্রয়োজনীয় সূচক সংখ্যা নির্দেশ করে।

  • একটি দুটি ত্রিমাত্রিক array এর জন্য, আপনার একটি উপাদান নির্বাচন করা দুই সূচকের প্রয়োজন ।
  • একটি ত্রিমাত্রিক array এর জন্য আপনার একটি উপাদান নির্বাচন করা তিনটি সূচকের প্রয়োজন ।

 

পিএইচপি - দুই মাত্রিক অ্যারে

একটি দুই-মাত্রিক অ্যারে হল অ্যারের একটি অ্যারে (একটি ত্রিমাত্রিক অ্যারে অ্যারে শ্রেনীবিন্যাস একটি অ্যারে)
প্রথমত, নিম্নলিখিত টেবিলে লক্ষ্য করা যাক:

নাম স্টক বিক্রি
Volvo 22 18
BMW 15 13
Saab 5 2
Land Rover 17 15

 

আমরা একটি দুটি ত্রিমাত্রিক অ্যারের মধ্যে উপরের টেবিল থেকে তথ্য সংরক্ষণ করতে পারব, Like this:


$cars = array
   (
   array("Volvo",22,18),
   array("BMW",15,13),
   array("Saab",5,2),
   array("Land Rover",17,15)
   );

 

এখন দুই-মাত্রিক $cars array এর চার array রয়েছে, এবং এর দুই সূচক ও আছে: সারি এবং কলাম।

আমদের দুই সূচক (সারি এবং কলাম) নির্দেশ করতে হবে $cars অ্যারের উপাদান অ্যাক্সেস পেতে হবে:

উদাহরনঃ


<?php
 echo $cars[0][0].": In stock: ".$cars[0][1].", sold: ".$cars[0][2].".<br>";
 echo $cars[1][0].": In stock: ".$cars[1][1].", sold: ".$cars[1][2].".<br>";
 echo $cars[2][0].": In stock: ".$cars[2][1].", sold: ".$cars[2][2].".<br>";
 echo $cars[3][0].": In stock: ".$cars[3][1].", sold: ".$cars[3][2].".<br>";
 ?>

 

 

উদাহরণস্বরূপ ব্যবহার করতে পারেন

আমরা $cars অ্যারের উপাদান পেতে একটি লুপ এর ভিতর অন্য একটি লুপ লাগাতে পারব (আমরা এখনও দুই সূচক নির্দেশ করতে হবে):

উদাহরনঃ


<?php
 for ($row = 0; $row < 4; $row++) {
   echo "<p><b>Row number $row</b></p>";
   echo "<ul>";
   for ($col = 0; $col < 3; $col++) {
     echo "<li>".$cars[$row][$col]."</li>";
   }
   echo "</ul>";
 }
 ?>

 

 

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

ইনপুট ফিল্ড এর টাইপ করা ডাটা যদি ইউজার সাবমিট বাটন ক্লিক করার পর দেখতে চায় আমরা কিছু পিএইচপি কোড যুক্ত করব ইনপুট ফিল্ড এর মধ্যে (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:

 



 

পিএইচপি ৫ তারিখ ও সময় (PHP 5 Date and Time)

PHP Date() ফাংশন

PHP Date() ফাংশন এর মাধ্যমে সহজে ও সঠিকভাবে সময় (time) ও তারিখ (date) দেখানো যায়।
সিনটেক্স


date(format,timestamp)

 

প্যারামিটার বর্ণনা
format আবশ্যিক বা Required. এর সাহায্যে timestamp এর ফরমেট নির্দিষ্ট করা হয়।
timestamp ঐচ্ছিক বা Optional. এর সাহায্যে timestamp নির্দিষ্ট করা হয়। সাধারণত Default হিসাবে current সময় ও তারিখ দেখানো হয়।

কোনো একটি ইভেন্ট সংঘটিত হলে নির্দিষ্ট date ও time এর একটি character এর একটি সেট প্রদর্শন করাই হলো timestamp.

সাধারণ তারিখ পেতে

date() function এর আবশ্যিক format প্যারামিটারের সাহায্যে date (or time) এর format কেমন হবে তা নির্দিষ্ট করা হয়।

নিম্নে কিছু character আলোচনা করা হলো যা date এর জন্য বেশি ব্যবহৃত হয়:

  • - d - এর সাহায্যে মাসের দিন নির্ধারণ করা হয় (০-৩১)
  • - m - এর সাহায্যে মাস নির্ধারণ করা হয় (১-১২)
  • - Y - এর সাহায্যে বছর নির্ধারণ করা হয় (চার সংখ্যা)
  • - l (lowercase 'L')- এর সাহায্যে সপ্তাহের দিন নির্ধারণ করা হয়

এছাড়াও অতিরিক্ত formatting যুক্ত করার জন্য বিভিন্ন character এর মাঝখানে "/", ".", বা "-" ব্যবহার করা যেতে পারে।

নিম্নে উদাহরণের সাহায্যে আজকের তারিখ ৩টি উপায়ে দেখানো হলো:


<?php
 echo "Today is " . date("Y/m/d") . "<br>";
 echo "Today is " . date("Y.m.d") . "<br>";
 echo "Today is " . date("Y-m-d") . "<br>";
 echo "Today is " . date("l");
 ?>

 

PHP টিপস - স্বয়ংক্রিয় Copyright Year

নিম্নোক্ত date() function টি ব্যবহার করে আপনার ওয়েবসাইটে copyright year এর তথ্য স্বয়ংক্রিয়ভাবে update হবে।
উদাহরণ:


© 2010-< ?php echo date("Y")?>


 

সাধারণভাবে সময় পেতে

নিম্নে কিছু character আলোচনা করা হলো যা time এর জন্য বেশি ব্যবহৃত হয়:

  • h - এটি ১২-ঘন্টা format কে নির্দেশ করে যা ০১ হতে ১২ পর্যন্ত হতে পারে।
  • i - এটি মিনিটের format কে নির্দেশ করে যা ০০ হতে ৫৯ পর্যন্ত হতে পারে।
  • s- এটি সেকেন্ডের format কে নির্দেশ করে যা ০০ হতে ৫৯ পর্যন্ত হতে পারে।
  • a- এটি Lowercase Ante meridiem ও Post meridiem কে নির্দেশ করে (am অথবা pm)

নিম্নে উদাহরণের সাহায্যে বর্তমান সময়কে একটি নির্দিষ্ট format এ দেখানো হলো:

উদাহরণ:


< ?php
 echo "The time is " . date("h:i:sa");
 ?>

নোট: PHP date() function টি শুধুমাত্র সার্ভারের কারেন্ট সময়কে নির্দেশ করে থাকে।

 

আপনার সময় অঞ্চল পেতে

যদি সার্ভার হতে প্রাপ্ত তারিখ ও সময় সঠিক না হয় তাহলে খুব সম্ভবত আপনার সার্ভারটি অন্যদেশে অবস্থিত অথবা অন্য কোনো টাইমজোন (timezone) সেট করা আছে। সুতরাং কোনো নির্দিষ্ট স্থানের জন্য সময়/তারিখ নির্ধারণ করতে হলে আপনাকে সে স্থানের টাইমজোন ব্যবহার করতে হবে।
নিম্নোক্ত উদহারণে "America/New_York" এর টাইমজোন সেট করে একটি নির্দিষ্ট ফরমেটে current time বা বর্তমান সময়কে দেখানো হলো:
উদাহরণ:


< ?php
 date_default_timezone_set("America/New_York");
 echo "The time is " . date("h:i:sa");
 ?>

 

PHP mktime() এর সাহায্যে তারিখ তৈরি

date() function এর optional timestamp এর সাহায্যে একটি timestamp কে নির্দিষ্ট করা যায়। যদি আপনি কোন timestamp কে নির্দিষ্ট না করে থাকেন তাহলে পূর্বের উদাহরণ গুলোর মতো current date and time দেখাবে।

mktime() function টি কোনো তারিখের Unix timestamp কে return করে বা দেখায়। Unix timestamp এর সাহায্যে Unix Epoch (January 1 1970 00:00:00 GMT) ও নির্দিষ্টকৃত দিনের মধ্যকার সেকেন্ডকে দেখানো হয়।

সিনট্যাক্স


mktime(hour,minute,second,month,day,year)

 

mktime() function প্যারামিটারের একটি উদাহরণ নিম্নে দেখানো হলো:


< ?php
 $d=mktime(11, 14, 54, 8, 12, 2014);
 echo "Created date is " . date("Y-m-d h:i:sa", $d);
 ?>

 

PHP strtotime() এর সাহায্যে একটি স্ট্রিং থেকে একটি তারিখ তৈরি করুন

PHP strtotime() function এর সাহায্যে মানুষের পাঠ্যযোগ্য সময়কে Unix সময়ে convert করা হয়।

সিনট্যাক্স


strtotime(time,now)

 

নিম্নোক্ত উদাহরণে strtotime() function এর সাহায্যে দিন ও তারিখ দেখানো হলো:


< ?php
 $d=strtotime("10:30pm April 15 2014");
 echo "Created date is " . date("Y-m-d h:i:sa", $d);
 ?>

 

দিন ও তারিখে convert করার ক্ষেত্রে PHP যথেষ্ট বুদ্ধিমত্তার পরিচয় দেয়, এক্ষেত্রে আপনি ভিন্ন ভিন্ন value যোগ করতে পারেন:


<?php
 $d=strtotime("tomorrow");
 echo date("Y-m-d h:i:sa", $d) . "<br>";
 
 $d=strtotime("next Saturday");
 echo date("Y-m-d h:i:sa", $d) . "<br>";
 
 $d=strtotime("+3 Months");
 echo date("Y-m-d h:i:sa", $d) . "<br>";
 ?>

 

মনে রাখবেন, strtotime() টি perfect নাও হতে পারে, এক্ষেত্রে আপনি যেসকল strings যোগ করেছেন সেগুলো চেক করতে ভুলবেন না।

 

তারিখের আরো কিছু উদাহরণ

নিম্নোক্ত উদাহরণে পরবর্তী ৬টি শনিবারের তারিখ বের করে দেখানো হয়েছে:


<?php
 $startdate = strtotime("Saturday");
 $enddate = strtotime("+6 weeks",$startdate);
 
 while ($startdate < $enddate) {
   echo date("M d", $startdate),"<br>";
   $startdate = strtotime("+1 week", $startdate);
 }
 ?>

 

নিম্নোক্ত উদাহরণে পরবর্তী ৪ জুলাই তারিখ পর্যন্ত দিনের সংখ্যা বের করা হয়েছে:


<?php
 $d1=strtotime("July 04");
 $d2=ceil(($d1-time())/60/60/24);
 echo "There are " . $d2 ." days until 4th of July.";
 ?>

 

সম্পূর্ণ পিএইচপি তারিখ রেফারেন্স

সকল date function এর complete reference পেতে PHP Date Reference অনুচ্ছেদটি দেখুন।

 

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

ওয়েব application এর জন্য ফাইল handiling একটি গুরত্তপূর্ণ ব্যাপার।


php readfile() function


 

আমরা একটা টেক্সট ফাইল কে পিএইচপি ফাইল এর মধ্যে read করাব। মনে করি webdictionary.txt নামের একটি টেক্সট ফাইল এ টাইপ করা আছে


 AJAX = Asynchronous JavaScript and XML
 CSS = Cascading Style Sheets
 HTML = Hyper Text Markup Language
 PHP = PHP Hypertext Preprocessor
 SQL = Structured Query Language
 SVG = Scalable Vector Graphics
 XML = EXtensible Markup Language

 

যদি আমরা পিএইচপি দিয়ে কল করি


< ?php
 echo readfile("webdictionary.txt");
 ?>

এই ভাবে কোড লিখতে হবে

 

PHP fopen() - ফাইল খোলা

যদি আমরা fopen() ফাংশন ব্যবহার করি


< ?php
 $myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
         /*ফাইল যদি directory তে থাকে তাহলে ওপেন করবে এবং read করবে*/
 echo fread($myfile,filesize("webdictionary.txt"));
 fclose($myfile);
 ?>

 

যদি আমরা কোন নতুন ফাইল তৈরি করতে চাই


$myfile = fopen("testfile.txt", "w")


 

যদি একটি ফাইল এ কিছু লিখতে চাই


< ?php
 $myfile = fopen("newfile.txt", "w") or die("Unable to open file!");
                          /*fopen ফাইল ওপেন করবে*/
 $txt = "John Doe\n";     /*যেই টেক্সট টি লিখবে তা declare করা হল $txt নামে*/
 fwrite($myfile, $txt);   /*ফাইল এর মধ্যে লিখবে*/
 $txt = "Jane Doe\n";
 fwrite($myfile, $txt);   /*ফাইল এর মধ্যে লিখবে*/
 fclose($myfile);         /*এবং ফাইল ক্লোজ হবে*/
 ?>

 

পিএইচপি ৫ ওপেন/রিড/ক্লোজ (PHP 5 File Open/Read/Close)

এই অধ্যায়ে আপনারা শিখবেন কিভাবে সার্ভারে ফাইল ওপেন, রিড এবং ক্লোজ করতে হয় ( ফাইল খোলা, পড়া এবং বন্ধ করা)।

 

পিএইচপি ওপেন ফাইল - fopen()

ফাইল ওপেন করার একটি অপেক্ষাকৃত ভালো উপায় হলো fopen() ফাংশন দিয়ে ওপেন করা। এই ফাংশনটি readfile() ফাংশনের থেকে আরও বেশি অপশন ব্যবহারের সুযোগ করে দেয়। এই টিউটোরিয়ালে আমরা টেক্সট ফাইল "webdictionary.txt" কে ব্যবহার করবোঃ


 AJAX = Asynchronous JavaScript and XML
 CSS = Cascading Style Sheets
 HTML = Hyper Text Markup Language
 PHP = PHP Hypertext Preprocessor
 SQL = Structured Query Language
 SVG = Scalable Vector Graphics
 XML = EXtensible Markup Language

 

fopen() এর প্রথম প্যারামিটারটি যে ফাইলটি ওপেন করা হবে তার নাম ধারণ করে এবং দ্বিতীয় প্যারামিটারটি কোন মোডে ফাইলটি ওপেন করা হবে তা নির্দিষ্ট করে। নিচের উদাহরণটি একটি মেসেজও তৈরি করে যদি fopen() ফাংশন নির্দিষ্ট ফাইলটি ওপেন করতে না পারেঃ


 

< ?php
 $myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
 echo fread($myfile,filesize("webdictionary.txt"));
 fclose($myfile);
 ?>

টিপসঃ fread() এবং fread() ফাংশনগুলো নিচে ব্যাখ্যা করা হবে।

 

ফাইলটি নিচের যেকোন একটি মোডে ওপেন হতে পারে

মোড ব্যাখ্যা
r রিড ওনলি (read only) ফাইল খোলে। ফাইল পয়েন্টার ফাইলের প্রথমদিকে চালু হয়।
w রাইট ওনলি (write only ) ফাইল খোলে। ফাইলের কন্টেন্ট মুঁছে দেয় অথবা সেটি না থাকলে একটি নতুন ফাইল তৈরি করে। ফাইল পয়েন্টার ফাইলের প্রথমদিকে চালু হয়।
a রাইট ওনলি ফাইল খোলে। ফাইলের পূর্বের ডাটা সংরক্ষণ করে। ফাইল পয়েন্টার ফাইলের শেষের দিকে চালু হয়। যদি ফাইলটি না থাকে তাহলে একটি নতুন ফাইল ওপেন করে।
x নতুন রাইট ওনলি ফাইল তৈরি করে। যদি ফাইলটি আগেই থেকে থাকে তাহলে FALSE এবং একটি এরর ফিরিয়ে দেয়।
r রিড/রাইট এর জন্য একটি ফাইল ওপেন করে। ফাইল পয়েন্টার ফাইলের প্রথমদিকে চালু হয়।
w+ রিড/রাইট এর জন্য একটি ফাইল ওপেন করে। ফাইলের সব কন্টেন্ট মুঁছে দেয় অথবা ফাইলটি না থাকলে নতুন ফাইল তৈরি করে। ফাইল পয়েন্টার ফাইলের প্রথমদিকে চালু হয়।
a+ রিড/রাইট এর জন্য একটি ফাইল ওপেন করে। ফাইলের বিদ্যমান ডাটা রেখে দেয়া হয়। ফাইল পয়েন্টার ফাইলের শেষের দিকে চালু হয়। যদি ফাইলটি না থাকে তাহলে একটি নতুন ফাইল তৈরি করে।
x+ রিড/রাইট এর জন্য একটি নতুন তৈরি করে। যদি ফাইলটি আগেই থেকে থাকে তাহলে FALSE এবং একটি এরর ফিরিয়ে দেয়।

 

পিএইচপি রিড ফাইল - fread()

fread() ফাংশনটি একটি খোলা বা ওপেন ফাইলকে রিড বা পাঠ করে। fread() এর প্রথম প্যারামিটারটি পড়ার জন্য ফাইলের নামটি ধারণ করে এবং দ্বিতীয় প্যারামিটারটি পড়ার জন্য সর্বোচ্চ সংখ্যক বাইটকে নির্দিষ্ট করে দেয়। নিচের পিএইচপি কোডটি "webdictionary.txt" ফাইলকে শেষ পর্যন্ত পড়েঃ


fread($myfile,filesize("webdictionary.txt"));


 

পিএইচপি ক্লোজ ফাইল - fclose()

একটি খোলা ফাইলকে বন্ধ করতে fclose() ফাংশনটি ব্যবহৃত হয়।

টিপসঃ কাজ শেষে খোলা ফাইলকে নিয়মিত বন্ধ করার অভ্যাসটি একজন ভালো প্রোগ্রামারের বৈশিষ্ট্য। আপনি নিশ্চয়ই চাইবেন না যে একটি ওপেন ফাইল আপনাদের সার্ভারে রান করে এর রিসোর্স দখল করে রাখুক!

fclose() ফাংশনটির আমরা যে ফাইলটি বন্ধ করতে চাই সেই ফাইলের নামের দরকার পড়ে অথবা একটি ভ্যারিয়েবলের প্রয়োজন হয় যা ফাইলনেম ধারণ করেঃ


< ?php
 $myfile = fopen("webdictionary.txt", "r");
 // some code to be executed....
 fclose($myfile);
 ?>

 

পিএইচপি রিড সিঙ্গেল লাইন - fgets()

fgets() ফাংশনটি কোন ফাইল থেকে একটি মাত্র লাইন পড়তে ব্যবহৃত হয়। নিচের উদাহরণটি "webdictionary.txt" ফাইলের প্রথম লাইনকে আউটপুট হিসেবে প্রকাশ করেঃ


< ?php
 $myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
 echo fgets($myfile);
 fclose($myfile);
 ?>

লক্ষ্যণীয়ঃ fgets() ফাংশনটিকে কল করার পর, ফাইল পয়েন্টারটি পরের লাইনে চলে গেছে।

 

পিএইচপি চেক এন্ড-অফ-ফাইল - feof()

feof() ফাংশনটি ফাইলের শেষ দিকে ("end-of-file" (EOF)) পৌছেছে কিনা তা পরীক্ষা করে। অনির্দিষ্ট দৈর্ঘ্যের ডাটার মধ্যে লুপিং করতে feof() ফাংশনটি কার্যকর ভূমিকা রাখে। নিচের উদাহরণটি "webdictionary.txt" ফাইলের প্রতিটি লাইন পড়ে যতক্ষণ না ফাইলের শেষ পর্যন্ত (end-of-file) পৌছানো যায়ঃ


< ?php
 $myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
 // Output one line until end-of-file
 while(!feof($myfile)) {
 echo fgets($myfile) . "br";
 }
 fclose($myfile);
 ?>

 

পিএইচপি রিড সিঙ্গেল ক্যারেক্টার - fgetc()

fgetc() ফাংশনটি একটি ফাইল থেকে একটি মাত্র ক্যারেক্টার বা অক্ষর পড়তে ব্যবহৃত হয়। নিচের উদাহরণটি "webdictionary.txt" ফাইলকে অক্ষরে অক্ষরে পড়ে যতক্ষণ যতক্ষণ না ফাইলের শেষ পর্যন্ত (end-of-file) পৌছানো যায়ঃ


< ?php
 $myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
 // Output one character until end-of-file
 while(!feof($myfile)) {
 echo fgetc($myfile);
 }
 fclose($myfile);
 ?>

লক্ষ্যণীয়ঃ ফাংশনকে কল করার পর পয়েন্টারটি পরবর্তী অক্ষরে চলে গেছে।

 

পিএইচপি'র সম্পূর্ণ রেফারেন্সের জন্য আমাদের পিএইচপি রেফারেন্সে পড়ে দেখুন।

 

পিএইচপি ৫ : ফাইল তৈরি / লেখা (PHP 5 File Create/Write)

আজ আমরা শিখবো কিভাবে পিএইচপি সার্ভারে ফাইল তৈরি করা যায় বা সার্ভারে থাকা ফাইল কিভাবে লেখা যায় ।

 

পিএইচপি ফাইল তৈরি বা fopen() ফাংশনের কাজ [PHP Create File - fopen()]

এখানে এই fopen() ফাংশনটি ফাইল তৈরিতে ব্যবহার করা হয় । পিএইচপি তে এই ফাংশনটি আবার কিন্তু ফাইল ওপেন করতে ব্যবহার করা হয় । তাই আসলেই ব্যাপারটা একটু হতভম্বকর তাই না? হতভম্বকর হলেও ব্যাপারটা কিন্তু পুরাটাই সত্য । সেটা কিভাবে? আসুন তাহলে জেনে ফেলি ।

আপনি যদি কোনো ফাইলের নামে fopen() ফাংশন ব্যবহার করেন যেটার অস্তিত্ব নেই, তাহলে এটি তখন নতুন একটি ফাইল তৈরির কাজে ব্যবহৃত হবে । মনে রাখবেন ফাইলটি ওপেন করে লেখার জন্য (w) এবং যুক্ত করার জন্য (a) ব্যবহৃত হয় ।


$myfile = fopen("testfile.txt", "w")

 

আসুন আমরা উপরের কোডটি লিখে "testfile.txt" নামে সেভ করি । আর কোডটি কিন্তু অবশ্যই পিএইচপি কোডের একই ডিরেক্টরিতে রাখবেন ।

 

পিএইচপি ফাইলের পারমিশন প্রদান(PHP File Permissions)

আপনি যদি উপরের কোডটি লেখার পর তা ওপেন করতে গেলে এরর রিপোর্ট দেয়, তাহলে বুঝতে হবে আপনার ফাইলটিকে রান (run) করার জন্য পারমিশন দেয়া হয়নি । তাই আপনাকে তখন হার্ডড্রাইভের ফাইলটিকে পারমিশন দিতে হবে যাতে পিএইচপি তা অ্যাক্সেস (access) করতে পারে ।

 

পিএইচপি ফাইল লেখা বা fwrite() ফাংশনের কাজ [PHP Write to File - fwrite()]

fwrite() ফাংশন ফাইল লেখার কাজে ব্যবহৃত হয় ।
fwrite() এর প্রথম প্যারামিটারটি ফাইলের লেখার জন্য নাম নির্দেশ করে এবং দ্বিতীয় প্যারামিটারটি যা ফাইলের ভিতর লিখতে হবে সেই কোডকে নির্দেশ করে ।


< ?php
 $myfile = fopen("newfile.txt", "w") or die("Unable to open file!");
 $txt = "Mostafizur Firoz\n";
 fwrite($myfile, $txt);
 $txt = "Wrongdhonu Firoz\n";
 fwrite($myfile, $txt);
 fclose($myfile);
 ?>

 

আসুন উপরের কোডটিকে "newfile.txt" নামে সেভ করি । খেয়াল করলে দেখবেন যে, আমরা "newfile.txt" কে দুইবার লিখেছি । প্রতিবার আমরা ফাইলের string $txt কে লেখার সময় এমনভাবে লিখেছি যেন প্রথমটায় "Mostafizur Firoz" এবং দ্বিতীয়টায় "Wrongdhonu Firoz" বিদ্যমান থাকে । লেখা শেষ হওয়ার পর আমরা fclose() ফাংশনের দ্বারা ফাইলটিকে শেষ করেছি ।

এখন আমরা যদি "newfile.txt" ফাইলটিকে ওপেন করি তাহলে নিচের মত দেখতে পাবোঃ


Mostafizur Firoz
Wrongdhonu Firoz


 

পিএইচপি ওভাররাইটিং (PHP Overwriting)

এখন এই "newfile.txt" ফাইলে কিছু ডাটা সংরক্ষিত বা জমা আছে । এখন আমরা দেখবো আগে থেকে থাকা এমন ফাইল আবার নতুন করে লেখার জন্য ওপেন করলে কেমন হবে । এমন আগে থেকে থাকা নামের ফাইল যদি আমরা নতুন করে ওপেন করি তাহলে তার ভিতর থাকা সকল তথ্য মুছে গিয়ে একটা খালি ফাইল ওপেন হবে ।


< ?php
 $myfile = fopen("newfile.txt", "w") or die("Unable to open file!");
 $txt = "Sa Learning School\n";
 fwrite($myfile, $txt);
 $txt = "sites tree\n";
 fwrite($myfile, $txt);
 fclose($myfile);
 ?>

 

আসুন আমাদের আগে থেকে সেভ থাকা "newfile.txt" নামের ফাইলটি ওপেন করি এবং তাতে উপরের কোডটুকু লিখে সেভ করি । তাহলে ওপেন করার সময় আগে থেকে লেখা Mostafizur এবং Wrongdhonu আগেই অদৃশ্য হয়ে যাবে এবং আমাদের নতুন করে লেখা ডাটাকে আমাদের সামনে দেখাবে । তাহলে আমরা তখন ফাইলটিকে ওপেন করলে নিচের মত করে দেখতে পারবো ।


Sa Learning School
sites tree


 

 

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

 

পিএইচপি ৫ ফাইল আপ্লোড (PHP 5 File Upload)

Sheikh Mahfuzur Rahman

 

পিএইচপি'র সাহায্যে খুব সহজেই সার্ভারে ফাইল আপলোড করা যায়। যাহোক, সহজ হওয়ার কারণে বিপদও বেশি হতে পারে! তাই সার্ভারে ফাইল আপলোডের সুযোগ দেয়ার সময় সতর্ক হোন!

 

"php.ini” ফাইল কনফিগার করা

প্রথমে, ফাইল আপলোড করার জন্য পিএইচপি কনফিগার করা হয়েছে কিনা তা নিশ্চিত করতে হবে। আপনার "php.ini” ফাইলে file_uploads ডিরেক্টিভকে খুঁজে বের করুন এবং এটিকে সচল (On) করুনঃ


file_uploads = On

 

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

তারপর একটি এইচটিএমএল ফর্ম তৈরি করুন যা ইউজারদেরকে ইমেজ ফাইল সিলেক্ট করে আপলোড করার সুযোগ করে দেয়:


<!DOCTYPE html>
<html>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
 Select image to upload:
 <input type="file" name="fileToUpload" id="fileToUpload">
 <input type="submit" value="Upload Image" name="submit">
</form>
</body>
</html>

 

উপরের ফর্মটি তৈরি করার সময় নিচের নিয়মগুলো অনুসরন করুন

  • ফর্মটি যেন method="post" কে ব্যবহার করে তা নিশ্চিত করতে হবে।
  • ফর্মটির উল্লেখিত এট্রিবিউটগুলোরও প্রয়োজন পড়বেঃ enctype="multipart/form-data"। ফর্মটি সাবমিট করার সময় কোন কনটেন্ট-টাইপ ব্যবহার করতে হবে তা এটা ঠিক করে দেয়।

উপরের উপকরণগুলো ছাড়া ফাইল আপলোড হবেনা।

 

অন্যান্য যেসব দিকে খেয়াল রাখতে হবে

<input> ট্যাগের type="file" এট্রিবিউট ইনপুট-ফিল্ডকে, ইনপুট-কন্ট্রোল এর পাশে একটি "Browse" বাটনসহ, একটি ফাইল-সিলেক্ট কন্ট্রোল হিসেবে দেখায়।

উপরের ফর্মটি "upload.php" নামক ফাইলের কাছে, যা আমরা এরপর তৈরি করবো, ডাটা পাঠায়।

 

আপলোড ফাইল পিএইচপি স্ক্রিপ্ট তৈরি করা

"upload.php" ফাইলটি ফাইল আপলোডের কোড ধারণ করেঃ


<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
     $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
     if($check !== false) {
        echo "File is an image - " . $check["mime"] . ".";
        $uploadOk = 1;
     } else {
        echo "File is not an image.";
        $uploadOk = 0;
     }
}
?>

উপরের পিএইচপি স্ক্রিপ্টটির ব্যাখ্যা

  • $target_dir = "uploads/" - ফাইলটি কোন ডিরেক্টরিতে রাখা হবে তা ঠিক করে
  • $target_file - ফাইলটি আপলোড করার পাথ নির্ধারণ করে
  • $uploadOk=1 - এটি এখনো ব্যবহার করা হয়নি (পরবর্তীতে ব্যবহার করা হবে)
  • $imageFileType - এটি ফাইলের ফাইল এক্সটেনশন ধারণ করে

এরপর স্ক্রিপ্টটি চেক করে দেখে যে ইমেজ ফাইলটি সত্যিকার ইমেজ ফাইল কিনা।

লক্ষ্যণীয়ঃ আপনাকে '"upload.php" ফাইলটি যে ডিরেক্টরিতে আছে সেখানে "uploads" নামের ডিরেক্টরি তৈরি করতে হবে। আপলোড করা ফাইলগুলো সেখানে সেভ হবে।

 

কোন ফাইল ইতোমধ্যেই আছে কিনা চেক করা

এখন আমরা কিছু সীমাবদ্ধতা আরোপ করবো।

প্রথমেই, আমরা চেক করবো ফাইলটি এর মধ্যেই '"uploads" ফোল্ডারে আছে কিনা। যদি সেটি থাকে তাহলে একটি এরর মেসেজ দেখায় এবং $uploadOk শূন্যতে সেট হয়ঃ


// Check if file already exists
 if (file_exists($target_file)) {
     echo "Sorry, file already exists.";
     $uploadOk = 0;
 }

 

ফাইল সাইজ লিমিট করা

আমাদের এইচটিএমএল ফর্মের ইনপুট ফিল্ডটির নাম "fileToUpload"
এখন আমাদের ফাইলের সাইজ ঠিক করতে চাই। যদি ফাইলটি ৫০০কিলোবাইটের চেয়ে বড় হয় তাহলে একটি এরর মেসেজ দেখায় এবং $uploadOk শূন্যতে সেট হয়ঃ


 // Check file size
 if ($_FILES["fileToUpload"]["size"] > 500000) {
     echo "Sorry, your file is too large.";
     $uploadOk = 0;
 }

 

ফাইল টাইপ সীমিত করা

নিচের কোডটি শুধুমাত্র ইউজারদের JPG, JPEG, PNG, এবং GIF ফাইল আপলোড করতে দেয়। অন্য ধরণের ফাইল টাইপগুলো একটি এরর মেসেজ দেখায় এবং $uploadOk শূন্যতে সেট করেঃ


// Allow certain file formats
 if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
 && $imageFileType != "gif" ) {
     echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
     $uploadOk = 0;
 }

 

আপলোড ফাইলের পিএইচপি স্ক্রিপ্ট সম্পূর্ণ করা

সম্পূর্ণ "upload.php" ফাইলটি ঠিক এমন দেখাবেঃ


<?php
 $target_dir = "uploads/";
 $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
 $uploadOk = 1;
 $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
 // Check if image file is a actual image or fake image
 if(isset($_POST["submit"])) {
     $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
     if($check !== false) {
         echo "File is an image - " . $check["mime"] . ".";
         $uploadOk = 1;
     } else {
         echo "File is not an image.";
         $uploadOk = 0;
     }
 }
 // Check if file already exists
 if (file_exists($target_file)) {
     echo "Sorry, file already exists.";
     $uploadOk = 0;
 }
 // Check file size
 if ($_FILES["fileToUpload"]["size"] > 500000) {
     echo "Sorry, your file is too large.";
     $uploadOk = 0;
 }
 // Allow certain file formats
 if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
 && $imageFileType != "gif" ) {
     echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
     $uploadOk = 0;
 }
 // Check if $uploadOk is set to 0 by an error
 if ($uploadOk == 0) {
     echo "Sorry, your file was not uploaded.";
 // if everything is ok, try to upload file
 } else {
     if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
         echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
     } else {
         echo "Sorry, there was an error uploading your file.";
     }
 }
 ?>

 

পিএইচপি'র ফাইল সিস্টেম ফাংশনগুলোর পূর্ন রেফারেন্সের জন্য আমাদের পিএইচপি ফাইল সিস্টেম রেফারেন্সে যান।

 

পিএইচপি ৫ সেশন্স (PHP 5 Sessions)

সেশান হলো ভ্যারিয়েবলে তথ্য যোগ করার একটি পদ্ধতি যা অসংখ্য পেজে ব্যবহার করা হয়। তবে এক্ষেত্রে কুকির মতো, ইউজারের কম্পিউটারে তথ্য সেভ রাখা হয়না।

পিএইচপি সেশান কি?

আপনি যখন একটি অ্যাপ্লিকেশনে কাজ করেন তখন আপনি সেটিকে চালু করেন, কিছু পরিবর্তন তৈরি করেন এবং তারপর আপনি অ্যাপ্লিকেশনটিকে ক্লোজ করেন। এটি একটি সেশানের মতো। কম্পিউটার এখানে জানে আপনি কে। এটা জানে আপনি কখন অ্যাপ্লিকেশনটি চালু করেছেন এবং কখন বন্ধ করেছেন। কিন্তু ইন্টারনেটের ক্ষেত্রে এখানে একটি সমস্যা রয়েছেঃ ওয়েব সার্ভার জানেনা, আপনি কে এবং কি করেন, কারন এইচটিটিপি অবস্থা বজায় বা মনে রাখেনা।

সেশান ভ্যারিয়েবলগুলো ইউজারদের তথ্য সংরক্ষণের মাধ্যমে এই সমস্যাটির সমধান করতে পারে যে তথ্য অসংখ্য পেজে ব্যবহার করা যায় ( যেমন ইউজারনেম, প্রিয় রং ইত্যাদি)। ডিফল্ট হিসেবে সেশান ভ্যারিয়েবলগুলো ইউজার বা সাইট ব্যবহারকারী ব্রাউজার বন্ধ করা পর্যন্ত কার্যকর থাকে।
তাই, সেশান ভ্যারিয়েবলগুলো একজন মাত্র ইউজারের তথ্য ধারণ করে এবং একটি অ্যাপ্লিকেশনের মধ্যে সবগুলো পেজে কার্যকর থাকে।

টিপসঃ আপনার যদি একটি একটি স্থায়ী তথ্য সেভ করার জায়গার দরকার হয় তাহলে আপনি সেই তথ্য ডাটাবেজে সেভ করতে পারেন।

 

একটি পিএইচপি সেশান শুরু করা

session_start() ফাংশনের মাধ্যমে একটি সেশান শুরু হয়। পিএইচপি গ্লোবাল ভ্যারিয়েবলের ( $_SESSION ) মাধ্যমে সেশান ভ্যারিয়েবলগুলো নির্দিষ্ট করা হয়। এখন "demo_session1.php" নামের একটি নতুন পেজ তৈরি করা যাক। এই পেজে আমরা একটি নতুন পিএইচপি সেশান শুরু করি এবং কিছু ভ্যারিয়েবল সেট করিঃ


< ?php
 // Start the session
 session_start();
 ?>
 < !DOCTYPE html>
< ?php
 // Set session variables
 $_SESSION["favcolor"] = "green";
 $_SESSION["favanimal"] = "cat";
 echo "Session variables are set.";
 ?>

 

লক্ষ্যণীয়ঃ session_start() ফাংশনটিকে অবশ্যই আপনার ডকুমেন্টের সর্বপ্রথম উপাদান হতে হবে; যেকোন এইচটিএমএল ট্যাগের পূর্বেই।

 

পিএইচপি সেশান ভ্যারিয়েবলগুলোর ভ্যালু পাওয়া

তারপর, আমরা "demo_session2.php" নামের আরেকটি পেজ তৈরি করি। এই পেজ থেকে আমরা সেশানের তথ্যকে অ্যাক্সেস করি যা আমরা প্রথম পেজে ("demo_session1.php") সেট করেছিলাম।

লক্ষ্য করুন, সেশান ভ্যারিয়েবলগুলো প্রত্যেকটি নতুন পেজে আলাদাভাবে চলে যায়নি, এর পরিবর্তে এগুলো ঐ সেশান থেকে পাওয়া যায় যা আমরা প্রত্যেকটি পেজের শুরুতে চালু ("demo_session1.php") করেছিলাম। আরও লক্ষ্য করুন, সবগুলো সেশান ভ্যারিয়েবল global $_SESSION ভ্যারিয়েবলে সেভ হয়ঃ


<?php
 session_start();
 ?>
 <!DOCTYPE html>
 <html>
 <body>
 
 <?php
 // Echo session variables that were set on previous page
 echo "Favorite color is " . $_SESSION["favcolor"] . ".<br>";
 echo "Favorite animal is " . $_SESSION["favanimal"] . ".";
 ?>

 

একটি ইউজার সেশানের জন্য সবগুলো সেশান ভ্যারিয়েবল ভ্যাল্যুকে দেখানোর অন্য একটি পদ্ধতি হলো নিচের কোডটিকে রান করাঃ


< ?php
 session_start();
 ?>
 < !DOCTYPE html>
< ?php
 print_r($_SESSION);
 ?>

 

কিভাবে এটি কাজ করে? কিভাবে এটি আপনাকে চেনে?

বেশিরভাগ সেশান ইউজারদের কম্পিউটারে একটি ইউজার-কি সেট করে যা এরকম দেখায়ঃ 765487cf34ert8dede5a562e4f3a7e12 । তারপর, যখন অন্য পেজে আরেকটি সেশান খোলা হয়, এটি ইউজার-কি খুঁজে পেতে কম্পিউটারকে স্ক্যান করে। যদি কোন মিল খুঁজে পাওয়া যায়, এটা ঐ সেশানে অ্যাক্সেস করে; যদি না পাওয়া যায় তাহলে এটি নতুন সেশান শুরু করে।

 

একটি পিএইচপি সেশান ভ্যারিয়েবল মডিফাই করা

সেশান ভ্যারিয়েবলকে পরিবর্তন করতে, শুধু এটাকে অভার রাইট করুনঃ


< ?php
 session_start();
 ?>
 < !DOCTYPE html>
< ?php
 // to change a session variable, just overwrite it
 $_SESSION["favcolor"] = "yellow";
 print_r($_SESSION);
 ?>

 

একটি পিএইচপি সেশানকে শেষ করে দেয়া

সবগুলো গ্লোবাল সেশান ভ্যারিয়েবলকে মুঁছে দিতে এবং নষ্ট করে দিতে session_unset() এবং session_destroy() ব্যবহার করুনঃ


< ?php
 session_start();
 ?>
 < !DOCTYPE html>
< ?php
 // remove all session variables
 session_unset();
// destroy the session
 session_destroy();
 ?>

 

পিএইচপি ৫ সুইচ স্ট্যাটমেন্ট (PHP 5 switch Statement)

পিএইচপি তে আমরা switch statement এর মাধ্যমে কোন শর্ত জুরে দিয়ে অনেকগুলো ব্লক code থেকে আমাদের নির্ধারিত ফলাফল পেতে পারি।

উদাহরণ এর মাধ্যমে আমরা এক এক করে switch statement এর বিষয় টি বুজতে পারব


 < ?php
 $favcolor = "red"; 
         /*এর মাধ্যমে আমরা নির্ধারণ করে দিলাম যে আমাদের red শব্দ টি দরকার*/
switch ($favcolor)  
         /*switch statement এর মাধ্যমে আমরা এর প্রক্রিয়া সুরু করলাম*/
 {
     case "red":  
         /*যদি declare করা value টি যদি মিলে যায় তাহলে এই case টি ডিসপ্লে হবে*/
         echo "Your favorite color is red!";
         break;
     case "blue":
         echo "Your favorite color is blue!";
         break;
     case "green":
         echo "Your favorite color is green!";
         break;
         /*এইভাবে করে আমরা অনেকগুলো case যুক্ত করতে পারি*/
      default:
         /*যদি আমাদের কোন case না মিলে তাহলে default হিসেবে এটি ডিসপ্লে করবে*/
         echo "Your favorite color is neither red, blue, or green!";
 }
 ?>

যদি ব্রাউজার এর মাধ্যমে আমরা রান করি তাহলে ফলাফল পাওয়া যাবে


Your favorite color is red!

এই ক্ষেত্রে বুঝা যাচ্ছে আমাদের প্রথম case টি কাজ করছে কারন প্রথম case টি আমরা বলেছি red এবং আমরা কোড এর শুরুতে নির্ধারণ করেছিলাম $favcolor = "red" ।

 

পিএইচপি ৫ while লুপ (PHP 5 while Loops)

প্রতাপ চন্দ্র

 

পিএইচপি while লুপ কোডের একটি ব্লক নির্বাহ করে যতক্ষণ পর্যন্ত একটি বেধে দেয়া শর্ত TRUE হতে থাকে।
যখন কোড লেখা হয় তখন এমন প্রয়োজন হতে পারে যে একই কাজ বার বার করার দরকার পড়ছে। তখন ওই কাজের জন্য বার বার কোড না লিখে লুপ ব্যবহার করে একই ফল পাওয়া যায়। এতে কোড পরিচ্ছন্ন থাকে এবং সহজে ও দ্রুত কাজ সম্পন্ন হয়।

পিএইচপিতে নিচের লুপ স্টেটমেন্টগুলো ব্যবহার করা হয়:

  • while – যতক্ষণ পর্যন্ত একটি নির্দিষ্ট শর্ত পূরণ হতে থাকে ততক্ষণ কোডের একটি ব্লক নির্বাহ করতে থাকে।
  • do...while – একবার লুপটি সম্পন্ন করে, অতপর যতক্ষণ পর্যন্ত একটি নির্দিষ্ট শর্ত পূরণ হতে থাকে ততক্ষণ পুরো লুপটি নির্বাহ করতে থাকে।
  • for – একটি নির্দিষ্ট সংখ্যক বার কোডের একটি ব্লক নির্বাহ হতে থাকে।
  • foreach – একটি অ্যারের সবগুলো উপাদানে না পৌছানো পর্যন্ত কোডের একটি ব্লক নির্বাহ করতে থাকে।

পিএইপি while লুপ

যতক্ষণ পর্যন্ত একটি নির্দিষ্ট শর্ত পূরণ হতে থাকে ততক্ষণ কোডের একটি ব্লক নির্বাহ করতে থাকে।

গঠনরীতি


while (condition is true) {
     code to be executed;
 }

নিচের উদাহরণে $x চলকের প্রাথমিক মান 1 ধরা হয় ($x = 1)। এরপর $x এর মান যতক্ষণ পর্যন্ত 5 এর কম থাকবে কিংবা সমান হবে ($x <= 5) ততক্ষণ প্রতি লুপে ($x++) চলক $x এর মান 1 করে বাড়তে থাকবে।


<?php 
 $x = 1;
while($x <= 5) {
     echo "The number is: $x <br>";
     $x++;
 } 
 ?>

 

কোডটি রান করালে ফলাফল আসবে:


The number is: 1
The number is: 2
The number is: 3
The number is: 4
The number is: 5


 

পিএইচপি do...while লুপ

do...while লুপ কোডের একটি ব্লক একবার রান করবে। এরপর শর্ত যাচাই করবে। যতক্ষণ শর্ত TRUE হবে ততক্ষণ লুপ চলতে থাকবে।

গঠনরীতি:


do {
     code to be executed;
 } while (condition is true);

নিচের উদাহরণে $x চলকের প্রাথমিক মান 1 ধরা হয়েছে ($x = 1)। এরপর do...while লুপ প্রাথমিক আউটপুট দেবে। এরপর $x এর মান 1 বাড়াবে। এরপর শর্ত পরীক্ষা করে দেখবে $x এর মান 5 এর কম আছে কিংবা সমান হয়েছে কিনা। যতক্ষণ পর্যন্ত তা TRUE হবে ততক্ষণ লুপে দেয়া কোড নির্বাহ হবে এবং আউটপুট আসতে থাকবে।
যেমন:


<?php 
 $x = 1;
do {
     echo "The number is: $x <br>";
     $x++;
 } while ($x <= 5);
 ?>

 

কোডটি রান করলে আগের মতোই ফলাফল আসবে:


The number is: 1
The number is: 2
The number is: 3
The number is: 4
The number is: 5


 

এখানে লক্ষ্য করুন, do...while লুপে শর্ত যাচাই করা হয় লুপের মধ্যকার স্টেটমেন্টটি নির্বাহ হবার পরে। এর অর্থ হলো do...while লুপ কোডটি নূন্যতম একবার নির্বাহ হবে, এমনকি শর্ত যদি FALSE হয় তবুও।

নিচের উদাহরণে $x চলকের প্রাথমিক মান 6 ধরা হয়েছে। এরপর কোডটি রান করে। তারপর শর্ত পরীক্ষা করে দেখে লুপ করবে কিনা। যেহেতু শর্ত FALSE হয় তাই আর লুপ হয় না।


<?php 
 $x = 6;
do {
     echo "The number is: $x <br>";
     $x++;
 } while ($x<=5);
 ?>

 

উপরের উদাহরেণের ক্ষেত্রে ফলাফল আসবে:


The number is: 6


 

পিএইচপি ৫ ফর লুপ (PHP 5 for Loops)

প্রতাপ চন্দ্র

 

প্রোগ্রামিং ল্যাঙ্গুয়েজে লুপিং একটি গুরুত্বপূর্ণ টার্ম। একটি নির্দিষ্ট শর্ত পূরণ না হওয়া পর্যন্ত কম্পিউটারকে একই কাজ পুণ:পুণ: করানোর জন্য for loop স্টেটমেন্ট ব্যবহার করা হয়। PHP (পিএইপি) ল্যাঙ্গুয়েজেও for loop স্টেটমেন্ট ব্যবহার করা হয় এক ব্লক কোড একটি নির্দিষ্ট সংখ্যকবার আবর্তিত হয়ে নির্বাহ করার জন্য।

PHP তে for loop স্টেটমেন্টটি তখন ব্যবহার করা হয় যখন আগেভাগে জানা থাকে কোডটি কতবার বা কতদূর পর্যন্ত রান করাতে হবে।

Syntax বা গঠনরীতি:


for (init counter; test counter; increment counter) {
     code to be executed;
 }

 

এই syntax এ যে প্যারামিটারগুলো ব্যবহার করা হয়েছে তা নিচে ব্যাখ্যা করা হলো:

  • init counter: লুপ কাউন্টার কোন সংখ্যা থেকে শুরু করবে সেই প্রাথমিক মান।
  • test counter: শর্তটির অবস্থা মূল্যায়ন করে দেখে। মান যদি শর্তটির মধ্যে থাকে অর্থাৎ TRUE হয় তবে আবার loop চালু করে। যদি শর্তের বাইরে চলে যায় অর্থাৎ FALSE হয় তখন লুপিং শেষ করে দেয়।
  • increment counter: লুপ কাউন্টারের মান বৃদ্ধি করে।

নিচে একটি উদাহরণ দেয়া হলো:


<?php 
 for ($x = 0; $x <= 10; $x++) {
     echo "The number is: $x <br>";
 } 
 ?>

 

এই কোডটি রান করালে ফলাফল আসবে নিচের মতো:


The number is: 0
The number is: 1
The number is: 2
The number is: 3
The number is: 4
The number is: 5
The number is: 6
The number is: 7
The number is: 8
The number is: 9
The number is: 10


 

পিএইপি foreach Loop:

foreach লুপ কেবলমাত্র array তে কাজ করে। লুপটি একটি অ্যারেতে রাখা প্রতিটি উপাদানে পর্যায়ক্রমে প্রবেশের জন্য ব্যবহার করা হয়। এর গঠনরীতি নিচে দেয়া হলো:


foreach ($array as$value) {
     code to be executed;
 }

প্রতিটি লুপ যখন কার্যকর হয় তখন অ্যারের তাতক্ষনিক উপাদানটি $value হিসেবে পরিগণিত হবে এবং অ্যারের পরের উপাদানে যায়। যতক্ষণ পর্যন্ত না এটি ওই অ্যারের সর্বশেষ উপাদানে পৌছাবে ততক্ষণ একই প্রক্রিয়া চলতে থাকবে।

নিচের উদাহরণটি একটি লুপ প্রদর্শন করবে যা $colors অ্যারের value গুলো আউটপুট হিসেবে এক এক করে প্রদর্শন করবে।


<?php 
 $colors = array("red", "green", "blue", "yellow");
foreach ($colors as $value) {
     echo "$value <br>";
 }
 ?>

 

এই কোডটি রান করালে ফলাফল আসবে নিচের মতো:


red
green
blue
yellow


 

পিএইচপি ৫ ফাংশন (PHP 5 Functions)

সুদীপ্ত সাহা
PHP এর মূল শক্তি হিসেবে এর ফাংশনকেই বিবেচনা করা হয়। কারণ এর প্রায় ১০০০ বিল্ট-ইন ফাংশন রয়েছে।

PHP ইউজার ডিফাইন্ড ফাংশন

বিল্ট-ইন ফাংশনের পাশাপাশি PHPতে ইউজার ডিফাইন্ড ফাংশনও তৈরি করা যায়।
ফাংশন হচ্ছে কিছু স্টেটমেন্টের একটি ব্লক যা কোন প্রোগ্রামে যতবার ইচ্ছা ততবার ব্যবহার করা যায়। কোন একটি পেজ লোড হওয়ার সময়েই ফাংশন রান করে না। ফাংশনকে রান করানোর জন্য ফাংশনকে কল করতে হয়।

PHP তে ইউজার ডিফাইন্ড ফাংশন তৈরি করা

ইউজার ডিফাইন্ড ফাংশন তৈরি করার জন্য “function” ওয়ার্ড দ্বারা ফাংশনকে ডিক্লেয়ার করতে হয়।

সিনট্যাক্স


 function functionName() {
     code to be executed;
 }

নোটঃ ফাংশনের নাম লেটার অথবা আন্ডারস্কোর দ্বারা শুরু করতে হয়, নাম্বার দ্বারা শুরু করা যায়না।

টিপসঃ ফাংশনের এমন নাম দেয়া উচিৎ যেন তা ফাংশনের কাজকে বোঝায়।

নিচের উদাহরণে "writeMsg()" নামের একটি ফাংশন তৈরি করা হয়েছে। শুরুর দ্বিতীয় বন্ধনী { দ্বারা ফাংশনের শুরুকে বোঝানো হয় এবং শেষের দ্বিতীয় বন্ধনী } দ্বারা ফাংশনের শেষকে বোঝানো হয়েছে। এই ফাংশনের আউটপুট হবেঃ Hello world!

ফাংশনকে কল করার জন্য শুধু এর নামটি লিখলেই হয়ঃ

উদাহরণঃ


<?php
 function writeMsg() {
     echo "Hello world!";
 }
 
 writeMsg(); // call the function
 ?>

 

PHP ফাংশন আর্গুমেন্ট

আর্গুমেন্টের সাহায্যে ফাংশনে ডাটা পাস করা যায়। আর্গুমেন্ট ভ্যারিয়েবল হিসেবে কাজ করে। ফাংশন নেমের পড়ে বন্ধনীর ভেতরে আর্গুমেন্ট ডিক্লেয়ার করা হয়। আপনি আপনার ইচ্ছামতো আর্গুমেন্ট সেট করতে পারবেন, শুধু একটি কমা ব্যবহার করে আর্গুমেন্টগুলোকে আলাদা করতে হয়।

নিচের উদাহরণে ($fname) নামের একটি আর্গুমেন্ট তৈরি করা হয়েছে। familyName() ফাংশনকে কল করার সময় একটি নামও পাস করতে হবে, যা ফাংশনের মধ্যে রান করে ভিন্ন ভিন্ন ফার্স্টনেম এবং একই লাস্টনেমের আউটপুট শো করবে।

উদাহরণঃ


<?php
 function familyName($fname) {
     echo "$fname Refsnes.<br>";
 }
 
 familyName("Jani");
 familyName("Hege");
 familyName("Stale");
 familyName("Kai Jim");
 familyName("Borge");
 ?>

 

নিচের উদাহরণে ($fname and $year) নামের দুইটি আর্গুমেন্ট তৈরি করা হয়েছে।
উদাহরণঃ


<?php
 function familyName($fname, $year) {
     echo "$fname Refsnes. Born in $year <br>";
 }
 
 familyName("Hege", "1975");
 familyName("Stale", "1978");
 familyName("Kai Jim", "1983");
 ?>

 

PHP ডিফল্ট আর্গুমেন্ট ভ্যালু

কিভাবে একটি ডিফল্ট প্যারামিটার ব্যবহার করতে হয় তা নিচের উদাহরণে দেখানো হয়েছে। যদি আমরা কোন আর্গুমেন্ট ছাড়া ফাংশন setHeight() ব্যবহার করি তাহলে এটি আর্গুমেন্টকে ডিফল্ট ভ্যালু হিসেবে গ্রহণ করবে।

উদাহরণঃ


<?php
 function setHeight($minheight = 50) {
     echo "The height is : $minheight <br>";
 }
 
 setHeight(350);
 setHeight(); // will use the default value of 50
 setHeight(135);
 setHeight(80);
 ?>

 

PHP ফাংশন রিটার্নিং ভ্যালু

ফাংশনের কোন ভ্যালুকে রিটার্ন করানোর জন্য return স্টেটমেন্ট ব্যবহার করতে হয়।

উদাহরণঃ


<?php
function sum($x, $y) {
 $z = $x + $y;
 return $z;
}
echo "5 + 10 = " . sum(5, 10) . "<br>";
echo "7 + 13 = " . sum(7, 13) . "<br>";
echo "2 + 4 = " . sum(2, 4);
?>

 

পিএইচপি ৫ অ্যারে (PHP 5 Arrays)

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

Department of CSE , University of Chittagong

 

একটি single ভেরিয়েবলে একের অধিক মান স্টোর করতে অ্যারে ব্যাবহার করা হয়।

উদাহরনঃ


<?php
$cars = array("Volvo", "BMW", "Toyota");
echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";
?>

 

অ্যারে কি? (What is Array?)

অ্যারে হল একটি বিশেষ ভেরিয়েবল যা একই সময়ে একের অধিক মান ধারণ করতে পারে। নিচের আলোচনা থেকে অ্যারে সম্পর্কে পরিস্কার ধারনা পাওয়া যাবে।

নির্দিষ্ট কিছু আইটেম এর একটি লিস্ট কল্পনা করা যাক (উদাহরণস্বরূপ কিছু দেশের নামের একটি লিস্ট)। এখন এই লিস্টিটি যদি আমরা কোন একটি single ভেরিয়েবলে store করতে চাই তাহলে নিচের মত হবে-


$country1 = ”Bangladesh”;
$country2 = ”India”;
$country3 =”Pakistan”;
$country4 =”Nepal”;
$country5 =”Sri Lanka”;


 

এইখানে মাত্র ৫ টা দেশের একটি লিস্ট দেওয়া হয়েছে। কিন্তু কি হবে যদি আপনার ৩০০ টা দেশের একটি লিস্ট থাকে ? কিভাবে আপনি নির্দিষ্ট কোন দেশের নাম সন্ধান করবেন? এই সমস্যা সামাধানের জন্য মূলত array ব্যাবহার করা হয়। অ্যারের মাধ্যমে একটি single ভেরিয়েবলে অনেকগুলো ডাটা জমা রাখা যায় এবং প্রতিটা আইটেমের নির্দিষ্ট একটি ইনডেক্স নাম্বার থাকে, যাতে করে যে কোন আইটেম কে সহেজে এক্সেস করা যায়।

 

পিএইচপি তে অ্যারে তৈরি করা (Create an Array in PHP)

PHP তে array() ফাংশন টা ব্যাবহার করে একটি অ্যারে তৈরি করা হয়।


array();

 

পিএইচপি তে সাধারণত তিন ধরণের array রয়েছে।

  • Indexed Arrays
  • Associative Arrays
  • Multidimensional Arrays

নিচে এই তিন ধরণের array নিয়ে বিস্তারিত আলোচনা করা হয়েছে।

 

পিএইচপি ইনডেক্সেড অ্যারে (PHP Indexed Arrays)

পূর্ন সংখ্যার index/key নিয়ে যেই অ্যারে তৈরি করা হয় ওইটিকে ইনডেক্সেড অ্যারে বলে। দুভাবে ইনডেক্সেড অ্যারে তৈরি করা যায়।
ইনডেক্স নিচের মত অটোমেটিকেলি assign করা যেতে পারে (এখেত্রে index সবসময় 0 থেকে আরম্ভ হয়) :


$countries = array(“Bangladesh”,”India”,”Pakistan”,”Nepal”);

 

অথবা index নিচের মত ম্যানুয়ালি assign করা যেতে পারেঃ


 $countires[0] = “Bangladesh”;
 $countries[1] = ”India”;
 $countries[2] = ”Pakistan”;

 

নিচের উদাহরণটিতে countries নামের একটি indexed array আছে, যেইখানে তিনটা মান assign করা হয়েছে এবং পরে মান তিনটি একটি টেক্সটের ভিতর প্রিন্ট করা হয়েছে।


< ?php
 $countries = array("Bangladesh", "India", "Pakistan");
 echo $countries[0].", ".$countries[1]." and ".$countries[2]". " are three neighboring 
      countries";
 ?>

 

এই কোডটির আউটপূট হবে :


Bangladesh, India and Pakistan are three neighboring countries.


 

PHP Associative Arrays (অ্যাসোসিয়েটিভ অ্যারে)

এতক্ষন পূর্ণ সংখ্যার index/key নিয়ে বলা হয়েছে, তবে ইনডেক্স হিসেবে string ও ব্যাবহার করা যায় আর এইভাবে তৈরি অ্যারে কে associative array বলে। যেমন:


< ?php
 $age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
 echo "Peter is " . $age['Peter'] . " years old.";
 ?>

 

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


Peter is 35 years old.


 

Multidimensional Arrays (মাল্টিডাইমেনশনাল অ্যারে )

PHP advanced সেকশনে মাল্টিডাইমেনশনাল অ্যারে নিয়ে বিসদ ভাবে আলোচনা করা হয়েছে।

 

পিএইচপি ফিল্টারস (PHP Filters)

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

 

কেন ফিল্টার ব্যবহার করা হয়

প্রায় সব ওয়েব অ্যাপ্লিকেশান বাইরের ইনপুট এর উপর নির্ভরশীল। যা একজন ইউজার বা ওয়েব অ্যাপ্লিকেশান এর মাধ্যমে আসতে পারে। ফিল্টার ব্যবহার করার মাধ্যমে আমরা সেই ডাটাগুলোকে বৈধ করতে পারি।

বাইরের ডাটা গুলো কি রকম হতে পারে

ফর্ম ব্যবহার করে কোন ডাটা নেওয়ার জন্য, কুকিস, ওয়েব সার্ভিসেস ডাটা, সারভার variables, ডাটাবেস query করার মাধ্যমে।

ফাংশন এবং ফিল্টার

filter_var() একটি নির্দিষ্ট variable কে ফিল্টার করার জন্য
filter_var_array() অনেকগুলো variable ফিল্টার করার জন্য
filter_input একটা ইনপুট variable কে ফিল্টার করার জন্য
filter_input_array অনেকগুলো ইনপুট variable কে ফিল্টার করার জন্য

আমরা filter_var() ফাংশন ব্যবহার করে একটি integer কে বৈধ করব।


< ?php
 $int = 123;
if(!filter_var($int, FILTER_VALIDATE_INT)) {
 echo("Integer is not valid");
 } else {
 echo("Integer is valid");
 }
 ?>

FILTER_VALIDATE_INT ব্যবহার করা হয়েছে variable কে ফিল্টার করার জন্য যদি integer টি বৈধ হয় তাহলে ফলাফল আসবে "Integer is valid"
যদি আমরা integer এর পরিবর্তে 123abc ব্যবহার করি তাহলে output আসবে Integer is not valid।

Validating এবং Sanitizing

বৈধ ফিল্টার

১। ইউজার এর ইনপুট গুলোকে বৈধ করার জন্য
২। নির্দিষ্ট গঠন অনুজায়ে ডাটা তৈরি করার জন্য (যেমন ইমেইল অথবা URL এর ক্ষেত্রে)

Sanitizing ফিল্টার

১। কোন নির্দিষ্ট characters কে অনুমোদন দেওয়ার জন্য
২। কোন গঠন বৈশিষ্ট্য মেনে চলে না
৩। সবসময় স্ট্রিং রিটার্ন করে

filter_var() ফাংশন ব্যবহার করে আমরা integer কে বৈধ করব।


< ?php
 $var=300;
$int_options = array(
 "options"=>array
 (
 "min_range"=>0,
 "max_range"=>256
 )
 );
if(!filter_var($var, FILTER_VALIDATE_INT, $int_options)) {
 echo("Integer is not valid");
 } else {
 echo("Integer is valid");
 }
 ?>

এই কোড এ options ব্যবহার করতে হবে একটি array এর ভিতর options নাম দিয়ে যদি ফ্লাগ ব্যবহার করা হত তাহলে array লাগত না। আমাদের integer ছিল 300 যা রেঞ্জ এর মধ্যে মিলে না সুতরাং এর ফলাফল আসবে "Integer is not valid"।

 

ইনপুট ডাটা বৈধ করা

filter_input() ফাংশন ব্যবহার করার মাধ্যমে আমার ডাটা বৈধ করব প্রথমে আমরা চেক করব ডাটা আসলে ইনপুট করা হয়েছে কিনা


< ?php
 if(!filter_has_var(INPUT_GET, "email")) {
 echo("Input type does not exist");
 } else {
 if (!filter_input(INPUT_GET, "email", FILTER_VALIDATE_EMAIL)) {
 echo "E-Mail is not valid";
 } else {
 echo "E-Mail is valid";
 }
 }
 ?>

GET মেথড ব্যবহার করে ইনপুট (ইমেইল) চেক করবে যে তা বৈধ কিনা

Sanitize ইনপুট

ফর্ম কে URL এ পাঠানোর মাধ্যমে আমরা একে বুজবো
প্রথমে আমরা চেক করব ইনপুট ডাটা ফাকা আছে কিনা
তারপর আমরা filter_input() ফাংশন ব্যবহার করে ডাটা কে sanitize করব।


< ?php
 if(!filter_has_var(INPUT_POST, "url")) {
 echo("Input type does not exist");
 } else {
 $url = filter_input(INPUT_POST,
 "url", FILTER_SANITIZE_URL);
 }
 ?>

উপড়ের উধাহরন টি যদি POST মেথড ব্যবহার করা হয়

প্রথমে চেক করবে ইনপুট URL post টাইপ এর কিনা, যদি ইনপুট variable exists করে তাহলে character অনুজায়ে sanitize করবে এবং $url এ variable জমা করবে। যদি ইনপুট variable এর স্ট্রিং http://bangla.salearningschøøool.comএর মতন হয় আমরা sanitize করার পর পাব http://bangla.salearningschool.com

একটি ফর্মে একাধিক ইনপুট থাকতে পারে সে ক্ষেত্রে আমরা filter_var or filter_input এর পরিবর্তে filter_var_array or the filter_input_array ব্যবহার করব। এই উধাহরন এ আমরা filter_input_array() ফাংশন ব্যবহার করব তিনটা GET variables এর ক্ষেত্রে এই তিনটি হল নাম, বছর , ইমেইল।


< ?php
 $filters = array
 (
 "name" => array
 (
 "filter"=>FILTER_SANITIZE_STRING
 ),
 "age" => array
 (
 "filter"=>FILTER_VALIDATE_INT,
 "options"=>array
 (
 "min_range"=>1,
 "max_range"=>120
 )
 ),
 "email"=> FILTER_VALIDATE_EMAIL
 );
$result = filter_input_array(INPUT_GET, $filters);
if (!$result["age"]) {
 echo("Age must be a number between 1 and 120.
");
 } elseif(!$result["email"]) {
 echo("E-Mail is not valid.
");
 } else {
 echo("User input is valid");
 }
 ?>

নেম ইনপুট ফিল্ড একটি array এর মধ্যে রাখা হয়েছে এবং ফিল্টার সেট করা হয়েছে । এরপর যে array গুলো সেট করা হয়েছে তাদেরকে filter_input_array() ফাংশন এর মাধ্যমে গেট মেথড ব্যবহার করে ডাকা হবে। এরপর ইনপুটশ গুলো বৈধ কিনা তা চেক করবে।

 

Filter Callback

filter_callback ফিল্টার ব্যবহার করে ইউজার defined করা সম্ভব। সেই ক্ষেত্রে আমাদের ডাটা filtering এ পূর্ণ নিয়ন্ত্রণ থাকবে। নিচের উধাহরণটিতে আমরা user created ফাংশন ব্যবহার করেছি সকল "_" থেকে whitespace এ পরিবর্তন করার জন্য।


< ?php
 function convertSpace($string) {
 return str_replace("_", " ", $string);
 }
$string = "Peter_is_a_great_guy!";
echo filter_var($string, FILTER_CALLBACK,
 array("options"=>"convertSpace"));
 ?>

 

এর ফলাফল আসবে

Peter is a great guy!

 

উপড়ের উধারণটিতে সকল "_" পরিবর্তন করা হয়েছে whitespace এ এবং filter_var() ফাংশন কে কল করা হয়েছে FILTER_CALLBACK দ্বারা

 

পিএইচপি : একটি মাইএসকিউএল ডাটাবেজ তৈরি করা (PHP Create a MySQL Database)

Sheikh Mahfuzur Rahman

 

একটি ডাটাবেজ এক বা তারও বেশি টেবল নিয়ে গঠিত। কোন MySQL ডাটাবেজ তৈরি বা মুঁছে দিতে চাইলে আপনার বিশেষ ধরণের আইনগত অধিকার লাগবে যা CREATE নামে পরিচিত।

MySQLi এবং PDO ব্যবহার করে একটি মাইএসকিউএল ডাটাবেজ তৈরি করা

CREATE DATABASE স্টেটমেন্ট মাইএসকিউএল-এ একটি ডাটাবেজ তৈরি করতে ব্যবহৃত হয়। নিচের উদাহরণটি "myDB" নামের একটি ডাটাবেজ তৈরি করেঃ

ঊদাহরণ (MySQLi অবজেক্ট-অরিয়েন্টেড)


<?php
 $servername = "localhost";
 $username = "username";
 $password = "password";
 
 // Create connection
 $conn = new mysqli($servername, $username, $password);
 // Check connection
 if ($conn->connect_error) {
     die("Connection failed: " . $conn->connect_error);
 } 
 
 // Create database
 $sql = "CREATE DATABASE myDB";
 if ($conn->query($sql) === TRUE) {
     echo "Database created successfully";
 } else {
     echo "Error creating database: " . $conn->error;
 }
 
 $conn->close();
 ?>

লক্ষ্যণীয়ঃ যখন আপনি নতুন ডাটাবেজ তৈরি করেন, আপনাকে অবশ্যই MySQLi এর কাছে শুধুমাত্র প্রথম তিনটি আর্গুমেন্ট নির্দিষ্ট করে দিতে হবে (servername, username and password)।

 

টিপঃ আপনাকে যদি নির্দিষ্ট কোন পোর্ট ব্যবহার করতে হয় তাহলে ডাটাবেজ-নেম আর্গুমেন্টের জন্য একটি খালি স্ট্রিং যোগ করুন, ঠিক এই mysqli("localhost", "username", "password", "", port) এর মতো।

উদাহরণ (MySQLi Procedural)


<?php
 $servername = "localhost";
 $username = "username";
 $password = "password";
 
 // Create connection
 $conn = mysqli_connect($servername, $username, $password);
 // Check connection
 if (!$conn) {
     die("Connection failed: " . mysqli_connect_error());
 }
 
 // Create database
 $sql = "CREATE DATABASE myDB";
 if (mysqli_query($conn, $sql)) {
     echo "Database created successfully";
 } else {
     echo "Error creating database: " . mysqli_error($conn);
 }
 
 mysqli_close($conn);
 ?>

 

লক্ষ্য করুনঃ নিচের PDO উদাহরণটি "myDBPDO" নামের একটি ডাটাবেজ তৈরি করেঃ

উদাহরণ (PDO)


<?php
 $servername = "localhost";
 $username = "username";
 $password = "password";
 
 try {
     $conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);
     // set the PDO error mode to exception
     $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     $sql = "CREATE DATABASE myDBPDO";
     // use exec() because no results are returned
     $conn->exec($sql);
     echo "Database created successfully<br>";
     }
 catch(PDOException $e)
     {
     echo $sql . "<br>" . $e->getMessage();
     }
 
 $conn = null;
 ?>

 

টিপসঃ PDO এর একটি ব্যাপক সুবিধা হলো যেকোন সমস্যা মোকাবেলা করার জন্য, যা আমাদের ডাটাবেজ কোয়ারিগুলোতে ঘটতে পারে,  তার এটির এক্সেপশন ক্লাস রয়েছে। যদি try{ } ব্লকের ভিতর একটি এক্সেপশন ক্লাস ছুড়ে দেয়া হয় তাহলে স্ক্রিপ্টটি একজিকিউট করা বন্ধ করে দেয় এবং প্রথম catch(){ } ব্লকের ভিতর প্রবাহিত হয়। উপরের ক্যাচ ব্লকের ভিতর আমরা এসকিউএল স্টেটমেন্টটি এবং তৈরিকৃত এরর মেসেজের পাই।

 

পিএইচপি : মাইএসকিউএল টেবিল তৈরি (PHP Create MySQL Tables)

একটি ডাটাবেস টেবিল এর নিজস্ব নাম থাকে এবং এটা কলাম ও সারি নিয়ে গঠিত হয়।

MySQLi এবং PDO ব্যবহার করে একটি মাইএসকিউএল ছক (table) তৈরি করা

মাইএসকিউএল এ টেবিল তৈরি করতে CREATE TABLE স্টেটমেন্ট ব্যাবহার করা হয়।
আমরা এখন "MyGuests" নামে একটি টেবিল তৈরি করবো যার "id", "firstname", "lastname", "email" এবং "reg_date" নামে পাঁচটি কলাম থাকবে-


CREATE TABLE MyGuests (
 id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
 firstname VARCHAR(30) NOT NULL,
 lastname VARCHAR(30) NOT NULL,
 email VARCHAR(50),
 reg_date TIMESTAMP
 )

 

 

উপরের টেবিল তৈরির জন্য কিছু নির্দেশনা

ডাটা টাইপ করার পরে, প্রতিটি কলামের জন্য অন্যান্য যে ঐচ্ছিক বৈশিষ্ট্যগুলি নির্দিষ্ট করতে পারেন তা নিচে দেওয়া হল :

  • NOT NULL –যে কলামকে NOT NULL করা হবে তার অবশ্যই একটা মান (value) থাকতে হবে। মান (value) না থাকলে প্রকাশ এর অনুমতি পাবে না।
  • DEFAULT value – যখন কোন মান (value) গৃহীত না হয়, তখন কোন ডিফল্ট (default) মান (value) যোগ করা ।
  • UNSIGNED – কলাম এ শুধুমাএ সংখ্যা ধারনের জন্য ব্যবহৃত হয়। শুধুমাএ সংরক্ষিত তথ্যের ইতিবাচক সংখ্যা এবং শূন্য সংখ্যার সীমা নিয়ন্ত্রণ করে।
  • AUTO INCREMENT – মাইএসকিউএল স্বয়ংক্রিয়ভাবে মান নিয়ন্ত্রণ করে।
  • PRIMARY KEY –কোন টেবিল এর সারিকে স্বতন্ত্রভাবে সনাক্ত করতে ব্যবহৃত।

যদি কোন টেবিল এ primary key কলাম থাকে (এই ক্ষেত্রে ধরলাম "id" কলামটিকে primary key করা হয়েছে) তাহলে এর মধ্যকার ডাটা এই টেবিলের সংরক্ষিত ডাটা এর মধ্যে ইউনিক হতে হবে।

নিম্নলিখিত উদাহরণ এ আমরা দেখবো পিএইচপি দ্বারা কিভাবে টেবিল তৈরি করতে হয়-

উদাহরণ (MySQLi Object-oriented)


< ?php
 $servername = "localhost";
 $username = "username";
 $password = "password";
 $dbname = "myDB";
// Create connection
 $conn = new mysqli($servername, $username, $password, $dbname);
 // Check connection
 if ($conn->connect_error) {
       die("Connection failed: " . $conn->connect_error);
 }
// sql to create table
 $sql = "CREATE TABLE MyGuests (
 id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
 firstname VARCHAR(30) NOT NULL,
 lastname VARCHAR(30) NOT NULL,
 email VARCHAR(50),
 reg_date TIMESTAMP
 )";
if ($conn->query($sql) === TRUE) {
        echo "Table MyGuests created successfully";
 } else {
        echo "Error creating table: " . $conn->error;
 }
$conn->close();
 ?>

 

 

উদাহরণ (MySQLi Procedural)


< ?php
 $servername = "localhost";
 $username = "username";
 $password = "password";
 $dbname = "myDB";
// Create connection
 $conn = mysqli_connect($servername, $username, $password, $dbname);
 // Check connection
 if (!$conn) {
     die("Connection failed: " . mysqli_connect_error());
 }
// sql to create table
 $sql = "CREATE TABLE MyGuests (
 id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
 firstname VARCHAR(30) NOT NULL,
 lastname VARCHAR(30) NOT NULL,
 email VARCHAR(50),
 reg_date TIMESTAMP
 )";
if (mysqli_query($conn, $sql)) {
      echo "Table MyGuests created successfully";
 } else {
      echo "Error creating table: " . mysqli_error($conn);
 }
mysqli_close($conn);
 ?>

 

 

উদাহরণ (PDO)


<?php
 $servername = "localhost";
 $username = "username";
 $password = "password";
 $dbname = "myDBPDO";
 
 try {
     $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
     // set the PDO error mode to exception
     $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 
     // sql to create table
     $sql = "CREATE TABLE MyGuests (
     id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
     firstname VARCHAR(30) NOT NULL,
     lastname VARCHAR(30) NOT NULL,
     email VARCHAR(50),
     reg_date TIMESTAMP
     )";
 
     // use exec() because no results are returned
     $conn->exec($sql);
     echo "Table MyGuests created successfully";
     }
 catch(PDOException $e)
     {
     echo $sql . "<br>" . $e->getMessage();
     }
 
 $conn = null;
 ?>

 

 

পিএইচপি – মাইএসকিউএল এ ডাটা প্রবেশ করানো (PHP Insert Data Into MySQL in Bangla)

শেখ মাহফুজুর রহমান

 

MySQLi এবং PDO ব্যবহার করে মাইএসকিউএল এ ডাটা প্রবেশ করানো

একটি ডাটাবেজ এবং একটি টেবল তৈরি করার পর আমরা তাতে ডাটা যোগ করা শুরু করতে পারি।
এক্ষেত্রে যেসব সিনটেক্সট-নিয়ম অনুরসরন করতে হবেঃ

  • SQL কোয়ারিটি অবশ্যই PHP এর ভিতর কোটেড হতে হবে।
  • SQL কোয়ারির ভেতর স্ট্রিং ভ্যালুটি অবশ্যই কোটেড হতে হবে।
  • সংখ্যা বা নিউমেরিক ভ্যালুগুলো কোটেড হতে পারবেনা।
  • NULL শব্দটি কোটেড হতে পারবেনা।

INSERT INTO স্টেটমেন্টটি MySQL টেবলে নতুন রেকর্ড যোগ করার কাজে ব্যবহার করা হয়ঃ


INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)


 

এসকিউএল সম্পর্কে আরও জানতে আমাদের এসকিউএল টিটোরিয়ালটি পড়ুন।

 

পূর্বের অধ্যায়ে আমরা "MyGuests" নামের পাঁচ কলামের একটি খালি টেবল তৈরি করেছিলাম যার কলামগুলো ছিলঃ "id", "firstname", "lastname", "email" and "reg_date" । এখন ঐ টেবলটিকে ডাটা দিয়ে পূর্ণ করা যাক।

লক্ষ্য রাখতে হবে, যদি একটি কলাম AUTO_INCREMENT ('id' কলামের মতো) অথবা TIMESTAMP ("reg_date" কলামের মতো) হয় তাহলে সেটিকে এসকিউএল কোয়ারি নির্দিষ্ট করে দিতে হয়না; MySQL সয়ংক্রিয়ভাবে ভ্যালু যোগ করে নিবে।

নিচের উদাহরণগুলো "MyGuests" টেবলে নতুন রেকর্ড যোগ করেঃ

উদাহরণ (MySQLi অবজেক্ট-অরিয়েন্টেড)


<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('John', 'Doe', 'john@example.com')";

if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();
?>

 

উদাহরণ (MySQLi প্রসিডুরাল)


<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('John', 'Doe', 'john@example.com')";

if (mysqli_query($conn, $sql)) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}

mysqli_close($conn);
?>

 

উদাহরণ (PDO)


<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql = "INSERT INTO MyGuests (firstname, lastname, email)
    VALUES ('John', 'Doe', 'john@example.com')";
    // use exec() because no results are returned
    $conn->exec($sql);
    echo "New record created successfully";
    }
catch(PDOException $e)
    {
    echo $sql . "<br>" . $e->getMessage();
    }

$conn = null;
?>

 

পিএইচপি – টেবিলে শেষ প্রবেশকৃত রেকর্ড এর আইডি বের করা (PHP Get ID of Last Inserted Record in Bangla)

auto-increment ফাংশন এর মাধ্যমে যদি আমরা টেবিলে কোন ডাটা যোগ বা পরিবর্তন করে থাকি তাহলে এর ID এর নাম্বারটি আমরা অতি দ্রুতই পেতে পারি।

Phpmyadmin এ গিয়ে "MyGuests" নামের একটি ডাটাবেস টেবিল তৈরি করি । এখানে আইডি কলাম হচ্ছে AUTO_INCREMENT ফিল্ড:


 CREATE TABLE MyGuests (
 id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
 firstname VARCHAR(30) NOT NULL,
 lastname VARCHAR(30) NOT NULL,
 email VARCHAR(50),
 reg_date TIMESTAMP
 )

এবং সেভ বাটন এ ক্লিক করি। তাহলে আমাদের ডাটাবেস এবং টেবিল তৈরি হয়ে গেল।

এখন আমরা পরবর্তী পিএইচপি পেজ তৈরি করব জার মাধ্যমে আমরা ডাটা ইনপুট বা আপডেট করলে তার ID নাম্বার টা পাই।


< ?php 
$servername = "localhost";     /*সারভার নাম*/ 
$username = "username";        /*xampp server এ root ব্যবহার করা হয়*/ 
$password = "password";        /*xampp সারভার এ পাসওয়ার্ড ব্লাঙ্ক থাকে*/ 
$dbname = "myDB";              /*ডাটাবেস এর নাম*/ 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname);
                               /*এর মাধ্যমে ডাটাবেস এর সাথে connection তৈরি করা হোল */ 
// Check connection 
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
                               /*যদি connection ঠিক না থাকে তাহলে “connection failed” 
                               দেখাবে*/
}
$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('John', 'Doe', 'john@example.com')";
                               /*ডাটাবেস টেবিল এর মধ্যে একটি ডাটা যোগ করা হোল*/
if ($conn->query($sql) === TRUE) 
                               /*একটি শর্ত দিয়ে দেয়া হোল যদি SQL QUERY টা ঠিক মত হয়ে থাকে 
                               তাহলে নিচের মতন হবে*/ 
{
   $last_id = $conn->insert_id;
   echo "New record created successfully. Last inserted ID is: " . $last_id;
                              /*আমাদের একটি ID auto-increment সেট করে দেওয়া হয়েছিল এই লাইন 
                              এর মাধ্যমে আমরা সেই ID টা দেখতে পারব*/
} else {                      /*যদি আমাদের ডাটাবেসের সাথে query তে ভুল থাকে তাহলে 
                              সে এরর দেখাবে মানে কোন ডাটা অ্যাড হয় নি */
   echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();                /*এই কোড এর মাধ্যমে আমরা ডাটাবেস এর connection বন্ধ করে দিব */
?>

 

নোটপ্যাড ওপেন করে এই example টুকু টাইপ করে ফাইল টি সেভ করুন php_mysql_insert_lastid.php দিয়ে। আপনার ফাইল টি localhost > htdocs> test ফোল্ডার এর ভিতর রাখুন। ব্রাউজার ওপেন করে এড্রেস বারে লিখুন localhost/test/ php_mysql_insert_lastid.php . Go বাটন এ ক্লিক করলে একটি ফলাফল আপনি খুজে পাবেন। আপনি যে ID এর মাধ্যমে ডাটা অ্যাড করেছেন সেই ID নাম্বার টা ডিসপ্লে হবে।

পিএইচপি প্রিপেয়ার্ড স্ট্যাটমেন্ট (PHP Prepared Statements in Bangla)

ডাটাবেজ ম্যানেজম্যান্ট সিস্টেমে একটি প্রিপেয়ার্ড স্টেটমেন্ট হলো এমন একটি ফিচার যা একই বা একই ধরণের ডাটাবেজ স্টেটমেন্ট (যেমন SQL) বারবার দক্ষতার সাথে অ্যাকজিকিউট করতে ব্যবহৃত হয়। সার্ভার সাইড স্ক্রিপ্টিং ভাষা পিএইচপিতে (PHP) প্রিপেয়ার্ড স্টেটমেন্টগুলো এসকিউএল ইঞ্জেকশনের বিরুদ্ধে খুবই কার্যকর ভূমিকা রাখে। এসকিউএল ইঞ্জেকশন হলো এক ধরণের ইঞ্জেকশন কোড যা ডাটা-প্রোগ্রামগুলোতে আক্রমণ ও তথ্য চুরির কাজে ব্যবহার করা হয়।

 

প্রিপেয়ার্ড স্টেটম্যান্টস এবং বাউন্ড প্যারামিটারস

প্রিপেয়ার্ড স্টেটমেন্টগুলো সাধারণত নিচের মতো কাজ করেঃ

  1. প্রিপেয়ারঃ একটি এসকিউএল স্টেটমেন্ট টেমপ্লেট তৈরি করা হয় এবং ডাটাবেজে পাঠানো হয়। নির্দিষ্ট কতগুলো ভ্যালু অসংজ্ঞায়িত রাখা হয়, যেগুলো প্যারামিটার নামে পরিচিত এবং "?” চিহ্ন দিয়ে বুঝানো হয়। উদাহরণঃ INSERT INTO MyGuests VALUES(?, ?, ?)
  2. ডাটাবেজ এসকিউএল স্টেটমেন্ট টেমপ্লেটের উপর পার্স, কম্পাইল ও কোয়ারি অপটিমাইজেশন করে এবং তার ফলাফলটি একজিকিউট করে সংরক্ষণ করে।
  3. একজিকিউটঃ পরবর্তীতে, অ্যাপ্লিকেশনটি ভ্যালুগুলোকে প্যারামিটারে বাইন্ড করে, এবং ডাটাবেজ স্টেটমেন্টটিকে একজিকিউট করে। অ্যাপ্লিকেশনটি স্টেটমেন্টকে প্রত্যেকবার আলাদা আলাদা ভ্যালুর মাধ্যমে যতবার ইচ্ছে একজিকিউট করতে পারে।

এসকিউএল স্টেটমেন্ট সরাসরি একজিকিউট করার তুলনায় প্রিপেয়ার্ড স্টেটমেন্টের মাধ্যমে একজিকিউট করার দু'টি প্রধান সুবিধা রয়েছেঃ

  • প্রিপেয়ার্ড স্টেটমেন্ট পার্সিং টাইমকে কমিয়ে দেয় যেহেতু কোয়ারির উপর প্রস্তুতি একবারই করা হয় (যদিও স্টেটমেন্টটি অসংখ্যবার একজিকিউট করা হয়)।
  • বাউন্ড পারামিটারগুলো সার্ভারের প্রতি ব্যান্ডউইথের চাপ কমিয়ে দেয় যেহেতু আপনাকে শুধু প্যারামিটারগুলোকেই বার বার পাঠাতে হয়, পুরো কোয়ারি পাঠাতে হয়না।

প্রিপেয়ার্ড স্টেটমেন্ট এসকিউএল ইঞ্জেকশনের বিরুদ্ধে খুবই কার্যকরী কারণ প্যারামিটার ভ্যালুগুলোকে, যেগুলো পরবর্তীতে ভিন্ন প্রটোকল ব্যবহার করে পাঠানো হয়, তাদের সঠিকভাবে মুক্ত হতে হয় না। যদি এক্সটার্নাল ইনপুট থেকে প্রকৃত স্টেটমেন্ট টেমপ্লেটটিকে সংগ্রহ করা না হয়, তাহলে এসকিউএল ইঞ্জেকশন ঘটানো সম্ভব হয় না।

 

MySQLi-এ প্রিপেয়ার্ড স্টেটমেন্ট

নিচের উদাহরণটি MySQLi এ প্রিপেয়ার্ড স্টেটমেন্ট এবং বাউন্ড প্যারামিটার ব্যবহার করেঃ


<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// prepare and bind
$stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) 
        VALUES (?, ?, ?)");
$stmt->bind_param("sss", $firstname, $lastname, $email);

// set parameters and execute
$firstname = "John";
$lastname = "Doe";
$email = "john@example.com";
$stmt->execute();

$firstname = "Mary";
$lastname = "Moe";
$email = "mary@example.com";
$stmt->execute();

$firstname = "Julie";
$lastname = "Dooley";
$email = "julie@example.com";
$stmt->execute();

echo "New records created successfully";

$stmt->close();
$conn->close();
?>

 

উপরের উদাহরণটি থেকে ব্যাখ্যা করার কোড লাইনঃ


"INSERT INTO MyGuests (firstname, lastname, email) VALUES (?, ?, ?)"


আমাদের SQL এ আমরা একটি প্রশ্নবোধক চিহ্ন অন্তর্ভূক্ত করেছি(?) যা আমরা একটি ইন্টিজার বা পূর্ন সংখ্যা, স্ট্রিং, ডাবল অথবা ব্লব ভ্যালু দিয়ে প্রতিস্থাপন করতে চাই।

এখন, bind_param() ফাংশনের দিকে লক্ষ্য করা যাকঃ


$stmt->bind_param("sss", $firstname, $lastname, $email);


এই ফাংশনটি প্যরামিটারগুলোকে এসকিউএল কোয়ারির দিকে বাইন্ড করে এবং ডাটাবেজকে প্যারামিটারগুলো সম্পর্কে বলে দেয়। "sss” আর্গুমেন্টটি প্যারামিটারগুলোর অনুসারে ডাটার প্রকারকে তালিকাভূক্ত করে। 's' অক্ষরটি মাইএসকিউএলকে বলে দেয় যে প্যারামিটারটি হলো একটি স্ট্রিং।

আর্গুমেন্টটি নিচের চার প্রকারের যেকোন একটি হতে পারেঃ

  • i - integer
  • d - double
  • s - string
  • b - BLOB

আমাদের প্রত্যেকটি প্যারামিটারের জন্য এগুলোর যেকোন একটি অবশ্যই লাগবে।

মাইএসকিউএলকে কি ধরনের ডাটা চাই তা বলার মাধ্যমে আমরা এসকিউএল ইঞ্জেকশনের ঝুঁকি কমিয়ে দিতে পারি।

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

 

PDO তে প্রিপেয়ার্ড স্টেটমেন্ট

নিচের উদাহরণটিতে PDO তে প্রিপেয়ার্ড স্টেটমেন্ট এবং প্যারামিটার ব্যবহার করা হয়েছেঃ


<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // prepare sql and bind parameters
    $stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email)
    VALUES (:firstname, :lastname, :email)");
    $stmt->bindParam(':firstname', $firstname);
    $stmt->bindParam(':lastname', $lastname);
    $stmt->bindParam(':email', $email);

    // insert a row
    $firstname = "John";
    $lastname = "Doe";
    $email = "john@example.com";
    $stmt->execute();

    // insert another row
    $firstname = "Mary";
    $lastname = "Moe";
    $email = "mary@example.com";
    $stmt->execute();

    // insert another row
    $firstname = "Julie";
    $lastname = "Dooley";
    $email = "julie@example.com";
    $stmt->execute();

    echo "New records created successfully";
    }
catch(PDOException $e)
    {
    echo "Error: " . $e->getMessage();
    }
$conn = null;
?>

 

পিএইচপি – মাইএসকিউএল হতে ডাটা সিলেক্ট করা (PHP Select Data From MySQL in Bangla)

select statement ব্যবহার করা হয় টেবিল এর মধ্যে কোন ডাটা সিলেক্ট করে ডিসপ্লে করার জন্য
Sql syntax


SELECT column_name(s) FROM table_name


অথবা আমরা ব্যবহার করতে পারি


SELECT * FROM table_name


 

পিএইচপি দিয়ে এর ব্যবহার বোঝার জন্য আমাদের একটি টেবিল তৈরি করতে হবে নিচের মতন

মনে করি এই টেবিল এর নাম MyGuests

id firstname lastname email reg_date
1 John Doe john@example.com 2014-10-22 14:26:15
2 Mary Moe mary@example.com 2014-10-23 10:22:30
3 Julie Dooley julie@example.com 2014-10-26 10:48:23

এই ক্ষেত্রে আমরা ৩ নাম্বার ডাটাটি পরিবর্তন করতে চাই

পিএইচপি কোড


< ?php               /*আমাদের ডাটাবেসের ইউজার নাম, পাসওয়ার্ড, সার্ভার নাম সেট করতে হবে*/ 
$servername = "localhost"; 
$username = "username"; 
$password = "password"; 
$dbname = "myDB";    //কানেকশন দিতে হবে 
$conn = new mysqli($servername, $username, $password, $dbname); 
                     // কানেকশন চেক করতে হবে ঠিক মত connect হয়েছে কিনা 
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
                    /*আমদের SQL QUERY প্রথমে ডাটাবেস এর নাম উল্লেখ করে কলামগুলোর নাম দেওয়া হয়েছে*/
$sql = "SELECT id, firstname, lastname FROM MyGuests";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
                  /*যদি ০ এর চেয়ে বেসি রো থাকে তাহলে ডাটা ডিসপ্লে করবে*/ 
   // output data of each row
   /*sql code টেবিল এর ডাটা ডিসপ্লে করার*/
   while($row = $result->fetch_assoc()) {
    echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "br";
   }
} else { /*যদি ডাটা না থাকে সে বলবে টেবিল এ কোন ডাটা নেই*/
       echo "0 results";
}
$conn->close();
?>

 

পিএইচপি – মাইএসকিউএল হতে ডাটা ডিলিট করা (PHP Delete Data From MySQL in Bangla)

Delete statement ব্যবহার করা করা হয় ডাটাবেস টেবিল থেকে কোন ডাটাকে বাদ দিয়ে দেয়ার জন্য।

এর জন্য SQL SYNTAX হল


DELETE FROM table_name
WHERE some_column = some_value


যখন আমরা where clause ব্যবহার করব না সেইখেত্রে আমাদের সব ডাটা বাদ হয়ে যাবে। যখন আমরা where ব্যবহার করব তখন নির্দিষ্ট ডাটা বাদ হয়ে যাবে।
পিএইচপি দিয়ে এর ব্যবহার বোঝার জন্য আমাদের একটি টেবিল তৈরি করতে হবে নিচের মতন

মনে করি এই টেবিল এর নাম MyGuests

id firstname lastname email reg_date
1 John Doe john@example.com 2014-10-22 14:26:15
2 Mary Moe mary@example.com 2014-10-23 10:22:30
3 Julie Dooley julie@example.com 2014-10-26 10:48:23

 

এই ক্ষেত্রে আমরা ৩ নাম্বার ডাটাটি বাদ দিতে চাই

পিএইচপি কোড


< ?php           /*আমাদের ডাটাবেসের ইউজার নাম, পাসওয়ার্ড, সার্ভার নাম সেট করতে হবে*/ 
$servername = "localhost"; 
$username = "username"; 
$password = "password"; 
$dbname = "myDB";    //কানেকশন দিতে হবে 
$conn = new mysqli($servername, $username, $password, $dbname); 
                     // কানেকশন চেক করতে হবে ঠিক মত connect হয়েছে কিনা 
if ($conn->connect_error) {
     die("Connection failed: " . $conn->connect_error);
}
// SQL কোড টেবিল থেকে ৩ নাম্বার ডাটা বাদ দেয়ার জন্য
$sql = "DELETE FROM MyGuests WHERE id=3";
if ($conn->query($sql) === TRUE) {
    echo "Record deleted successfully";
                   /যদি sql query ঠিকঠাক মতন হয় তাহলে সফল হয়েছে বার্তা দেখাবে/
} else {
    echo "Error deleting record: " . $conn->error;
                  /* যদি sql query ঠিকঠাক মতন না হয় তাহলে বিফল হয়েছে বার্তা দেখাবে/*/
 }
$conn->close();   /*mysqlকানেকশন বন্ধ করা হবে*/
 ?>

 

পিএইচপি – মাইএসকিউএল ডাটা আপডেট করা (PHP Update Data in MySQL)

মাইএসকিউএল-আই এবং পিডিও ব্যবহার করে মাইএসকিউএল টেবলে ডাটা আপডেট

একটি টেবলের বিদ্যমান রেকর্ডগুলো আপডেট করতে UPDATE স্টেটম্যান্ট ব্যবহৃত হয়ঃ


UPDATE table_name
SET column1=value, column2=value2,...
WHERE some_column=some_value


 

 

লক্ষ্যণীয়ঃ আপডেট সিনট্যাক্স-এর WHERE ক্লজটিকে লক্ষ্য করুনঃ কোন্‌ রেকর্ড বা রেকর্ডসমূহ আপডেট করা হবে তা WHERE ক্লজটি ঠিক করে দেয়। আপনি যদি WHERE ক্লজটিকে মুঁছে দেন তাহলে সবগুলো রেকর্ডই আপডেট হবে!

এসকিউএল সম্পর্কে আরও জানতে আমাদের এসএকিউএল টিউটর‍্যালগুলো পড়ে নিন।

এখন "MyGuests" টেবলের দিকে লক্ষ্য করুনঃ

id firstname lastname email reg_date
1 John Doe john@example.com 2014-10-22 14:26:15
2 Mary Moe mary@example.com 2014-10-23 10:22:30
3 Julie Dooley julie@example.com 2014-10-26 10:48:23

 

নিচের উদাহরণগুলো, "MyGuests" টেবলে id=2 যুক্ত রেকর্ডকে আপডেট করেঃ

উদাহরণ ( MySQLi অবজেক্ট-ওরিয়েন্টেড)


<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$sql = "UPDATE MyGuests SET lastname='Doe' WHERE id=2";

if ($conn->query($sql) === TRUE) {
    echo "Record updated successfully";
} else {
    echo "Error updating record: " . $conn->error;
}

$conn->close();
?>

 

উদাহরণ ( MySQLi প্রসিডুরাল)


<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
 $conn = mysqli_connect($servername, $username, $password, $dbname);
 // Check connection
 if (!$conn) {
     die("Connection failed: " . mysqli_connect_error());
}

$sql = "UPDATE MyGuests SET lastname='Doe' WHERE id=2";
 
if (mysqli_query($conn, $sql)) {
    echo "Record updated successfully";
} else {
    echo "Error updating record: " . mysqli_error($conn);
}

mysqli_close($conn);
 ?>

 

উদাহরণ (পিডিও)


<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $sql = "UPDATE MyGuests SET lastname='Doe' WHERE id=2";

    // Prepare statement
    $stmt = $conn->prepare($sql);

    // execute the query
    $stmt->execute();

    // echo a message to say the UPDATE succeeded
    echo $stmt->rowCount() . " records UPDATED successfully";
    }
catch(PDOException $e)
    {
    echo $sql . "<br>" . $e->getMessage();
    }

$conn = null;
?>

 

পিএইচপি – মাইএসকিউএল থেকে ডাটা সিলেকশন নির্দিষ্ট করা (PHP Limit Data Selections From MySQL in Bangla)

MYSQL এর LIMIT প্যারামিটার ব্যবহার করে নির্দিষ্ট সংখ্যক রো পাওয়া যায়।

অনেকগুলো পেজ এ ফলাফল ডিসপ্লে করতে অথবা pagination এর ক্ষেত্রে LIMIT প্যারামিটার টা খুব সহজ।

অনেক বড় টেবিল এর জন্য এটা খুব উপকারী।

মনে করি আমরা একটি order নামক টেবিল থেকে প্রথম ৩০ টা ডাটা দেখতে চাই তার জন্য SQL query টি হবে


$sql = "SELECT * FROM Orders LIMIT 30";

যখন এটি রান করা হবে তখন প্রথম ৩০ টি ডাটা দেখা যাবে। যদি আমরা ১৬-২৫ এই রেকর্ড দেখতে চাই


$sql = "SELECT * FROM Orders LIMIT 10 OFFSET 15";

উপড়ের query টি OFFSET 15 সেট করার ফলে আমরা ১৫ এর পরের থেকে ১০ টি ডাটা দেখতে পারব। আমরা এর পরিবর্তে আরও একটি query চালাতে পারি যা এক ফলাফল পাওয়া যাবে


$sql = "SELECT * FROM Orders LIMIT 15, 10";

লক্ষ্য করার বিষয় নাম্বারগুলো এখন উলটো যখন কমা ব্যবহার করা হয়।

পিএইচপি – এক্সএমএল পার্সার (PHP XML Parsers)

এক্সএমএল কি?

এক্সএমএল ল্যাঙ্গুয়েজ হলো ডাটা বা তথ্যকে স্ট্রাকচার করার একটি পদ্ধতি যা ওয়েবসাইটগুলোতে তথ্য শেয়ার করার জন্য ব্যবহৃত হয়ে থাকে। আরএসএস ফিড এবং পডকাস্টের মতো অনেক ধরণের ওয়েব টেকনোলজি এক্সএমএল দিয়ে লেখা হয়। এক্সএমএল তৈরি করা সহজ। এটি অনেকটাই এইচটিএমএল এর মতো, পার্থক্য হলো এখানে আপনি নিজেই ট্যাগ তৈরি করেন; এইচটিএমএল এর ট্যাগগুলো ডব্লিওথ্রিসি'র নীতিমালা অনুসারে তৈরি হয়েছে। এক্সএমএল সম্পর্কে আরও জানতে আপনি আমাদের এক্সএমএল টিউটরিয়ালগুলো পড়ে দেখতে পারেন।

এক্সএমএল পার্সার কি?

একটি এক্সএমএল ডকুমেন্টকে পড়তে, আপডেট করতে, তৈরি এবং ম্যান্যুপিউলেট করতে একটি এক্সএমএল পার্সারের দরকার পড়ে। পিএইচপি'তে প্রধানত দুই ধরণের এক্সএমএল পার্সার রয়েছেঃ

১) ট্রি-বেজড পার্সার
২) ইভেন্ট-বেজড পার্সার

ট্রি-বেজড পার্সার

ট্রি-বেজড বা ট্রি নির্ভর পার্সার পুরো ডকুমেন্টকে মেমোরিতে ধারণ করে এবং এক্সএমএল ডকুমেন্টটিকে একটি ট্রি স্ট্রাকচারে রয়পান্তরিত করে। এটি পুরো ডকুমেন্টটিকে বিশ্লেষণ করে এবং ট্রি এলিমেন্টে (DOM) প্রবেশ (access) করতে দেয়।

একটি ক্ষুদ্রতর এক্সএমএল ডকুমেন্টের জন্য এই ধরণের পার্সার তুলনামূলকভাবে ভালো অপশান হয়ে থাকে, কিন্তু বড় এক্সএমএল ডকুমেন্টের ক্ষেত্রে পার্ফমেন্স (ধীর গতিতে পার্সা করে) ভালো হয়না বলে সেক্ষেত্রে এই ধরণের পার্সার ব্যবহার করা হয়না।

ট্রি-বেজড পার্সারের উদাহরণঃ

  • SimpleXML
  • DOM

ইভেন্ট-বেজড পার্সার

ইভেন্ট-বেজড বা ইভেন্ট নির্ভর পার্সার পুরো ডকুমেন্টকে মেমোরিতে ধারণ করেনা, তার পরিবর্তে, সেগুলো একবারে শুধু একটি নোডকে পড়ে এবং আপনাকে রিয়েল টাইমে ( যে সময়টিতে আপনি ডকুমেন্টটি নিয়ে কাজ করছেন) ডকুমেন্টের ঐ নোডটি'র সাথে ইন্টারেক্ট করতে দেয়। একবার আপনি পরবর্তী নোডে চলে গেলে পূর্বের নোডটি ফেলে দেয়া হয় মেমোরি থেকে।

বড় এক্সএমএল ডকুমেন্টের জন্য এই ধরণের পার্সার খুবই কার্যকর। এটি খুব দ্রুততর গতিতে পার্স করে এবং কম মেমোরি দখল করে।

ইভেন্ট বেজড পার্সারের উদাহরণঃ

  • XMLReader
  • XML Expat Parser

পিএইচপি ৫ সরটিং অ্যারে (PHP 5 Sorting Arrays)

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

Department of CSE, University of Chittagong

 

একটি অ্যারের ইলিমেন্টগূলো বর্ণানুক্রমিক (alphabetical) অথবা সংখ্যাসূচক (numerical) ক্রম অনুসারে সাজানো যায়। এই সাজানোটা ascending (ঊর্ধ্বগামী) অথবা descending (অধোগামী) উভয় প্রকারের হতে পারে।

পিএইচপি তে অ্যারে সাজানোর বা sort করার জন্য যে সব ফাংশন ব্যাবহার করা হয় ঐগুলো নিচে দেওয়া হলঃ

 

পিএইচপি - অ্যারে ফাংশন সর্ট করা

  • sort() – এই ফাংশনটি একটি অ্যারেকে ascending order (ছোট থেকে বড় ক্রম) এ sort করে।
  • rsort() - এই ফাংশনটি একটি অ্যারেকে descending order (বড় থেকে ছোট ক্রম) এ sort করে।
  • asort() – এটি অ্যাসোসিয়েটিভ অ্যারেকে মান অনুসারে ascending order এ sort করে বা সাজায়।
  • ksort() - এটি অ্যাসোসিয়েটিভ অ্যারেকে key অনুসারে ascending order এ sort করে বা সাজায়।
  • arsort() - এটি অ্যাসোসিয়েটিভ অ্যারেকে মান অনুসারে descending order এ sort করে বা সাজায়।
  • krsort() - এটি অ্যাসোসিয়েটিভ অ্যারেকে key অনুসারে descending order এ sort করে বা সাজায়।

 

অ্যারেকে ছোট থেকে বড় ক্রমে সাজানো – sort()

নিচের উদাহরণটি $cars নামের একটি array কে ছোট থেকে বড়তে বর্ণানুক্রমিক (alphabetical) ক্রম অনুসারে সাজায়।


<?php
 $cars = array("Volvo", "BMW", "Toyota");
 sort($cars);
 ?>

 

নিচের উদাহরণটি $numbers নামের একটি array কে ছোট থেকে বড়তে সংখ্যাসূচক (numerical) ক্রম অনুসারে সাজায়।


< ?php
 $numbers = array(4, 6, 2, 22, 11);
 sort($numbers);
 ?>

 

অ্যারেকে বড় থেকে ছোট ক্রমে সাজানো – rsort()

নিচের উদাহরণটি $cars নামের একটি array কে বড় থেকে ছোটতে বর্ণানুক্রমিক (alphabetical) ক্রম অনুসারে সাজায়।


<?php
 $cars = array("Volvo", "BMW", "Toyota");
 rsort($cars);
 ?>

 

নিচের উদাহরণটি $numbers নামের একটি array কে বড় থেকে ছোটতে সংখ্যাসূচক (numerical) ক্রম অনুসারে সাজায়।


< ?php
 $numbers = array(4, 6, 2, 22, 11);
 rsort($numbers);
 ?>

 

অ্যারেকে ছোট থেকে বড় ক্রমে সাজানো (মান অনুসারে) – asort()

নিচের উদাহরণটি $age নামের একটি associative array কে ছোট থেকে বড়তে মান অনুসারে সাজায়।


< ?php
 $age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
 asort($age);
 ?>

 

অ্যারেকে ছোট থেকে বড় ক্রমে সাজানো (key অনুসারে) – ksort()

নিচের উদাহরণটি $age নামের একটি associative array কে ছোট থেকে বড়তে key অনুসারে সাজায়।


< ?php
 $age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
 ksort($age);
 ?>

 

অ্যারেকে বড় থেকে ছোট ক্রমে সাজানো (মান অনুসারে) – arsort()

নিচের উদাহরণটি $age নামের একটি associative array কে বড় থেকে ছোটতে মান অনুসারে সাজায়।


< ?php
 $age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
 arsort($age);
 ?>

 

অ্যারেকে বড় থেকে ছোট ক্রমে সাজানো (key অনুসারে) – krsort()

নিচের উদাহরণটি $age নামের একটি associative array কে বড় থেকে ছোটতে key অনুসারে সাজায়।


< ?php
 $age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
 krsort($age);
 ?>

 

পিএইচপি – সিম্পল-এক্সএমএল পার্সার (PHP SimpleXML Parser in Bangla)

সিম্পল-এক্সএমএল (SimpleXML) হলো একটি পিএইচপি এক্সটেনশান যা আমাদেরকে সহজে এক্সএমএল ডাটা ম্যান্যুপিউলেট করতে এবং পেতে (get) সাহাজ্য করে।

সিম্পল-এক্সএমএল পার্সার

সিম্পল-এক্সএমএল একটি ট্রি-বেজড বা ট্রি নির্ভর পার্সার। যদি আপনি এক্সএমএল ডকুমেন্ট'টির স্ট্রাকচার বা লেআউট সম্পর্কে জেনে থাকেন তাহলে সিম্পল-এক্সএমএল একটি এলিমেন্টের নাম, এট্রিবিট এবং টেকচুয়াল ( টেক্সট) কন্টেন্টকে সহজেই পেতে সাহাজ্য করে।

সিম্পল-এক্সএমএল একটি এক্সএমএল ডকুমেন্টকে ডাটা স্ট্রাকচারে রূপান্তরিত করে যাকে নিয়ে আপনি এক গুচ্ছ এরে ( arrays ) বা অবজেক্টের মতো বারবার কাজ করতে পারেন। DOM অথবা এক্সপ্যাট পার্সারের তুলনায় সিম্পল-এক্সএমএল একটি এলিমেন্ট থেকে টেক্সট ডাটা পড়তে অল্প কিছু কোড লাইন নিয়ে কাজ করে।

ইন্সটলেশান

পিএইচপি-ফাইভ এ সিম্পল-এক্সএমএল ফাংশনগুলো পিএইচপি কোরেরই অংশ। এই ফাংশনগুলো ব্যবহার করতে কোন প্রকার ইন্টলেশনের দরকার পড়েনা।

পিএইচপি সিম্পল-এক্সএমএল - স্ট্রিং থেকে পড়া

পিএইচপি simplexml_load_string() ফাংশনটি একটি স্ট্রিং থেকে এক্সএমএল ডাটা পড়তে ব্যবহৃত হয়। মনে করি, নিচেরটির মতো আমাদের একটি এক্সএমএল ভ্যারিয়েবল রয়েছে যা এক্সএমএল ডাটা ধারণ করেঃ


$myXMLData =
"<?xml version='1.0' encoding='UTF-8'?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>";

 

নিচের উদাহরণটি আমাদের দেখায়, কিভাবে simplexml_load_string() ফাংশনটিকে ব্যবহার করে একটি স্ট্রিং থেকে এক্সএমএল ডাটা পড়তে হয়ঃ


<?php
$myXMLData =
"<?xml version='1.0' encoding='UTF-8'?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>";

$xml=simplexml_load_string($myXMLData) or die("Error: Cannot create object");
print_r($xml);
?>

 

উপরের কোডটির আউটপুট হবেঃ


SimpleXMLElement Object ( [to] => Tove [from] => Jani [heading] => Reminder [body] => Don't forget me this weekend! )


 

এরর হ্যান্ডল করার টিপসঃ ডকুমেন্ট লোড করার সময় libxml ফাংশানালিটিকে সবগুলো এক্সএমএল এরর ত্রুটিকে ফিরে পেতে ব্যবহার করুন এবং তারপর এররগুলো সারানোর উপর কাজ করুনঃ


<?php
libxml_use_internal_errors(true);
$myXMLData =
"<?xml version='1.0' encoding='UTF-8'?>
<document>
<user>John Doe</wronguser>
<email>john@example.com</wrongemail>
</document>";

$xml = simplexml_load_string($myXMLData);
if ($xml === false) {
    echo "Failed loading XML: ";
    foreach(libxml_get_errors() as $error) {
        echo "<br>", $error->message;
    }
} else {
    print_r($xml);
}
?>

 

উপরের কোডটির আউটপুট হবেঃ


Failed loading XML:
Opening and ending tag mismatch: user line 3 and wronguser
Opening and ending tag mismatch: email line 4 and wrongemail


 

পিএইচপি সিম্পল-এক্সএমএল - ফাইল থেকে পড়া

পিএইচপি simplexml_load_file() ফাংশনটি একটি ফাইল থেকে এক্সএমএল ডাটা পড়তে ব্যবহৃত হয়। মনে করি আমাদের "note.xml" নামের একটি ফাইল রয়েছে যা নিচের মতো দেখায়ঃ


<?xml version="1.0" encoding="UTF-8"?>
<note>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

 

নিচের উদাহরণটি আমাদেরকে দেখায়, কিভাবে simplexml_load_file() ফাংশনটি ব্যবহার করে ফাইল থেকে এক্সএমএল ডাটা পড়তে হয়ঃ


<?php
$xml=simplexml_load_file("note.xml") or die("Error: Cannot create object");
print_r($xml);
?>

 

উপরের কোডটির আউটপুট হবেঃ


SimpleXMLElement Object ( [to] => Tove [from] => Jani [heading] => Reminder [body] => Don't forget me this weekend! )


 

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

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

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

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 XML Expat Parser in Bangla)

পিএইচপি'র বিল্ট-ইন এক্সএমএল এক্সপ্যাট পার্সার (XML Expat Parser) এক্সএমএল ডকুমেন্টকে পিএইচপি'তে প্রসেস করা সম্ভবপর করেছে।

এক্সএমএল এক্সপ্যাট পার্সার

এক্সপ্যাট পার্সারটি হলো ইভেন্ট-বেজড পার্সার অর্থাৎ এটি ইভেন্টের উপর নির্ভর করে একজিকিউট হয়। নিচের এক্সএমএল এর অংশটিকে দেখুনঃ


<from>Jani</from>


 

একটি ইভেন্ট-বেজড পার্সার উপরের এক্সএমএল'টিকে তিনটি ইভেন্টের সিরিজ হিসেবে রিপোর্ট করেঃ

  • স্টার্ট এলিমেন্ট হলোঃ from
  • CDATA সেকশানকে শুরু করে যার ভ্যালুঃ Jani
  • ক্লোজ এলিমেন্টঃ from

এক্সএমএল এক্সপ্যাট পার্সার ফাংশনগুলো পিএইচপি কোরের অংশ। এই ফাংশনগুলোকে ব্যবহার করতে কোন ইন্সটলেশনের দরকার পড়েনা।

এক্সমএমএল ফাইল

নিচের উদাহরণে "note.xml" এক্সএমএল ফাইলটি ব্যবহৃত হবেঃ


<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

 

এক্সএমএল এক্সপ্যাট পার্সার'কে শুরু করা

আমরা চাই এক্সএমএল এক্সপ্যাট পার্সার'টিকে পিএইচপি'তে শুরু করতে, ভিন্ন ভিন্ন এক্সএমএল ইভেন্টের জন্য কিছু হ্যান্ডলার ডিফাইন করতে, এবং তারপর এক্সএমএল ফাইলটিকে পার্স করতে।


<?php
// Initialize the XML parser
$parser=xml_parser_create();

// Function to use at the start of an element
function start($parser,$element_name,$element_attrs) {
  switch($element_name) {
    case "NOTE":
    echo "-- Note --<br>";
    break;
    case "TO":
    echo "To: ";
    break;
    case "FROM":
    echo "From: ";
    break;
    case "HEADING":
    echo "Heading: ";
    break;
    case "BODY":
    echo "Message: ";
  }
}

// Function to use at the end of an element
function stop($parser,$element_name) {
  echo "<br>";
}

// Function to use when finding character data
function char($parser,$data) {
  echo $data;
}

// Specify element handler
xml_set_element_handler($parser,"start","stop");

// Specify data handler
xml_set_character_data_handler($parser,"char");

// Open XML file
$fp=fopen("note.xml","r");

// Read data
while ($data=fread($fp,4096)) {
  xml_parse($parser,$data,feof($fp)) or
  die (sprintf("XML Error: %s at line %d",
  xml_error_string(xml_get_error_code($parser)),
  xml_get_current_line_number($parser)));
}

// Free the XML parser
xml_parser_free($parser);
?>

 

উপরের উদাহরণটির ব্যাখ্যা

  1. xml_parser_create() ফাংশনের মাধ্যমে এক্সএমএল পার্সারটিকে শুরু করা হয়
  2. ভিন্ন ভিন্ন ইভেন্ট হ্যান্ডলারের সাথে ব্যবহারের জন্য ফাংশন তৈরি করা হয়
  3. যখন পার্সারটি ওপেনিং ও ক্লোজিং ট্যাগের সম্মুক্ষীণ হবে তখন কোন ফাংশনটি একজিকিউট হবে তা ঠিক করতে xml_set_element_handler() ফাংশনটিকে যোগ করা হয়।
  4. যখন পার্সারটি ক্যারেক্টার ডাটার সম্মুক্ষীণ হবে তখন কোন ফাংশনটি একজিকিউট হবে তা ঠিক করতে xml_set_character_data_handler() ফাংশনটিকে যোগ করা হয়।
  5. xml_parse() function ফাংশনের মাধ্যমে "note.xml" ফাইলটিকে পার্স করা হয়।
  6. কোন এরর বা সমস্যার ক্ষেত্রে, একটি এক্সএমএল এরর'কে টেক্সট ডেসক্রিপশানে কনভার্ট করতে xml_error_string() ফাংশনটিকে যোগ করা হয়।
  7. xml_parser_create() ফাংশনের সাথে নির্ধারণ করা মেমোরিকে মুক্ত করতে xml_parser_free() ফাংশনকে কল করা হয়।

 

পিএইচপি – এক্সএমএল DOM পার্সার (PHP XML DOM Parser in Bangla)

শেখ মাহফুজুর রহমান

পিএইচপি'র বিল্ট-ইন ডম (DOM) পার্সারের জন্য পিএইচপি'তে এক্সএমএল ডকুমেন্ট প্রসেস করা সম্ভব হয়েছে।

 

এক্সএমএল DOM পার্সার

DOM পার্সার একটি ট্রি-বেজড (DOM ট্রি) পার্সার। নিচের এক্সএমএল ডকুমেন্ট ফ্র্যাকশনটির দিকে তাকানঃ


<?xml version="1.0" encoding="UTF-8"?>
<from>Jani</from>

 

DOM উপরের এক্সএমএল'টিকে একটি ট্রি স্ট্রাকচার হিসেবে দেখেঃ

লেভেল ১: এক্সএমএল ডকুমেন্ট

লেভেল ২: রুট এলিমেন্টঃ

লেভেল ৩: টেক্সট এলিমেন্টঃ "Jani"

 

ইন্সটলেশন

DOM পার্সার ফাংশনগুলো পিএইচপি কোরের অংশ। এই ফাংশনগুলোকে ব্যবহার করার জন্য কোন ইন্সটলেশনের দরকার পড়েনা।

একটি এক্সএমএল ফাইল

নিচের এক্সএমএল ফাইলটি আমাদের উদাহরণে ব্যবহৃত হবেঃ


<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

 

লোড এবং এক্সএমএল আউটপুট

আমরা চাই এক্সএমএল পার্সারটিকে চালু করতে, এক্সএমএল'টিকে লোড করতে এবং এটা থেকে আউটপুট পেতে।

উদাহরণঃ


<?php
$xmlDoc = new DOMDocument();
$xmlDoc->load("note.xml");

print $xmlDoc->saveXML();
?>

 

উপরের কোডটির আউটপুট হবেঃ


Tove Jani Reminder Don't forget me this weekend!


 

আপনি যদি ব্রাউজার উইন্ডোতে "View source" সিলেক্ট করেন তাহলে নিচের এইচটিএমএলটি দেখতে পাবেনঃ


<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

উপরের উদাহরণটি একটি DOMDocument-Object তৈরি করে এবং "note.xml" থেকে এক্সএমএল'টিকে এর মধ্যে লোড করে। তারপর saveXML() ফাংশনটি ভিতরের এক্সএমএল ডকুমেন্টটিকে একটি স্ট্রিং-এ রাখে, ফলে আমরা এটিকে আউটপুট হিসেবে পেতে পারি।

 

এক্সএমএল এর মধ্যে দিয়ে লুপিং

আমরা চাই এক্সএমএল পার্সারটিকে চালু করতে, এক্সএমএল'টিকে লোড করতে এবং এলিমেন্টের সবগুলো এলিমেন্টের মধ্যে লুপ তৈরি করতেঃ


<?php
$xmlDoc = new DOMDocument();
$xmlDoc->load("note.xml");

$x = $xmlDoc->documentElement;
foreach ($x->childNodes AS $item) {
  print $item->nodeName . " = " . $item->nodeValue . "<br>";
}
?>

 

উপরের কোডটির আউটপুট হবেঃ


#text =
to = Tove
#text =
from = Jani
#text =
heading = Reminder
#text =
body = Don't forget me this weekend!
#text =


 

উপরের উদাহরণটিতে আপনি দেখতে পাবেন যে প্রত্যেকটি এলিমেন্টের মধ্যে খালি (empty) টেক্সট নোড রয়েছে। যখন এক্সএমএল তৈরি হয় তখন নোডগুলোর মধ্যে প্রায়ই হোয়াইট-স্পেস থাকে। এক্সএমএল DOM পার্সার এগুলোকে সাধারণত এলিমেন্ট হিসেবে বিবেচনা করে এবং আপনি যদি এগুলোর সম্পর্কে জ্ঞাত না হন তাহলে মাঝে মাঝে এগুলো সমস্যার সৃষ্টি করে।

 

অ্যাজাক্স পরিচিতি (AJAX Introduction)

শেখ মাহফুজুর রহমান

একটি ওয়েব পেজ পুরোটা রিলোড না করে পেজের একটি অংশকে আপডেট করার প্রক্রিয়াই হলো অ্যাজাক্স।

 

অ্যাজাক্স কি?

AJAX এর মানে হলো Asynchronous JavaScript and XML । অ্যাজাক্স হলো ফাস্ট এবং ডাইনামিক ওয়েব পেজ তৈরির একটি কৌশল। অ্যাজাক্স ওয়েব পেজকে অ্যাসিংক্রোনাসলি (asynchronously) সার্ভারের সাথে সামান্য পরিমাণ ডাটা বিনিময় (--) করেই আপডেট করতে সাহাজ্য করে। এর মানে হলো একটি পেজকে পুরোপুরি লোড না করে পেজের একটি অংশকে আপডেট করা সম্ভব। ক্লাসিক ওয়েব পেজগুলোতে, যেগুলো অ্যাজাক্স ব্যবহার করেনা, কন্টেন্ট পরিবর্তন করার পর পরিবর্তিত পেজকে পেতে চাইলে অবশ্যই তা রিলোড করতে হবে।
অ্যাজাক্স ব্যবহারকারী অ্যাপ্লিকেশনের উদাহরন হলোঃ গুগল ম্যাপ, জিমেইল, ইউটিউব এবং ফেসবুক ট্যাব।

কিভাবে অ্যাজাক্স কাজ করে

১)ব্রাউজারঃ
একটি ইভেন্ট তৈরি হয়...
একটি XMLHttpRequest অবজেক্ট তৈরি করা হয়
HttpRequest পাঠানো হয়

---->> ইন্টারনেট ---->>

২) সার্ভার
HttpRequest কে প্রসেস করে
একটি রেসপন্স তৈরি করে এবং সেই ডাটা ব্রাউজারে প্রেরণ করে

---->> ইন্টারনেট ---->>

৩) ব্রাউজার
ফেরত আসা ডাটাগুলো প্রসেস করে
পেজের কন্টেন্ট আপডেট করে

 

ইন্টারনেট স্ট্যান্ডার্ড নির্ভর অ্যাজাক্স

ইন্টারনেট স্ট্যান্ডার্ডের উপর নির্ভর করে অ্যাজাক্স কাজ করে এবং নিচের কম্বিনেশনগুলো ব্যবহার করেঃ

  • XMLHttpRequest অবজেক্ট (সার্ভারের সাথে অ্যাসিংক্রোনাসলি ডাটা বিনিময় করার জন্য)
  • জাভাস্ক্রিপ্ট/DOM (তথ্যকে দেখানো/ইন্টারেক্ট করতে)
  • সিএসএস (ডাটাকে স্টাইল করতে)
  • এক্সএমএল (বিনিময়কৃত ডাটা ফরমেট হিএবে ব্যবহৃত হয়)

নোটঃ অ্যাজাক্স অ্যপ্লিকেশনগুলো ব্রাউজার এবং প্লাটফর্ম ইন্ডিপেন্ডেন্ট হয়ে থাকে অর্থাৎ যেকোন প্লাটফর্মে অ্যাজাক্স কার্যকর।

 

গুগল সাজেস্ট

অ্যাজাক্স ২০০৫ সালে Google Suggest অ্যাপ্লিকেশনে ব্যবহার হওয়ার মাধ্যমে গুগলের হাত ধরে জনপ্রিয় হয়েছিল।

Google Suggest ডাইনামিক ওয়েব ইন্টারফেস তৈরি করতে অ্যাজাক্স ব্যবহার করছেঃ যখন আপনি গুগলের সার্চ বক্সে কিছু টাইপ করেন, একটি জাভাস্ক্রিপ্ট অক্ষরগুলোকে সার্ভারে পাঠায় এবং সার্ভার একটি সাজেশন লিস্ট পাঠিয়ে দেয় যা আপনি দেখতে পান।

আজকেই অ্যাজাক্স ব্যবহার শুরু করুন

আমাদের পিএইচপি টিউটরিয়ালে আমরা ব্যাখ্যা করবো কিভাবে অ্যাজাক্স একটি ওয়েব পেজের পুরোটা রিলোড না করে পেজের একটি অংশকে আপডেট করতে পারে। সার্ভার স্ক্রিপ্টটি পিএইচপি'তে লেখা হবে। অ্যাজাক্স সম্পর্কে আরও বেশি জানতে চাইলে আমাদের অ্যাজাক্স টিউটোরিয়ালটি ভিজিট করুন।

multiple Mysql query ব্যবহার করে পিএইচপি দিয়ে ডাটাবেস টেবিল এ অধিক ডাটা একসাথে অ্যাড করা যায়. PHP Insert Multiple Records Into MySQL

নাম-শরিফুল ইসলাম
Job category-Php Coder
Email-bappiislam1988@gmail.com
Mob-01722806467
বিষয়- PHP Insert Multiple Records Into
multiple Mysql query ব্যবহার করে পিএইচপি দিয়ে ডাটাবেস টেবিল এ অধিক ডাটা একসাথে অ্যাড করা যায়

পিএইচপি ব্যবহার করে ফলাফল
< ?php $servername = "localhost";/*mysql এর সার্ভার নাম*/ $username = "username";/*ইউজার নাম*/ $password = "password";/*পাসওয়ার্ড*/ $dbname = "myDB";/*তৈরিকৃত ডাটাবেসের নাম*/ // mysql এর সাথে সঠিক কানেকশন তৈরি করা $conn = new mysqli($servername, $username, $password, $dbname); //কানেকশন চেক করা if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
/*প্রধান SQL query ডাটাবেস এ ডাটা যোগ করার জন্য প্রথমে টেবিল এর নাম উল্লেখ করা হয়েছে এরপর ব্র্যাকেটের মধ্যে কলাম এর নাম উল্লেখ করা হয়েছে পরবর্তী ব্রাকেট এর মধ্যে data গুলো যোগ করতে হবে এই নির্দেশ দেয়া হয়েছে*/
$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('John', 'Doe', 'john@example.com');";
$sql .= "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('Mary', 'Moe', 'mary@example.com');";
$sql .= "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('Julie', 'Dooley', 'julie@example.com')";
if ($conn-> multi_query ($sql) === TRUE)
/query যদি ঠিকঠাক মতন হয়ে থকে তাহলে সফল বার্তা দেখাবে/
{
echo "New record created successfully";
} else
/*তা না হলে বিফল বার্তা দেখাবে* /
{
echo "Error: " . $sql . "
" . $conn->error;
}

$conn->close();/*কানেকশন বন্ধ করা হবে*/
?>

পিএইচপি ৫ ভূমিকা (PHP 5 Introduction)

আক্তারুজ্জামান
Department of CSE, University of Chittagong.

 

পিএইচপি কি?

  • পিএইচপি হল “PHP: Hypertext Preprocessor” এর সংক্ষিপ্ত রূপ।
  • এটি বহুল ব্যবহৃত open source ল্যাংগুয়েজ যেটা মূলত ওয়েব ডেভেলপেমেন্টের জন্য ব্যবহার করা হয়।
  • সার্ভার সাইড স্ক্রিপ্টিং ল্যাংগুয়েজ অর্থাৎ পিএইচপি স্ক্রিপ্ট রান হয় সার্ভারে।
  • পিএইচপি ফ্রিতে ডাউনলোড এবং ব্যাবহার করা যায়।

 

পিএইচপি শেখার আগে কি জানা থাকা দরকার

পিএইচপি ভালভাবে বুঝতে হলে HTML, CSS এবং JavaScript সম্পর্কে বেসিক ধারনা থাকা জরুরী।

পিএইচপি ফাইল কি?

  • একটি পিএইচপি ফাইলে text, html, css, JavaScript এবং PHP কোড থাকতে পারে।
  • পিএইচপি ফাইল রান হয় সার্ভারে এবং রেজাল্ট এইচটিএমএল কোড হিসেবে ব্রাউজারে রিটার্ন হয় ।
  • পিএইচপি ফাইলের এক্সটেনশন হল .php ।

 

পিএইচপি দিয়ে কি কি করা যায়?

ওয়েব পেজে ডাইনামিক কনটেন্ট সৃষ্টি করার জন্য পিএইচপি ব্যাবহার করা হয়।

  • সার্ভারে কোন ফাইল তৈরি, ওপেন, রিড, রাইট, ডিলিট এবং ক্লোজ করতে পিএইচপি ব্যাবহার করা হয়।
  • পিএইচপি এইচটিএমএল ফরমের ডাটা সংগ্রহ করতে পারে।
  • cookies সেন্ড এবং রিসিভ করতে পিএইচপি ব্যাবহার করা হয়।
  • ডাটাবেজের কাজ, যেমনঃ ডাটাবেজে ডাটা এড, ডিলিট এবং পরিবর্তন করতে পিএইচপি ব্যাবহার করা হয়।
  • ইউজার এর এক্সেস নিয়ন্ত্রণ করতে পিএইচপি ব্যাবহার করা যেতে পারে।
  • ডাটা এনক্রিপ্ট করার কাজেও পিএইচপি ব্যাবহার হয়।
  • পিএইচপি দিয়ে এইচটিএমএল কোড প্রদর্শন করার পাশাপাশি ইমেজ, PDF এমনকি flush মুভিও প্রদর্শন করা যায়।

 

পিএইচপি কেন শিখব?

  • প্রায় সব প্লাটফর্ম (Windows, Linux, Unix, Mac OS X, etc) পিএইচপি সাপোর্ট করে।
  • সব সার্ভারে পিএইচপি ব্যাবহার উপযোগী।
  • পিএইচপি বিস্তৃত ডাটাবেজ সাপোর্ট করে।
  • পিএইচপি সম্পূর্ণ ফ্রি এবং ওপেন সোর্স।
  • পিএইচপি শেখা সহজ।
  • ওয়েবে সবচাইতে জনপ্রিয় কন্টেন্ট ম্যানেজমেন্ট সিস্টেম ওয়ার্ডপ্রেস (WordPress) পিএইচপি দিয়ে বানানো।
  • সবচাইতে জনপ্রিয় সামাজিক মিডিয়া সাইট ফেসবুকে পিএইচপি ব্যাবহার করা হয়।

পিএইচপি ৫ ফর্ম ভেলিডেশন (PHP 5 Form Validation)

কিভাবে ফর্ম কে validate করতে হয় তা আমরা এক এক করে কোড এর মাধ্যমে দেখব এবং তার বর্ণনা দেখব

টেক্সট ফিল্ডের এর এইচটিএমএল ফর্ম


Name:

E-mail:

Website:

Comment:

Gender:

Female
Male

 


 

টেক্সট ফিল্ডের এর এইচটিএমএল ফর্ম :
Name: <input type="text" name="name">
E-mail: <input type="text" name="email">
Website: <input type="text" name="website">
Comment: <textarea name="comment" rows="5" cols="40">রেডিও বাটন ব্যবহার করে এর পরবর্তী অংশ :

Gender:
<input type="radio" name="gender" value="female">Female
<input type="radio" name="gender" value="male">Male

ফর্মের এর শুরুতে পোস্ট করার element


<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

 

যখন ফর্ম সাবমিট করা হয় তখন পোস্ট মেথড এর মাধ্যমে ডাটা সেন্ড করা হয়

ফর্মে আমরা ব্যবহার করেছি $_SERVER["PHP_SELF"] যার অর্থ এই কোড ব্যবহার করার ফলে সাবমিট করা ডাটা অন্য কোন পেজ এ না গিয়ে এই পেজ এই পোস্ট হবে এবং এরর মেসেজ দেখাবে।

htmlspecialchars() ফাংশন এইচটিএমএল এর special characters গুলো কে এইচটিএমএল entities এ পরিবর্তন করে থাকে।

 

PHP নিরাপত্তা

$_SERVER["PHP_SELF"] variable হ্যাকার রা ব্যবহার করে থাকে

যদি পেজ এ এই ফাংশন ব্যবহার করা হয়ে থাকে তখন কোন ইউজার slash(/) চিহ্ন ব্যবহার করতে পারে তখন কিছু ক্রস সাইট scripting (XSS) গননা হতে পারে।

মনে করি আমাদের এই ফর্মটি "test_form.php"নামে আছে।


<form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">

 

যদি কোন ইউজার এড্রেস বারে লিখে http://www.example.com/test_form.php তাহলে সেটা রিড করবে


<form method="post" action="test_form.php">

 

যদি কোন ইউজার এড্রেস বারে লিখে


http://www.example.com/test_form.php/%22%3E%3Cscript%3Ealert('hacked')%3C/script%3E


 

তাহলে রিড করবে


<form method="post" action="test_form.php/"><script>alert('hacked')</script>

 

যখন পেজ লোড হবে ইয়খন javascript কোড গণনা হবে। সুতরাং আমাদের এইখানে সতর্ক থাকতে হবে যে একজন হ্যাকার কোন ইউজার কে অন্য কোন সার্ভারে নিয়ে জেতে পারে।

 

কিভাবে $_SERVER["PHP_SELF"] এর অপব্যবহার থেকে রক্ষা পাওয়া যাবে

আমরা htmlspecialchars() function ব্যবহার করার মাধ্যমে এই সমস্যা থেকে মুক্ত হতে পারি। ফর্মের পুর কোড টা আমরা এইভাবে লিখতে পারি


<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

যেহেতু htmlspecialchars() function এইচটিএমএল এর special character কে এইচটিএমএল entities এ পরিবর্তন করে সেহেতু কোন ইউজার যদি PHP_SELF এর অপব্যবহার করতে চেষ্টা করে তাহলে অউতপুত টা আসবে


<form method="post" 
action="test_form.php/&quot;&gt;&lt;script&gt;alert('hacked')&lt;/script&gt;">

 

তাতে কোন ক্ষতি হবে না।

 

পিএইচপি এর মাধ্যমে ডাটা validate করা

htmlspecialchars() ফাংশন ব্যবহার করে আমাদের সমস্ত ডাটাকে পাস করতে হবে। এখন যদি কেওএইটা পোস্ট করতে চায় তাহলে এটা কখনই গণনা হবে না কারন এইচটিএমএল escaped কোড দ্বারা এটি একটি নিরাপদ জায়গায় রাখা হয়েছে।

আমরা আরও দুটি জিনিস দেখব

  1. PHP trim() function ব্যবহার করে অপ্রয়োজনীয় ফাকা জায়গা, নতুন কোন লাইন এই character গুলো কে রিমুভ করতে পারি
  2. PHP stripslashes() ব্যবহার করে backslashes (\) দূর করতে পারি। এখন আমরা test_input() নামে একটি ফাংশন তৈরি করব যা সব ডাটাগুলোকে $_POST এর মাধ্যমে চেক করবে

<?php
 // define variables and set to empty values
 $name = $email = $gender = $comment = $website = "";
 
 if ($_SERVER["REQUEST_METHOD"] == "POST") {
   $name = test_input($_POST["name"]);
   $email = test_input($_POST["email"]);
   $website = test_input($_POST["website"]);
   $comment = test_input($_POST["comment"]);
   $gender = test_input($_POST["gender"]);
 }
 
 function test_input($data) {
   $data = trim($data);
   $data = stripslashes($data);
   $data = htmlspecialchars($data);
   return $data;
 }
 ?>

এইখানে $_SERVER["REQUEST_METHOD"] যদি post মেথড ব্যবহার করা হয় তাহলে ফর্ম এর সকল ডাটা সাবমিট করা হবে এবং তা validate হবে। এই কোডটি রান করার পর যদি কোন ইউজার ফর্মের ডাটা ফাকা রেখে সাবমিট করে তাহলে এর ফলাফল বুঝা যাবে।

 

পিএইচপি ৫ if…else…elseif স্ট্যাটমেন্ট (PHP 5 if…else…elseif Statements)

PHP তে আমরা কোন variable ঘোষণা করলে তা $ চিহ্ন দিয়ে প্রকাশ করে থাকি। আমরা যদি if-else statement এর কাজ করতে যাই তাহলে আমাদের এই চিহ্ন নিয়ে কাজ করতে হবে। কোন উদাহরন দেওয়ার আগে আমরা একটু if-else বিষয় টা বুঝে নেই।

পিএইচপি ফাইল রান করার ক্ষেত্রে আমাদের অনেক condition থাকতে পারে if-else এর মাধ্যমে আমরা সেই condition গুলো প্রকাশ করতে পারি এবং প্রিন্ট করতে পারি।


< ?php
 $t = date("H");            /*variable ঘোষণা করেছি */
if ($t < "20")              /*এর মাধ্যমে আমরা শর্ত দিয়ে দিয়েছি*/
 {
 echo "Have a good day!";   /*এবং শর্ত যদি মিলে তাহলে তা প্রিন্ট করবে */
 }
 ?>

যদি আমরা if এর সাথে else ব্যবহার করি তাহলে দেখুন


< ?php
 $t = date("H");          /*variable ঘোষণা করেছি */
if ($t < "20")            /*এর মাধ্যমে আমরা শর্ত দিয়ে দিয়েছি*/
 {
 echo "Have a good day!"; /*এবং শর্ত যদি মিলে তাহলে তা প্রিন্ট করবে */
 }
 else {
 echo "Have a good night!";/*যদি শর্ত না মিলে তাহলে এটা প্রিন্ট হবে*/
 }

 অনেক সময় অনেকগুলো if-else ব্যবহার করতে হতে পারে।

  $t = date("H");   /*এই কোড এর মাধ্যমে খুঁজে পাবে দিনের ঘণ্টা*/
if ($t < "10")      /*প্রথম শর্ত দেওয়া হল*/ {
 echo "Have a good morning!";/*শর্ত মিললে এটি প্রকাশ করবে।*/
 } elseif ($t < "20")/*যদি না মিলে তাহলে দ্বিতীয় শর্ত প্রকাশ করা হোল*/ {
 echo "Have a good day!"/*দ্বিতীয় শর্ত মিললে এটা প্রকাশ করবে। */;
 } else {
 echo "Have a good night!/*যদি কোনটাই না মিলে তাহলে এটি প্রিন্ট করবে।*/";
 }
 ?>

নোটপ্যাড ওপেন করে এই example টুকু টাইপ করে ফাইল টি সেভ করুন if-else.php extension দিয়ে। আপনার ফাইল টি localhost > htdocs> test ফোল্ডার এর ভিতর রাখুন। ব্রাউজার ওপেন করে এড্রেস বারে লিখুন localhost/test/if-ese.php. Go বাটন এ ক্লিক করলে একটি ফলাফল আপনি খুজে পাবেন।

পিএইচপি মাইএসকিউএল ডাটাবেজ (PHP MySQL Database)

পিএইচপি মাইএসকিউল ডাটাবেজ এর পরিচিতি

Ali Hossain
Student of English Literature, Jahangirnagar University.

 

আজাকে আমরা পিএইচপি মাইএসকিউল ডাটাবেজ এর সম্পর্কে জানব। PHP (পিএইচপি) ব্যবহার করে আপনি ডাটাবেজের সাথে সংযোগ করতে পারবেন এবং তা নিপূনভাবে পরিচালনা করতে পারবেন। MySQL (মাইএসকিউল) হচ্ছে সবচেয়ে জনপ্রিয় ডাটাবেজ সিস্টেম যেটা পিএইচপি এর সাথে ব্যবহৃত হচ্ছে।

মাইএসকিউল কি ?

১. মাইএসকিউল একটা ডাটাবেজ সিস্টেম যেটা ওয়েব এ ব্যবহার করা হয় এবং সার্ভারে পরিচালনা করা হয়।

২. মাইএসকিউল ছোট এবং বড় উভয়ের জন্য আদর্শ ডাটাবেজ সিস্টেম।

৩. মাইএসকিউল খুব দ্রত, নির্ভরযোগ্য এবং সহজে ব্যবহার করা যায়।

৪. মাইএসকিউল মানসম্পন্ন এসকিউল ব্যবহার করে।

৫. মাইএসকিউল কয়েকটি প্লাটফর্মের উপর প্রনয়ন করা হয়েছে।

৬. মাইএসকিউল ওরাকল দারা উন্নতকরন, বিতরন এবং সমর্থিত এবং এটি বিনামূল্যে ডাউনলোড করে ব্যবহার করা যাবে।

৭. মাইএসকিউল এর সহ-প্রতিষ্ঠাতা Monty Widenius (মন্টি উইডেনিয়াস) এর মেয়ের নামে নামকরন করা হয়।

মাইএসকিউল ডাটাবেজের ডাটা টেবিলে জমা রাখা হয়। মাইএসকিউলে একটি টেবিল হলো সংশ্লিষ্ট তথ্যের ভান্ডার যেটি কলাম ও সারির সমন্নয়ে গঠিত। ডাটাবেজ নিরপেক্ষভাবে তথ্য সংরক্ষনের জন্য দরকারী। একটি কোম্পানির নিম্মলিখিত টেবিলের সমন্নয়ে ডাটাবেজ থাকতে পারে :

১. কর্মচারী

২. পন্য

৩. গ্রাহক

৪. আদেশ

পিএইচপি + মাইএসকিউল ডাটাবেজ সিস্টেম

মাইএসকিউএল এর সঙ্গে মিলিত পিএইচপি হলো ক্রস প্ল্যাটফর্ম (যা আপনি উইন্ডোজে উন্নত করে একটি ইউনিক্স প্ল্যাটফর্মের উপর ব্যবহার করতে পারেন)।

ডাটাবেজ অনুসন্ধান

অনুসন্ধান হলো একটি প্রশ্ন বা অনুরোধ। আমরা নির্দিষ্ট তথ্যের জন্য ডাটাবেজ অনুসন্ধান করতে পারি এবং রেকর্ডসেট ফিরে পেতে পারি।

নিচের অনুসন্ধানটি দেখুন (মানসম্পন্ন এসকিউল ব্যবহারে তৈরি):


SELECT LastName FROM Employees

উপরের অনুসন্ধানটি “Employees” টেবিলের “LastName” কলামের সকল ডাটাকে নির্বাচন করবে। আরো শিখতে এসকিউএল এর সবার নিচের লিঙ্কে ভ্রমন করুন।

ডাউনলোড মাইএসকিউল ডাটাবেজ

আপনার যদি পিএইচপি সার্ভার যুক্ত মাইএসকিউল ডাটাবেজ না থাকে, তাহলে এখান থেকে বিনামূল্যে ডাউনলোড করুন : http://www.mysql.com

মাইএসকিউল সম্পর্কে তত্থ্য

মাইএসকিউল (ফেসবুক, টুইটার এবং উইকিপিডিয়ার মত) তথ্য এবং শেষ ব্যবহারকারীদের বিপুল ভলিউমের ওয়েব সাইটের জন্য একটি de-facto মানসম্পন্ন ডাটাবেজ সিস্টেম। মাইএসকিউএল সম্পর্কে আরেকটি বড় ব্যাপার হল এটার সংখ্যা কমিয়ে আনা যায় যা এমবেডেড ডাটাবেসের অ্যাপ্লিকেশন সমর্থন করে। মাইএসকিউল ব্যবহার করে কোম্পানির ওভারভিউ দিতে দেখুন : http://www.mysql.com/customers/

পিএইচপি ৫ স্ট্রিংস (PHP 5 Strings)

আক্তারুজ্জামান
Department of CSE,University of Chittagong

 

যে কোন প্রুগ্রামিং ল্যাঙ্গুয়েজে স্ট্রিং এর উপর পরিষ্কার ধারনা থাকাটা খুবয় জরুরি। একটা স্ট্রিং তৈরি হয় এক বা একাধিক ক্যারেক্টার মিলে । সোজা কথায় স্ট্রিং হচ্ছে ক্যারেক্টারের সমষ্টি ।

যেমন “Hello World” হচ্ছে একটি স্ট্রিং।

পিএইচপি স্ট্রিং ফাংশন

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

স্ট্রিং এর দৈর্ঘ্য (number of characters) বের করা

strlen() ফাংশনের মাধ্যমে স্ট্রিং এর দৈর্ঘ্য বের করতে হয়, নিচে উদাহরন দেওয়া হল।
উদাহরণঃ


< ?php
 $text = “Hello World!”
 echo strlen($text); // outputs 12
 ?>

 

এই কোডটার আউটপুট হবে 12

স্ট্রিং এর ওয়ার্ড এর সংখ্যা বের করা

স্ট্রিং এর ওয়ার্ড এর সংখ্যা বের করার জন্য str_word_count() ফাংশনটা ব্যাবহার করা হয়
উদাহরণঃ


< ?php
 $text = “Hello World!”
 echo str_word_count($text);// outputs 2
 ?>

এই কোডটার আউটপুট হবে 2

স্ট্রিং রিভার্স করা

strrev()ফাংশনের মাধ্যমে একটি স্ট্রিং কে রিভার্স করা যায়।
উদাহরণঃ


< ?php
 echo strrev("Hello world!"); // outputs !dlrow olleH
 ?>

 

আউটপুট হবে !dlrow olleH।

স্ট্রিং এ নির্দিষ্ট একটা টেক্সট কোজে বের করা

strpos()ফাংশন এর মাধ্যমে এই কাজটি করা হয়।
উদাহরণঃ


< ?php
 echo strpos("Hello world!", "world"); // outputs 6
 ?>

 

আউটপুট হবে 6 যেহেতু "Hello world!" এ “world” এর পজিশন 6।

স্ট্রিং এ টেক্সট রিপ্লেস করাঃ
এই কাজটি করতে হয় str_replace() ফাংশনের মাধ্যমে।
উদাহরণঃ


< ?php
 echo str_replace("world", "Dolly", "Hello world!"); // outputs Hello Dolly!
 ?>

 

এই কোডটির আউটপুট হবে
Hello Dolly!

পিএইচপি ৫ ডাটা টাইপ (PHP 5 Data Types)

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

Department of CSE, University of Chittagong
ভেরিয়েবল বিভন্ন রকমের ডাটা স্টোর করতে পারে, এবং বিভন্ন ডাটা টাইপ বিভন্ন রকম কাজ করে। পিএইচপি নিচে উল্লেখিত ডাটা টাইপ গুলো সাপোর্ট করে।

স্ট্রিং (String):

স্ট্রিং তৈরি হয় এক বা একাধিক ক্যারেক্টার মিলে । সোজা কথায় স্ট্রিং হচ্ছে ক্যারেক্টারের সমষ্টি । যেমনঃ “Hello World” হচ্ছে একটি স্ট্রিং।
ডাবল কিংবা সিঙ্গল কোট ব্যবহার করে স্ট্রিং (string) ভেরিয়েবল তৈরি করতে হয়।
উদাহরণঃ


 <?php 
 $x = "Hello world!";
 $y = 'Hello world!';
 
 echo $x;
 echo "<br>"; 
 echo $y;
 ?>

এইখানে $x এবং y হল দুটি string টাইপ ভেরিয়েবল

 

ইন্টিজার (integer)

ইন্টিজার মানে হল পূর্ণ সংখ্যা । এইটি -2,147, 483, 648 এবং +2, 147, 483, 647 এর মধ্যে যে কোন একটি সংখ্যা হতে পারে। নিচের উদাহরণে $x হল একটি ইন্টিজার (integer) টাইপের ভেরিয়েবল।


<?php 
 $x = 5985;
 var_dump($x);
 ?>

var_dump() ফাংশনটি ডাটা টাইপ এবং মান রিটার্ন করে।

 

ফ্লোটিং পয়েন্ট (Float)

ফ্লোট হল একটি decimal point নাম্বার। নিচের উদাহরণে $x হল একটি ফ্লোট টাইপের ভেরিয়েবল।


<?php 
 $x = 10.365;
 var_dump($x);
 ?>

 

বুলিয়ান (boolean)

কোন কিছু সত্য না মিথ্যা তা প্রকাশ করার জন্য বুলিয়ান ডাটা টাইপটি ব্যাবহার করা হয়।বুলিয়ান এর দুইটি মান হতে পারে – true অথবা false
উদাহরনঃ


$x = true
$y = false

 

এ্যারে (Array)

একটি সিঙ্গেল ভেরিয়েবলে একের অধিক মান স্টোর করার জন্য এ্যারে ব্যাবহার করা হয়। নিচের উদাহরণে $cars হল একটি এ্যারে।


<?php 
 $cars = array("Volvo","BMW","Toyota");
 var_dump($cars);
 ?>

এইখানে $cars এ্যারেতে তিনটি স্ট্রিং টাইপের মান রয়েছেঃ
Volvo, BMW এবং Toyota।

 

অবজেক্ট টাইপ (Object)

কোন নির্দিষ্ট একটি ক্লাসের instance কে অবজেক্ট বলা হয়। অবজেক্ট হচ্ছে ভেরিয়েবল এবং ফাংশন এর সমস্টি। অবজেক্ট ইন্সট্যান্স তৈরি করতে হয় new কিওয়ার্ডটি ব্যবহার করে।
উদাহরনঃ


<?php
 class Car {
     function Car() {
         $this->model = "VW";
     }
 }
 
 // create an object
 $herbie = new Car();
 
 // show object properties
 echo $herbie->model;
 ?>

 

নাল টাইপ (Null)

নাল একটি বিশেষ ধরণের ডাটা টাইপ যেটার মান হতে পারে শুধুমাত্র একটি- এবং এইটি হল null । একটি ভেরিয়েবলে কোন মান এসাইন করা না হলে ওইটাকে নাল ডাটা টাইপের ভেরিয়েবল বলা হয়।
উদাহরনঃ


<?php
$x = "Hello world!";
$x = null;
var_dump($x);
?>


এইখানে $x হল একটি নাল টাইপের ভেরিয়েবল।

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

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


<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


পিএইচপি – মাইএসকিউএল এ একাধিক রেকর্ড প্রবেশ করানো (PHP – Insert Multiple Records Into MySQL in Bangla)

মোঃ আরিফুল ইসলাম

MySQLi এবং PDO ব্যবহার করে মাইএসকিউএল এর মধ্যে একাধিক ডাটা রেকর্ডস প্রবেশ করান

একাধিক SQL statements কে executed (উদ্দিপ্ত) করার জন্য mysqli_multi_query() function (ফাংশন) ব্যাবহার করতে হবে।

নিম্নলিখিত উদাহরণগুলি "MyGuests" টেবিল এ তিনটি নতুন রেকর্ড যোগ করাবে:

MySQLi Object-oriented এর উদাহরণ-


<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('John', 'Doe', 'john@example.com');";
$sql .= "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('Mary', 'Moe', 'mary@example.com');";
$sql .= "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('Julie', 'Dooley', 'julie@example.com')";

if ($conn->multi_query($sql) === TRUE) {
    echo "New records created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();
?>

 

MySQLi Procedural এর উদাহরণ-


<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('John', 'Doe', 'john@example.com');";
$sql .= "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('Mary', 'Moe', 'mary@example.com');";
$sql .= "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('Julie', 'Dooley', 'julie@example.com')";

if (mysqli_multi_query($conn, $sql)) {
    echo "New records created successfully";
} else {
    echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}

mysqli_close($conn);
?>

 

PDO এর উপায়টা সামান্য একটু ভিন্ন-

PDO এর উদাহরণ-


<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // begin the transaction
    $conn->beginTransaction();
    // our SQL statememtns
    $conn->exec("INSERT INTO MyGuests (firstname, lastname, email)
    VALUES ('John', 'Doe', 'john@example.com')");
    $conn->exec("INSERT INTO MyGuests (firstname, lastname, email)
    VALUES ('Mary', 'Moe', 'mary@example.com')");
    $conn->exec("INSERT INTO MyGuests (firstname, lastname, email)
    VALUES ('Julie', 'Dooley', 'julie@example.com')");

    // commit the transaction
    $conn->commit();
    echo "New records created successfully";
    }
catch(PDOException $e)
    {
    // roll back the transaction if something failed
    $conn->rollback();
    echo "Error: " . $e->getMessage();
    }

$conn = null;
?>