<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>পিএইচপি টিউটোরিয়াল Archives &bull; Tuts by Mayeenul Islam</title>
	<atom:link href="https://mayeenulislam.github.io/tuts/category/web-development-tuts/php-tuts/feed/" rel="self" type="application/rss+xml" />
	<link>https://mayeenulislam.github.io/tuts/category/web-development-tuts/php-tuts/</link>
	<description>Technology Tutorials by Mayeenul Islam</description>
	<lastBuildDate>Sat, 21 Jan 2023 13:02:58 +0000</lastBuildDate>
	<language>bn-BD</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.1.1</generator>

<image>
	<url>https://mayeenulislam.github.io/tuts/wp-content/uploads/2015/08/cropped-tuts-nano-32x32.png</url>
	<title>পিএইচপি টিউটোরিয়াল Archives &bull; Tuts by Mayeenul Islam</title>
	<link>https://mayeenulislam.github.io/tuts/category/web-development-tuts/php-tuts/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>কোড স্নিপেট: পাবলিক আইপি ঠিকানা ফিল্টার করে কন্টেন্ট দেখান</title>
		<link>https://mayeenulislam.github.io/tuts/filtering-public-ip-address/</link>
					<comments>https://mayeenulislam.github.io/tuts/filtering-public-ip-address/#respond</comments>
		
		<dc:creator><![CDATA[মঈনুল ইসলাম]]></dc:creator>
		<pubDate>Fri, 25 Mar 2016 17:27:10 +0000</pubDate>
				<category><![CDATA[ওয়ার্ডপ্রেস টিউটোরিয়াল]]></category>
		<category><![CDATA[ওয়েব ডেভলপমেন্ট টিউটোরিয়াল]]></category>
		<category><![CDATA[পিএইচপি টিউটোরিয়াল]]></category>
		<guid isPermaLink="false">https://mayeenulislam.github.io/tuts/?p=1016</guid>

					<description><![CDATA[<p> [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://mayeenulislam.github.io/tuts/filtering-public-ip-address/">কোড স্নিপেট: পাবলিক আইপি ঠিকানা ফিল্টার করে কন্টেন্ট দেখান</a> appeared first on <a rel="nofollow" href="https://mayeenulislam.github.io/tuts/">Tuts by Mayeenul Islam</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>কেউ একজন গুগল অ্যাডসেন্স অ্যাকাউন্ট অনুমোদিত হবার পর, নিজেদের সাইটে সক্রিয় করেছেন। কিন্তু তিনদিনের মাথায় &#8216;ইনভ্যালিড ক্লিক&#8217;-এর কারণে তাঁর অ্যাকাউন্টটা আজীবনের জন্য রহিত (ব্যান) হয়ে যায়। কারণ হিসেবে তাঁরা যা <em>আন্দাজ</em> করছেন যে, <em>হয়তো</em> নিজেদের একই পাবলিক আইপি ঠিকানা থেকে একাধিক ক্লিকই হয়তো তাঁদের অ্যাকাউন্টটা ব্যান করে দিয়েছে। এটা হতে পারে, যখন একই ইন্টারনেট সংযোগ ব্যবহার করে একাধিক কম্পিউটার দিয়ে একাধিক ব্যবহারকারী ইন্টারনেট ব্যবহার করেন। তখন গুগল ঐ ব্যক্তিদের ক্লিককে সেই ব্যক্তিরই ক্লিক বলে ধরে নেবে, যিনি অ্যাডসেন্স অ্যাকাউন্টটা তৈরি করেছেন &#8211; সোজা বাংলায় তিনি [নিজে না করলেও ঘটনাটা এরকম দাঁড়াবে] নিজেই নিজের বিজ্ঞাপনে ক্লিক করেছেন।</p>



<p>আচ্ছা, এটা একটা ঘটনা হতে পারে, কিন্তু এরকম অনেক ঘটনাই দেখা দিতে&nbsp;পারে, যখন আপনি কোনো কোনো কন্টেন্ট নির্দিষ্ট কিছু আইপি ঠিকানার ব্যবহারকারীদের দেখাতে চান না। এই কোড স্নিপেটটি (<em>তাবিজ!</em> 🙂 ) আপনাকে রক্ষা করবে ইনশাল্লাহ:</p>



<span id="more-1016"></span>



<figure class="wp-block-embed is-type-rich is-provider-embed-handler wp-block-embed-embed-handler"><div class="wp-block-embed__wrapper">
View the code on <a href="https://gist.github.com/mayeenulislam/6310d09474196feb1749">Gist</a>.
</div></figure>



<p>পিএইচপি দিয়ে আইপি ট্র্যাক করার ফাংশনের বহু সংস্করণ আছে, আমি আসলে এই ফাংশনটাকে অধিকাংশ সময় কার্যকরী পেয়েছি (মাঝে মাঝে অবশ্য ব্যর্থও হয়)। আর, এরই সাথে আরেকটা ফাংশন বানিয়ে নিয়েছি&nbsp;যার ভিতরে অ্যারে আকারে আমরা যেসব আইপি বাধা দিতে চাচ্ছি সেগুলো উল্লেখ করে দিয়েছি (একটি থাকলে একটি, একাধিক হলে একাধিক)। ফাংশনটি&nbsp;বাধা দেয়া (ব্লক করা) এক/একাধিক আইপি ঠিকানার মধ্যে ভিযিটকারীর আইপি ঠিকানা মিলিয়ে দেখবে, যদি মিলে যায়, তাহলে&nbsp;<code>false</code>&nbsp;রিটার্ন করবে, আর না মিললে উল্টোটা।</p>



<p>আর ফাংশনটা এভাবে ব্যবহার করা যাবে:</p>



<figure class="wp-block-embed is-type-rich is-provider-embed-handler wp-block-embed-embed-handler"><div class="wp-block-embed__wrapper">
View the code on <a href="https://gist.github.com/mayeenulislam/6310d09474196feb1749">Gist</a>.
</div></figure>



<h3>ওয়ার্ডপ্রেসে ব্যবহারবিধি</h3>



<ul>
<li>থিমের জন্য: আপনি ফাংশন দুটোকে থিমের&nbsp;<code>functions.php</code>-তে বসিয়ে নিয়ে থিমের সর্বত্র ব্যবহার করতে পারবেন।</li>



<li>প্লাগইনের জন্য: আপনি ফাংশন দুটোকে প্লাগইনের যেকোনো ফাইলে&nbsp;বসিয়ে নিয়ে প্লাগইন এমনকি থিমের&nbsp;সর্বত্র ব্যবহার করতে পারবেন।</li>
</ul>



<p>&#8211; <strong>মঈনুল ইসলাম</strong><br><img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f517.png" alt="🔗" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <a rel="noreferrer noopener" href="https://mayeenulislam.github.io/" target="_blank">mayeenulislam.github.io</a></p>
<p>The post <a rel="nofollow" href="https://mayeenulislam.github.io/tuts/filtering-public-ip-address/">কোড স্নিপেট: পাবলিক আইপি ঠিকানা ফিল্টার করে কন্টেন্ট দেখান</a> appeared first on <a rel="nofollow" href="https://mayeenulislam.github.io/tuts/">Tuts by Mayeenul Islam</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mayeenulislam.github.io/tuts/filtering-public-ip-address/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>PHP-MySQL দিয়ে CSV ফাইল থেকে বাংলা তথ্য আপলোড</title>
		<link>https://mayeenulislam.github.io/tuts/csv-bengali-import-php-mysql/</link>
					<comments>https://mayeenulislam.github.io/tuts/csv-bengali-import-php-mysql/#respond</comments>
		
		<dc:creator><![CDATA[মঈনুল ইসলাম]]></dc:creator>
		<pubDate>Thu, 27 Aug 2015 12:48:40 +0000</pubDate>
				<category><![CDATA[ওয়ার্ডপ্রেস টিউটোরিয়াল]]></category>
		<category><![CDATA[জ্ঞান-স্তরভিত্তিক টিউটোরিয়াল]]></category>
		<category><![CDATA[ন্যানো বেসিX]]></category>
		<category><![CDATA[পিএইচপি টিউটোরিয়াল]]></category>
		<category><![CDATA[মাধ্যমিক স্তরের টিউটোরিয়াল]]></category>
		<category><![CDATA[CSV]]></category>
		<category><![CDATA[Unicode CSV]]></category>
		<category><![CDATA[অ্যাক্সেস থেকে সিএসভি]]></category>
		<category><![CDATA[বাংলায় সিএসভি]]></category>
		<category><![CDATA[সিএসভি আপলোড]]></category>
		<guid isPermaLink="false">https://mayeenulislam.github.io/tuts/?p=666</guid>

					<description><![CDATA[<p> [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://mayeenulislam.github.io/tuts/csv-bengali-import-php-mysql/">PHP-MySQL দিয়ে CSV ফাইল থেকে বাংলা তথ্য আপলোড</a> appeared first on <a rel="nofollow" href="https://mayeenulislam.github.io/tuts/">Tuts by Mayeenul Islam</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>অনেক তথ্য একসাথে, ডাটাবেযে ঢুকানো বা আপলোড করার (bulk upload) কাজটি অনেক ব্লগে, টিউটোরিয়ালেই আলোচনা করা হয়েছে। আমরা আসলে সেগুলো পড়েই কাজটা খুব সহজে করে ফেলতে পারি। কিন্তু সমস্যাটা সৃষ্টি হবে, যদি আপনি বাংলায় লেখা তথ্যগুলো ডাটাবেযে ঢুকাতে যান&#8230; তাছাড়া পুরো প্রক্রিয়াটা কিভাবে কী হচ্ছে, তাও জানা থাকা দরকার। শেঁকড়টা পোক্ত থাকলে ডালপালায় দৌঁড়ানো খুব সহজ। আমরা তাই পুরো প্রক্রিয়াটি এখানে বিস্তারিত আলোচনা করছি:</p>



<span id="more-666"></span>



<h3>CSV ফাইল কী?</h3>



<p>Comma Separated Values কথাটিকে সংক্ষেপে CSV বলে। এধরণের ফাইলগুলোর এক্সটেনশন হলো <code>.csv</code> [ডট সিএসভি]। ব্যাপারটা খুব সহজ:</p>



<pre class="wp-block-preformatted">1,Someone Extraordinary,Developer
2,Someone New,Debugger
3,John Kauwa Kala,QA Manager</pre>



<p>এই যে ফাইলের তথ্যগুলো উপরে দেখা যাচ্ছে, এখানে তথ্য থেকে তথ্যকে আলাদা করা হয়েছে কমা (,) দিয়ে আর একেকটা আলাদা আলাদা তথ্যগোষ্ঠিকে আলাদা করা হয়েছে এন্টার চেপে লাইন ব্রেক করে। এখন এই তথ্যগুলো একটা ফাইলে রেখে তার এক্সটেনশন <code>.csv</code> করে নিলেই তা হয়ে যাবে আমাদের কাঙ্ক্ষিত CSV ফাইল।</p>



<h3>কখন লাগবে সিএসভি ফাইল?</h3>



<p>ধরা যাক, আপনার ডাটাবেযের টেবিলে তিনটা ফিল্ড আছে: id, name, এবং designation। এই টেবিলে ৫০০০ [পাঁচ হাজার] জন আলাদা আলাদা ব্যক্তির তথ্য আছে। এবারে কোনো কারণে আরেকটা ফিল্ড বাড়ানো লাগলো: age। তখন এই ৫০০০ জনের তথ্য আলাদা আলাদা করে এডিট করে করে তাদের প্রত্যেকের বয়স ডাটাবেযে ঢুকিয়ে নিতে হবে। চিন্তা করুন তো একবার? ৫০০০টা তথ্য খুলে, এডিট করে, সংরক্ষণ করা&#8230; কতটা বিরক্তিজনক কাজ হবে! &#8230;কিংবা এমনও হতে পারে, একটা কোম্পানী ২০ বছর ধরে খাতায়-পত্রে তাদের কোম্পানীর কর্মচারীদের তথ্য লিখে রাখতো। এখন তারা আপনাকে দিয়ে একটা সফ্‌টওয়্যার বানিয়েছে। তো তারা চায় নতুন যারা আসবে, তাদের তথ্য তো সফ্‌টওয়্যারে নতুন করে লিখে নিবেনই, কিন্তু ২০ বছরের পুরোন সব কর্মচারীদের তথ্যও যেন সফ্‌টওয়্যারে ঢোকানো থাকে। এখানেই বিপুল পরিমাণ তথ্য একবারে ঢুকিয়ে দেয়ার জন্য ব্যবহার করা হয় CSV।</p>



<h3>CSV কিভাবে তৈরি করতে হয়?</h3>



<p>এরকম ক্ষেত্রে আমরা সাধারণত মাইক্রোসফ্‌ট এক্সেল-এর বহুল ব্যবহার করে থাকি, তবে অন্য যেকোনো স্প্রেডশিট সফ্‌টওয়্যার ব্যবহার করা যেতে পারে। আমরা এখানে এক্সেল এবং Open Office-এর OpenOffice Calc ব্যবহার করে কাজটি করা দেখাবো ইনশাল্লাহ। স্প্রেডশিটে মূলত দরকারি তথ্যগুলো বিভিন্ন রো&#8217; এবং কলামে লিখে ফেলা হয়:</p>



<pre class="wp-block-preformatted">+----+-----------------------+----------------+-----+
| id | Name                  | Designation    | Age |
+----+-----------------------+----------------+-----+
| 1  | Someone Extraordinary | Developer      | 26  |
| 2  | Someone New           | Debugger       | 21  |
| 3  | John Kauwa Kala       | QA Manager     | 32  |
+----+-----------------------+----------------+-----+</pre>



<p>যেমন আমরা মান্ধাত্যা আমলের সব তথ্য নিতে হলে এভাবে নিলাম। কিন্তু ধরা যাক, আগের সব তথ্য আছে, এখন শুধু &#8216;বয়স&#8217;-এর তথ্যটা নতুন যোগ হবে, সেক্ষেত্রে id আর age কলামই শুধু লিখলাম। আইডি এজন্য লিখলাম, যাতে একটা আনকোরা (unique) তথ্য যেন থাকে, যা দিয়ে আমরা একটা তথ্য থেকে আরেকটা তথ্যকে আলাদা করতে পারি, এবং বয়সের তথ্যটা ঠিক সেই ব্যক্তির ক্ষেত্রেই বসে, যার বয়স যেটা। সেক্ষেত্রে তাদের আইডি ধরে ধরে বসানোটাই সবচেয়ে সহজ।</p>



<p class="has-background" style="background-color:#c2ecdb"><img src="https://s.w.org/images/core/emoji/14.0.0/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>মনে রাখতে হবে,</strong> স্প্রেডশিটে তথ্য ঢোকানোর সময় যদি কোনো কলামের তথ্যে কমা (,) থেকে থাকে, তাহলে পুরো কলামের তথ্যটাকে অবশ্যই ডাবল কো’ট (“) দিয়ে আলাদা করে নিতে হবে। এই তথ্যগুলোকে আলাদা করার পদ্ধতি নিচে ফাংশনের ডেলিমিটার অংশে আলোচিত হলো।</p>



<p>এভাবে যত লক্ষ-কোটি তথ্য ইচ্ছা, আপনি প্রস্তুত করে নিতে পারেন স্প্রেডশিটে। এরপর <code>.csv</code> ফাইলে একে সংরক্ষণ করে নিতে হবে:</p>



<h4>মাইক্রোসফ্‌ট এক্সেল (২০০৭+) হলে:</h4>



<ul>
<li>ধরে নিচ্ছি আপনি স্প্রেডশিটে এভাবে তথ্যগুলো বসিয়ে নিয়েছেন, এবং একটা <code>.xlsx</code> কিংবা <code>.xls</code> ফাইল আছে আপনার। এবারে সেই ফাইল খুলে Office Button &gt; Save As &gt; Other Formats</li>



<li>ফাইলের একটা নাম দিয়ে, Save as type: ড্রপডাউন মেনু থেকে CSV (Comma delimited) (*.csv) বাছাই করুন</li>



<li>Save বোতাম চাপুন</li>



<li>ওয়ার্নিং আসতে পারে: প্রথম ওয়ার্নিং বলছে, <em>শুধু কিন্তু এই শিটটা সংরক্ষণ হচ্ছে (বাদবাকি শিট-এর খবর জানি না)</em> &#8211; আমরা Ok চাপবো</li>



<li>দ্বিতীয় ওয়ার্নিং বলছে, <em>CSV-তে এমন কিছু ফিচার আছে, যেগুলো কিন্তু সাপোর্ট করবে না</em> &#8211; আমরা সেটা মেনে নিবো &#8211; Yes চাপবো</li>



<li>এক্সেল বন্ধ করে দিই, এবং কোনো ডায়লগ বক্স এলে বলে দিই &#8211; No &#8211; আমরা আর সংরক্ষণ করতে চাই না (কারণ আমাদের কাজ তো হয়ে গেছে)</li>
</ul>



<h4><strong>ওপেনঅফিস ক্যাল্‌ক (4+) হলে:</strong></h4>



<ul>
<li>ধরে নিচ্ছি আপনি ক্যাল্‌ক-এর স্প্রেডশিটে তথ্যগুলো বসিয়ে নিয়েছেন, এবং একটা <code>.ods</code> ফাইল আছে আপনার। এবারে সেই ফাইল খুলে File &gt; Save as (<kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>S</kbd>) চাপুন</li>



<li>ফাইলের একটা নাম দিয়ে, Save as type: ড্রপডাউন মেনু থেকে Text CSV (.csv) (*.csv) বাছাই করুন</li>



<li>Save বোতাম চাপুন</li>



<li>ওয়ার্নিং আসতে পারে: <em>আপনি কি আসলেই ODS ফর্মেটের বাইরে সেভ করতে যাচ্ছেন</em> &#8211; আমরা Keep Current Format বাছাই করবো</li>



<li>Export Text File নামের একটা ডায়লগ বক্স আসবে, এখানে: Character set: থেকে Unicode (UTF-8) বাছাই করে দিন। আর বাকিগুলো যেমন আছে থাকুক: আমরা কমা (,) দিয়ে আলাদা করছি, আর টেক্সট ডেলিমিটার ডাবল কো&#8217;ট রাখছি (&#8220;) &#8211; OK বোতাম চাপুন</li>



<li>ওয়ার্নিং আসতে পারে: <em>শুধু কিন্তু এই শিটটা সংরক্ষিত হচ্ছে</em> &#8211; আমরা বলবো &#8211; OK</li>
</ul>



<p>কাজ শেষ।</p>



<p>আমাদের <code>.csv</code> ফাইল তৈরি। এবারে ফাইলটা সরাসরি Open না করে মাউসের ডান বোতাম চেপে Notepad (অথবা যেকোনো টেক্সট এডিটর, যেমন: Notepad++, Sublime Text)-এ খুলি। তাহলেই দেখতে পাবো, আমাদের স্প্রেডশিটে দেয়া তথ্যগুলো কমা দিয়ে আলাদা আলাদা হয়ে সুন্দর করে বসে গেছে।</p>



<h3>কিভাবে PHP দিয়ে CSV ফাইল পড়বো?</h3>



<p>এবারে খুব সহজেই আমরা PHP ব্যবহার করে তথ্যগুলো পড়তে পারি। নিচের কোড স্নিপেটটি একটা ফাইলে রেখে ফাইলটা সার্ভার থেকে খোলা যাক&#8230; ইনলাইন মন্তব্যগুলো দেখুন, বিস্তারিত পরে বলছি:</p>



<figure class="wp-block-embed is-type-rich is-provider-embed-handler wp-block-embed-embed-handler"><div class="wp-block-embed__wrapper">
View the code on <a href="https://gist.github.com/mayeenulislam/03864e63b073fc81694b">Gist</a>.
</div></figure>



<p>এবারে এই পাতাটা খুললে আমরা খুব সাধারণ একটা এইচটিএমএল ফর্ম দেখতে পাবো:</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://mayeenulislam.github.io/tuts/wp-content/uploads/2015/08/simple-form-to-upload-csv-file.png"><img decoding="async" width="431" height="92" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2015/08/simple-form-to-upload-csv-file.png" alt="সিএসভি আপলোড করার জন্য খুবই সাধারণ একটা HTML ফর্ম" class="wp-image-669" srcset="https://mayeenulislam.github.io/tuts/wp-content/uploads/2015/08/simple-form-to-upload-csv-file.png 431w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2015/08/simple-form-to-upload-csv-file-300x64.png 300w" sizes="(max-width: 431px) 100vw, 431px" /></a></figure></div>


<p>এখানে আমাদের তৈরি করা <code>.csv</code> ফাইলটা আপলোড করে Submit বোতাম চাইলেই সিএসভি&#8217;র চারটা কলামের তথ্যকে আমরা খুব সহজে দেখতে পাবো পর্দায়।</p>



<p>উপরের কোডটা এবার বোঝা যাক: একেবারে নিচে আমরা খুবই সাধারণ একটা এইচটিএমএল ফর্ম ব্যবহার করেছি, যা দিয়ে আমরা ফাইল আপলোড করতে পারি। ফর্মে <code>post</code> মেথড ব্যবহার করেছি, এবং এনক্রিপশন টাইপ রেখেছি <code>multipart/form-data</code>। এই ফর্মটা সাবমিট হলে উপরের পিএইচপি ব্লকে যায়। সেখানে চেক করে আসলেই কি কোনো ফাইল আপলোড হয়েছে কিনা, ফাইলের আকার (<code>size &gt; 0</code>) দেখে। তারপর আমরা ফাইলটাকে <code>$file</code> ভ্যারিয়েবলে রেখেছি। <code>$handle</code>-এ এসে আমরা ফাইলটাকে খুলে পড়েছি। এরপরে <code>while</code> loop-এর ভিতরে আমরা পিএইচপি&#8217;রই দেয়া <a href="http://php.net/manual/en/function.fgetcsv.php" target="_blank" rel="nofollow noopener"><code>fgetcsv()</code>^</a> ফাংশনটা ব্যবহার করেছি সিএসভি ফাইলটা নিজেদের মতো করে পড়ার জন্য। বাকিটা কেবলই ইতিহাস।</p>



<p>এপর্যায়ে fgetcsv() ফাংশনটাকে চেনা যাক:</p>



<pre class="wp-block-preformatted">fgetcsv( file, length, separator, enclosure);</pre>



<p>এখানে:</p>



<ul>
<li><code>file</code>&nbsp;হচ্ছে প্রথম প্যারামিটার, যা দিতেই হয়, এখানে আমরা আমাদের সিএসভি ফাইলটাকে দিবো</li>



<li><code>length</code>&nbsp;হচ্ছে আমাদের প্রতিটা লাইনে কতগুলো ক্যারেক্টার থাকবে তার পরিমাণ (যদি নিশ্চিত না হোন, তাহলে উল্লেখ করা থেকে বিরত থাকুন, কারণ ভুল হলে তথ্য ভেঙে যেতে পারে)</li>



<li><code>separator</code>&nbsp;হচ্ছে সেই ক্যারেক্টার, যা দিয়ে আপনার কলামগুলো আলাদা করা থাকবে, আমরা কমা দিয়ে কাজটি করছি। এক্ষেত্রে ফাংশনে তাই ডিফল্ট করা কমা (,), আমরা যদি অন্য কিছু দিয়ে করতাম, তাহলে এই প্যারামিটারে তা বলে দিতাম</li>



<li><code>delimiter</code>&nbsp;হচ্ছে স্ট্রিং-কে চিনিয়ে দেয়ার পদ্ধতি। CSV-তে কমা পেলেই সে আলাদা কলাম ধরে নিবে। কিন্তু আপনার তথ্যের মধ্যেই যদি কোনো কমা থেকে থাকে (যেমন: “He, you and I went there”), তখন কী হবে? তখন ঐ লেখাটিকে ডাবল কো’ট (“) দিয়ে আটকে দিতে হবে। আর সেটা এই প্যারামিটারে বলে দিলে একেকটা ডাবল কোটের ভিতরকার তথ্যে কমা থাকলেও সে সেটাকে কলাম ধরে নিবে না। এর ডিফল্ট হিসেবে ডাবল কো’ট (“) নির্ধারণ করে দেয়া আছে</li>
</ul>



<p>আমরা তথ্যগুলো পিএইচপি দিয়ে পড়ে ফেলার পর এতটুকু নিশ্চয়ই বুঝে গেছি যে, আমাদের স্প্রেডশিটে লেখা তথ্যগুলোর উপর দখল নিতে পেরেছি আমরা। তাহলে এপর্যায়ে আমরা এই তথ্য নিয়ে যা ইচ্ছা তা করতে পারি। আমরা নিশ্চয়ই এও বুঝে গেছি যে, কমা (,) দিয়ে আলাদা করা প্রতিটা কলামকে <code>fgetcsv()</code> একটা পিএইচপি অ্যারেতে নিয়েছে, তাই প্রথম কলামটা পেতে আমরা অ্যারের যিরো ইনডেক্স (<code>$data[0]</code>) ধরেছি। এভাবে প্রতিটা লাইনকে <code>fgetcsv()</code> আমাদের জন্য আলাদা করে বের করে নিয়ে এসেছে। যারা আগে থেকে কাজ করছেন, তাদেরকে আর বুঝিয়ে বলা লাগবে না, কিভাবে এই তথ্যকে ডাটাবেযে নিয়ে যেতে হবে। তবু আমরা সেবিষয়েও আলোকপাত করছি:</p>



<h3>কিভাবে MySQL ব্যবহার করে CSV ফাইলের তথ্য ডাটাবেযে নিবো?</h3>



<p>আমার উপরে কোড স্নিপেটটির সাথে MySQL কোড যোগ করে এখানে দেখিয়েছি, কিভাবে সিএসভি ফাইল থেকে আমরা যা পড়তে পারছি, তা খুব সহজে ডাটাবেযে নিয়ে যেতে পারি:</p>



<figure class="wp-block-embed is-type-rich is-provider-embed-handler wp-block-embed-embed-handler"><div class="wp-block-embed__wrapper">
View the code on <a href="https://gist.github.com/mayeenulislam/03864e63b073fc81694b">Gist</a>.
</div></figure>



<p class="has-background" style="background-color:#c2ecdb"><img src="https://s.w.org/images/core/emoji/14.0.0/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>সচেতন থাকুন,</strong> অপরিশোধিত তথ্য ডাটাবেযে নেয়া খুবই বিপজ্জনক। এজন্য অবশ্যই তথ্যকে যথাযথ sanitization, validation আগে থেকে আপনাকে করে নিতে হবে – যা আমরা এখানে দেখাইনি।</p>



<p>আমরা ধরে নিয়েছি আপনি একটা MySQL ডাটাবেয তৈরি করে নিয়েছেন, যার নাম <code>csv_db</code> এবং তাতে একটা টেবিল আছে, যার নাম <code>csv_table</code>, যেখানে <code>id</code>, <code>name</code>, <code>designation</code>, <code>age</code> নামে চারটা কলাম তৈরি করাই আছে (এতগুলো বিষয় আমরা ইচ্ছে করেই দেখাচ্ছি না, টিউটোরিয়ালটাকে যথাসম্ভব ছোট রাখার জন্য)।</p>



<h4><code>$find_header &gt; 1</code> কেন?</h4>



<p>আপনারা আগের কোডের সাথে এখানে অতিরিক্ত একটা পিএইচপি কাউন্টার দেখতে পাচ্ছেন। আপনারা আগের কোডটি রান করালে দেখতে পাবেন, id, name, designation, age &#8211; স্প্রেডশিটের এই লাইনটাও আমাদের সিএসভি থেকে সে রিড করে ফেলেছে। এখন যখন আপনি বিপুল পরিমাণ ডাটা ডাটাবেযে ঢুকাতে যাবেন, তখন কিন্তু প্রথম ডাটা হিসেবে সে হেডারের এই তথ্যগুলোও নিয়ে নিবে। তাই আমরা প্রথম লুপটা অযথাই ঘুরিয়ে আনছি, আর যখন লুপটা একবার ঘুরে গেল, তার মানে প্রথম রো&#8217;-টা পার করে গেল, তখনই আমরা বলছি: <em>এবার তুমি ইনসার্ট করা শুরু করো</em>। তাই আমরা আমাদের কাউন্টার ১-এর বেশি হলে তখন থেকে শুরু করতে বলে দিচ্ছি।</p>



<p>ব্যস, আমরা আমাদের সিএসভি থেকে বিপুল পরিমাণ তথ্য নিয়ে ডাটাবেযে ঢুকিয়ে নিতে পেরেছি।</p>



<h3>CSV&#8217;র তথ্য যদি হয় বাংলায়?</h3>



<p>এটা একটা মহামসিবতের কথা!</p>



<p>আসলে, আমরা যখন প্রথম এই সমস্যার সম্মুখিন হয়েছিলাম, তখন আমরা মূলত বাংলা তথ্যকে ডাটাবেযে নিচ্ছিলাম। এবং মহামসিবতে পড়ে গিয়েছিলাম, কারণ ইউনিকোডে সিএসভি কনভার্শন রীতিমতো মহা ঝামেলার ছিল। কারণ উপরের পদ্ধতিমতে CSV-তে সংরক্ষণ করার পর ফাইলটা টেক্সট এডিটরে খুলে দেখা যায় সব বাংলা লেখা <code>??????</code> -এরকম প্রশ্নবোধক চিহ্ন হয়ে আছে।</p>



<p>তখন আমরা OpenOffice ব্যবহার করতাম না। কারণ ওপেনঅফিস-এর পদ্ধতিতে ৫ নম্বর ধাপে এনকোডিং যে Unicode (UTF-8)-এ হবে, তা বলে দেয়া যায়। আর তাতেই সমাধানটা হয়ে যায়। আমরা সমস্যায় পড়েছিলাম মাইক্রোসফ্‌টের Excell দিয়ে কাজটা করতে গিয়ে।</p>



<p>আমরা অনেক ঘাঁটাঘাঁটি করে তখন দুটো সমাধান পেয়েছিলাম, এখন আরেকটা বোনাস:</p>



<h4>এক্সেল দিয়ে Unicode CSV &#8211; সমাধান ১ (ঝামেলার):</h4>



<ul>
<li><a href="https://mayeenulislam.github.io/tuts/wp-content/uploads/2015/08/csv-tab-replacing-with-commas.png"><img decoding="async" class="alignright size-medium wp-image-672" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2015/08/csv-tab-replacing-with-commas-300x265.png" alt="csv-tab-replacing-with-commas" width="300" height="265" srcset="https://mayeenulislam.github.io/tuts/wp-content/uploads/2015/08/csv-tab-replacing-with-commas-300x265.png 300w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2015/08/csv-tab-replacing-with-commas.png 417w" sizes="(max-width: 300px) 100vw, 300px" /></a>প্রথম ধাপ আগের মতো</li>



<li>দ্বিতীয় ধাপে এসে Save as type: থেকে Unicode Text (*.txt) বাছাই করুন (বুঝতেই পারছেন, আমরা সরাসরি সিএসভি বানাচ্ছি না)</li>



<li>ওয়ার্নিংগুলো আগের মতোই ডীল করুন, এবং এক্সেল বন্ধ করে দিন (এক্সেলে আর কোনো কাজ নেই)</li>



<li>এবারে যে <code>.txt</code> ফাইলটা তৈরি হয়েছে, তা Notepad-এ খুলুন, দেখবেন সবগুলো লেখাই পড়া যাচ্ছে, আগের মতো প্রশ্নবোধক চিহ্ন হয়ে যায়নি। কিন্তু এটা সিএসভি না, কারণ কলামগুলো কমা দিয়ে আলাদা নয়, বরং ট্যাব দিয়ে আলাদা করা</li>



<li>এবারে নোটপ্যাডের Edit &gt; Replace (<kbd>Ctrl</kbd> + <kbd>H</kbd>) চেপে Find&amp;Replace ডায়লগ বক্সটা খুলে নিয়ে Find what:-এ ছবিতে দেখানো পদ্ধতিতে ট্যাব-স্পেসটুকু কপি করে বসিয়ে দিতে পারেন। এতে দৃশ্যত প্রথম ফিল্ডটা আসলে ফাঁকাই দেখা যাবে। এবারে Replace with:-এ একটা কমা (,) বসিয়ে দিন। &#8230;হ্যা, বুঝে ফেলেছেন, যেহেতু পুরো ডকুমেন্ট ট্যাব দিয়ে আলাদা করা, আমরা ট্যাবগুলোকে কমা বানিয়ে ফেললেই এটা একটা কমা সেপারেটেড ফাইল হয়ে যাবে। &#8230;এবারে Replace All চাপুন</li>



<li>এবারে সাবধানতার জন্য ফাইলের এনকোডিংকে Unicode থেকে Unicode (UTF-8) করে নিতে হবে। এজন্য নোটপ্যাডে File &gt; Save as-এ ক্লিক করুন, এবং একেবারে নিচে Save বোতামের বাম দিকে Encoding থেকে UTF-8 বাছাই করে দিন। ফাইলের নতুন একটা নাম দিলে ঝামেলা নেই, একই নাম দিলে, রিপ্লেস করে নিতে হবে। কাজ শেষ, নোটপ্যাড বন্ধ করে দিন</li>



<li>এবারে ফাইলটা রিনেম করে এর <code>.txt</code> এক্সটেনশনটাকে বদলে <code>.csv</code> করে ফেলুন। যদি ফাইলের নাম হয়: <code>data.txt</code>, তাহলে একে আপনি বানাচ্ছেন <code>data.csv</code></li>
</ul>



<h4>এক্সেল দিয়ে Unicode CSV &#8211; সমাধান ২ (তুলনামূলক ঝামেলাহীন):</h4>



<ul>
<li>আমরা Jaimon Mathew-এর <a href="https://jaimonmathew.wordpress.com/2011/08/23/excel_addin_to_work_with_unicode_csv/" target="_blank" rel="nofollow noopener">এই ব্লগ পোস্টটি^</a> পেয়েছিলাম, যেখানে তাঁর তৈরি একটা অ্যাডইন রয়েছে (পুরো প্রোজেক্টের কোডটি তিনি <a href="https://github.com/jaimonmathew/Unicode-CSV-Addin" target="_blank" rel="nofollow noopener">গিটহাবে হোস্ট^</a> করে রেখেছেন)। অ্যাডইনটি ডাউনলোড করে নিতে হবে আগে (<a href="http://blog.jaimon.co.uk/UnicodeCSV/setupfiles.zip" target="_blank" rel="nofollow noopener">ডাউনলোড লিংক^</a> : <code>setupfiles.zip</code> &#8211; filesize: 247kb)</li>



<li>সেটআপ চালু হলে পিসি রিস্টার্ট নিবে, তাই কোনো কাজ থাকলে আগে ব্যাকআপ নিয়ে নিন</li>



<li>আনযিপ করে নিয়ে <code>Setup.exe</code> চালু করুন (ওটা কাজ না করলে <code>UnicodeCSVAddin.vsto</code> ফাইলটা চালু করতে নির্দেশনা রয়েছে)</li>



<li>এতে সে তার প্রয়োজনীয় ফাইল ইন্টারনেট ব্যবহার করে নামিয়ে নিয়ে তা কম্পিউটারে ইন্সটল করে নিবে। ইন্সটলেশনের অংশ হিসেবে সে পিসিকে নিজে থেকেই রিস্টার্ট করে নিবে। পিসিকে রিস্টার্ট হতে দিন</li>



<li>ইন্সটল করা হয়ে গেলে সরাসরি আপনার বাংলা লেখা এক্সেল ফাইলটা খুলে নিন এক্সেলে। এবারে রিবনে একটা আলাদা নাম দেখতে পাবেন: Unicode CSV। ওটাতে গিয়ে Save বোতাম চাপুন। নাম দিয়ে ফাইলটা সংরক্ষণ করে নিন</li>



<li>ব্যস, ইউনিকোডে আপনার সিএসভি ফাইল প্রস্তুত। যাচাই করতে এক্সেল বন্ধ করে দিয়ে <code>.csv</code> ফাইলটা নোটপ্যাডে খুলে দেখে নিন</li>
</ul>



<h4>এক্সেল দিয়ে Unicode CSV &#8211; সমাধান ৩ (গুগল ডক্স):</h4>



<ul>
<li>আপনার এক্সেল ফাইলটা <a href="http://drive.google.com/" target="_blank" rel="nofollow noopener">গুগল ড্রাইভে^</a> আপলোড করে দিন</li>



<li>এবারে তাকে Open with Google Sheets করে নিন</li>



<li>নতুন গুগল শিটে এবারে আপনার বাংলা স্প্রেডশিটটা খুললে File &gt; Download as &gt; Comma-separated values (.csv, current sheet) বাছাই করুন</li>



<li>ব্যস, ইউনিকোডে বদলে সিএসভি হয়ে নেমে আসবে আপনার স্প্রেডশিটটা</li>
</ul>



<h3>পরিশেষ</h3>



<p>দারুণ না! আমরা স্প্রেডশিট থেকে সিএসভি ফাইল তৈরি করা শিখলাম। তথ্যে ভাষা ইংরেজিভিন্ন অন্য যে কোনো ইউনিকোড হরফে হলে তাও আমরা সফলভাবে সিএসভি করে নিতে শিখলাম। এবং সর্বোপরি সিএসভি ফাইল পিএইচপি দিয়ে পড়তে পারলাম, এমনকি লুপ চালিয়ে তা সংযুক্ত মাইএসকিউএল ডাটাবেযেও ঢুকিয়ে নিতে পারলাম। <span style="text-decoration: underline;">আমরা অবশ্য ডাটাবেযে তথ্য নেয়ার আগে প্রয়োজনীয় স্যানিটাইযেশন, ভ্যালিডেশন এখানে দেখাইনি, যা খুবই গুরুত্বপূর্ণ, এবং বাস্তবে, কাজে সেগুলো অবশ্যই আসা উচিত।</span></p>



<h3>বোনাস: ওয়ার্ডপ্রেসে CSV পড়া</h3>



<p>ওয়ার্ডপ্রেসও কিন্তু PHP-MySQL-ভিত্তিক সিএমএস, সুতরাং আলাদা ঝামেলার কিছুই নেই। তবু আমি যেহেতু একজন ওয়ার্ডপ্রেস ডেভলপার, তাই ওয়ার্ডপ্রেসে কাজটি সহজে কিভাবে করা যায়, তা হয়তো বলে দিতেই পারি।</p>



<p>ওয়ার্ডপ্রেসে একটা পিএইচপি কোড রান করানোর জন্য বিভিন্নরকম প্লাগইন রয়েছে, যেমন: Otto&#8217;র <a href="https://wordpress.org/plugins/php-code-widget/" target="_blank" rel="nofollow noopener">PHP Code Widget^</a>। এই উইজেটে আপনার পিএইচপি কোড বসিয়ে নিয়ে তা ওয়ার্ডপ্রেসের যেকোনো উইজেট সক্রীয় অংশে রান করাতে পারবেন।</p>



<p>যাদের প্লাগইন ব্যবহার করতে মন চাইছে না, তারা কোডের বিপুল ঝামেলায় না গিয়ে যে কাজটি করতে পারেন খুব সহজে, তা হলো একটা Page Template বানিয়ে ফেলা, কিছুই না, শুধুমাত্র কমেন্টের ভিতরে Template Name: CSV বসিয়ে নিলেই যেকোনো ফাইলকে WordPress-এর পাতায় রান করানো যায়। এই ফাইলটা থিমের ফোল্ডারে থাকলে Add New Page থেকে নতুন পাতা তৈরি করে পেজ টেমপ্লেট হিসেবে CSV (আমাদের টেমপ্লেটের নাম) বাছাই করে দিলেই হলো।</p>



<figure class="wp-block-embed is-type-rich is-provider-embed-handler wp-block-embed-embed-handler"><div class="wp-block-embed__wrapper">
View the code on <a href="https://gist.github.com/mayeenulislam/03864e63b073fc81694b">Gist</a>.
</div></figure>



<p>আমরা ধরে নিয়েছি, আপনি কর্মচারীদের তথ্যাদি রাখার জন্য একটা কাস্টম পোস্টটাইপ তৈরি করে নিয়েছেন, এবং অতিরিক্ত তথ্যগুলো পোস্টমেটা হিসেবে postmeta টেবিলে সংরক্ষণ করছেন। এখানেও একই কথা প্রযোজ্য: <strong>কোনো স্যানিটাইযেশন কিংবা ভ্যালিডেশনের ধার ধারা হয়নি। বাস্তবে প্রয়োগের আগে অবশ্যই কাজগুলো করে নিতে হবে যথাযথ।</strong></p>



<p>এই লেখনি একটা প্রাথমিক দিকনির্দেশনা বলা যায়। আপনি কাজ করতে গিয়ে আরো সমস্যার সম্মুখিন হতে পারেন। সমাধানও বেরিয়ে আসবে ইনশাল্লাহ। তবে কাজে নেমে পড়ার জন্য যথেষ্ট তথ্য এখানে রয়েছে। কেমন কাজে লাগালেন, জানাতে ভুলবেন না কিন্তু।</p>



<p><strong>-মঈনুল ইসলাম</strong><br><img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f517.png" alt="🔗" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <a rel="noreferrer noopener" href="https://mayeenulislam.github.io/" target="_blank">mayeenulislam.github.io</a></p>



<p><span style="color: #999999;">____________________________________________________________</span></p>



<h3><strong>কৃতজ্ঞতা</strong></h3>



<p class="has-small-font-size">এই যাবতীয় অনুসন্ধিৎসায় আমার প্রাক্তন সহকর্মী ও টীম লীড তাহমিনা আখতার-এর সহায়তা কৃতজ্ঞতাচিত্তে স্মরণ করছি। আসলে আমরা উভয়ে মিলে, একটা পিএইচপি প্রোজেক্টে, এবিষয়ক সমস্যার সমাধান করছিলাম। এবং প্রায় ৩ লাখের বেশি তথ্য নিয়ে কাজ করেছিলাম আমরা, সাফল্যের সাথে, আলহ্বামদুলিল্লাহ। <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f60d.png" alt="😍" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<p class="has-small-font-size">প্রচ্ছদের ছবি <a href="https://commons.wikimedia.org/wiki/File:CSV_Logo.svg" target="_blank" rel="nofollow noopener">Christlich Soziale Volkspartei-এর তৈরি ছবি^</a>, উইকিমিডিয়া কমন্স থেকে নিয়ে বদলে নেয়া হয়েছে প্রয়োজনমতো।</p>
<p>The post <a rel="nofollow" href="https://mayeenulislam.github.io/tuts/csv-bengali-import-php-mysql/">PHP-MySQL দিয়ে CSV ফাইল থেকে বাংলা তথ্য আপলোড</a> appeared first on <a rel="nofollow" href="https://mayeenulislam.github.io/tuts/">Tuts by Mayeenul Islam</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mayeenulislam.github.io/tuts/csv-bengali-import-php-mysql/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>পিএইচপি লুপ দিয়ে কলাম তৈরি &#8211; ২ কলাম, ৩ কলাম এবং যত ইচ্ছা</title>
		<link>https://mayeenulislam.github.io/tuts/columns-php-loop/</link>
					<comments>https://mayeenulislam.github.io/tuts/columns-php-loop/#comments</comments>
		
		<dc:creator><![CDATA[মঈনুল ইসলাম]]></dc:creator>
		<pubDate>Fri, 14 Feb 2014 14:38:50 +0000</pubDate>
				<category><![CDATA[ওয়েব ডিযাইন টিউটোরিয়াল]]></category>
		<category><![CDATA[ওয়েব ডেভলপমেন্ট টিউটোরিয়াল]]></category>
		<category><![CDATA[জ্ঞান-স্তরভিত্তিক টিউটোরিয়াল]]></category>
		<category><![CDATA[পিএইচপি টিউটোরিয়াল]]></category>
		<category><![CDATA[মাধ্যমিক স্তরের টিউটোরিয়াল]]></category>
		<guid isPermaLink="false">https://mayeenulislam.github.io/tuts/?p=417</guid>

					<description><![CDATA[<p> [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://mayeenulislam.github.io/tuts/columns-php-loop/">পিএইচপি লুপ দিয়ে কলাম তৈরি &#8211; ২ কলাম, ৩ কলাম এবং যত ইচ্ছা</a> appeared first on <a rel="nofollow" href="https://mayeenulislam.github.io/tuts/">Tuts by Mayeenul Islam</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="wp-block-image">
<figure class="aligncenter"><a href="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/02/banner-php-column-nanodesigns.jpg"><img decoding="async" width="800" height="300" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/02/banner-php-column-nanodesigns.jpg" alt="Column Design using PHP-CSS by nanodesigns" class="wp-image-430" srcset="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/02/banner-php-column-nanodesigns.jpg 800w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/02/banner-php-column-nanodesigns-300x113.jpg 300w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/02/banner-php-column-nanodesigns-768x288.jpg 768w" sizes="(max-width: 800px) 100vw, 800px" /></a></figure></div>


<p><strong>জ্ঞানস্তর:</strong> মাধ্যমিক</p>



<p class="has-text-align-center"><strong>লক্ষ্যণীয়:</strong> এই আলোচনায় ধরে নেয়া হয়েছে যে, পাঠকের পিএইচপি কন্ডিশনাল স্টেটমেন্ট এবং লুপ সম্পর্কে প্রাথমিক ধারণা রয়েছে।</p>



<p>আমি ফেসবুকে আমার অনেকগুলো ছবি একটা অ্যালবামে আপলোড করলাম, তারপর যখন অ্যালবামটা খুললাম, তখন দেখি ছবিগুলো কেমন থরে থরে সাজিয়ে রাখা হয়েছে, যেন পাশাপাশি পাঁচটা বাক্সে পাঁচটা ছবি, তারপর নিচে আবার পাঁচটা বাক্সে পাঁচটা ছবি&#8230; বেশ সুন্দর! কিংবা ধরা যাক, আমি একটা ওয়েবসাইট আছে, যেখানে আমার লেখাগুলো একটার পর একটা আসছে। এখন আমি চাচ্ছি যাতে লেখাগুলো দুই কলামে আসে &#8211; একটা লেখা বামের কলামে, তো দ্বিতীয় লেখাটা হবে ডানের কলামে, আবার তৃতীয় লেখাটা পরের লাইনে গিয়ে বসবে বামের কলামে&#8230; দারুণ হবে বিষয়টা। যারা পিএইচপি জানেন, তারা জানেন যে, এই ছবিগুলোকে একত্র করে দেখানো কিংবা লেখাগুলোকে একটার পর একটা নিয়ে এসে দেখানোর কাজটা করা হয় পিএইচপি লুপ ব্যবহার করে।</p>



<p>আমরা এরকম একটি অতি সাধারণ <tt>for loop</tt> নিলাম, যেখানে কিছু CSS ব্যবহার করে আমরা একটা প্রাথমিক চেহারা দাঁড় করাবো বিষয়টা বোঝার জন্য।</p>



<figure class="wp-block-embed is-type-rich is-provider-embed-handler wp-block-embed-embed-handler"><div class="wp-block-embed__wrapper">
View the code on <a href="https://gist.github.com/mayeenulislam/b286812097c0b3dadf05f8dfd389c656">Gist</a>.
</div><figcaption class="wp-element-caption">PHP ব্যবহার করে লুপ চালিয়ে লেখা দেখানো</figcaption></figure>



<p>আমরা এজন্য কিছু CSS লিখলাম, যাতে বিষয়টা একটু বোধগম্য হয়, এই সিএসএস-এর সাথে কলামের এখনও কোনো সম্পর্ক নেই; আমরা আসলে, কলামটা যে ঠিকমতো কাজ করছে, সেটা যাতে বুঝতে পারি, তারই জন্য একটা প্রস্তুতি নিচ্ছি মাত্র।</p>



<span id="more-417"></span>



<figure class="wp-block-embed is-type-rich is-provider-embed-handler wp-block-embed-embed-handler"><div class="wp-block-embed__wrapper">
View the code on <a href="https://gist.github.com/mayeenulislam/b286812097c0b3dadf05f8dfd389c656">Gist</a>.
</div><figcaption class="wp-element-caption">আমাদের লুপের লেখাগুলোকে একটু ডিযাইন করলাম আমরা</figcaption></figure>



<p>এবারে পাতাটা যদি আমরা ব্রাউযারে রান করি, তাহলে তা দেখা যাবে এরকম:</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/02/PHP-column-loop-image-1.jpg"><img decoding="async" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/02/PHP-column-loop-image-1-1024x357.jpg" alt="আমাদের ডিভগুলোর প্রাথমিক চেহারা (nanodesigns)" class="wp-image-422"/></a><figcaption class="wp-element-caption">আমাদের div-গুলোর প্রাথমিক চেহারা</figcaption></figure></div>


<p>আমরা জানি পিএইচপি লুপ দিয়ে একইরকমের কাজের পুণরাবৃত্তি করা যায়। যেমন: আমরা এখানে মাত্র একটাই <tt>content-body</tt> ডিভ ৫ বার দেখিয়েছি। আমরা আগেই বলেছি, কলাম করার জন্য এটা শ্রেফ প্রস্তুতি, এবারে আমরা এই কোড দিয়েই কলাম তৈরি করবো। লক্ষ করলে দেখবেন test নামক ক্লাস দিয়ে একটা ডিভ রেখেছি, এখানে আমরা বিভিন্ন পরীক্ষা-নিরীক্ষাগুলো করবো, যে পরীক্ষা-নিরীক্ষাগুলো আমরা ব্রাউযারে দেখবো।</p>



<h3><strong>২ কলাম তৈরি</strong></h3>



<p>কলাম তৈরি করার জন্য একটু ছোটবেলায় ঢু মেরে আসা যাক। আচ্ছা&#8230;, ভাগ অংকের কথা মনে আছে? একটু দেখা যাক। ৪-কে ২ দিয়ে ভাগ করুন। না না না না, ক্যালকুলেটর দিয়ে ভাগ করলে হবে না, একটু হাতে-কলমে করুন। করা হয়ে গেলে, এরপর ৩-কে ২ দিয়ে ভাগ করুন।</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/02/PHP-column-loop-image-ramainder.jpg"><img decoding="async" width="360" height="215" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/02/PHP-column-loop-image-ramainder.jpg" alt="ভাগ অংক - যেখানে ভাগশেষ বলে একটা কিছু ছিল :)" class="wp-image-419" srcset="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/02/PHP-column-loop-image-ramainder.jpg 360w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/02/PHP-column-loop-image-ramainder-300x179.jpg 300w" sizes="(max-width: 360px) 100vw, 360px" /></a><figcaption class="wp-element-caption">ভাগ অংক &#8211; যেখানে ভাগশেষ বলে একটা কিছু ছিল 🙂</figcaption></figure></div>


<p>বিষয়টা কী হলো? ৪-কে ২ দিয়ে ভাগ দেয়ায় তা দেয়া গেলো, অর্থাৎ ৪, ২ দিয়ে নিঃশেষে বিভাজ্য। কিন্তু ৩-কে ২ দিয়ে ভাগ দেয়া গেলো না, কারণ তাতে ১ ভাগশেষ হিসেবে অবশিষ্ট থাকে। হ্যা, আমাদের উদ্দেশ্য আসলে ঐ ভাগ অংক শেখানো নয়, বরং ঐ ভাগশেষের সাথে আপনাকে পরিচয় করিয়ে দেয়া, কারণ এই সাধারণ একটা গাণিতিক হিসাব আমাদেরকে কলাম তৈরিতে খুব সহায়তা করবে। এবং মজার ব্যাপার হলো আপনি ক্যালকুলেটরেই ভাগশেষের হিসাব বের করতে পারবেন, তাই মাথা খাটিয়ে অংক করার ঝামেলা নেই, সুতরাং শান্তিই শান্তি!</p>



<p>ক্যালকুলেটরে কিংবা কম্পিউটারে গাণিতিক হিসাবে ভাগশেষকে বলা হয় modulus (উচ্চারণ: <i>মড্যূলাস</i>)। আর ভাগশেষের প্রতীকটা হলো %, একে বলা হয় modulo (উচ্চারণ: <i>মড্যূলো</i>)। অর্থাৎ 4 % 2 = 0 এবং 3 % 2 = 1। তাহলে ক্যালকুলেটরে কিভাবে তা বের করা যায়? এজন্য লাগবে সাইন্টিফিক ক্যালকুলেটর। একজন প্রোগ্রামারের জন্য কম্পিউটারেই আছে একটা ক্যালকুলেটর, সেটাকে সাইন্টিফিক মোডে খুলে নিলেই হবে। সেখানে ভাগশেষকে ইংরেজিতে লেখা আছে Mod। তাহলে করা যাক: 4 Mod 2, আর 3 Mod 2, যথাক্রমে 0 এবং 1 দেখাবে। আমরা কলাম তৈরিতে এই ভাগশেষকে খুব বেশি ব্যবহার করবো।</p>



<p>আমরা যেহেতু ২ কলামের জন্য কোড করছি, ২ কলাম করলে তা কীরকম হবে, সেটা দেখা যাক:</p>



<figure class="wp-block-table"><table><tbody><tr><td>1</td><td>2</td></tr><tr><td>3</td><td>4</td></tr><tr><td>5</td><td>&#8230;</td></tr></tbody></table><figcaption class="wp-element-caption">কলামের চেহারাটা যেমন হবে আরকি</figcaption></figure>



<p>এবারে এই সংখ্যাগুলোকে ২ দিয়ে ভাগ করি, যাতে ভাগশেষ জানতে পারি: 1 mod 2 = 1; 2 mod 2 = 0; 3 mod 2 = 1; 4 mod 2 = 0; 5 mod 2 = 1। কী বোঝা গেল? যেহেতু দুটি কলাম, তাই প্রথম ভাগশেষটা ১ এবং দ্বিতীয় ভাগশেষটা শূণ্য &#8211; এই ধারা বজায় রেখেই বারবার তারা ঘুরে ঘুরে আসছে। আমরা আসলে এই সুযোগটারই সদ্ব্যবহার করে আমাদের কলামের জন্য প্রয়োজনীয় ক্লাস লোড করবো।</p>



<p>আমরা এবারে লুপের মধ্যে কাউন্টার বসিয়ে ভাগশেষ করে একটা মজার বিষয় দেখবো, আগের কোডের মধ্যে নিচের মতো করে কোডগুলো লিখে ফেলুন:</p>



<figure class="wp-block-embed is-type-rich is-provider-embed-handler wp-block-embed-embed-handler"><div class="wp-block-embed__wrapper">
View the code on <a href="https://gist.github.com/mayeenulislam/b286812097c0b3dadf05f8dfd389c656">Gist</a>.
</div><figcaption class="wp-element-caption">PHP Loop এবং Modulus ব্যবহার করে ২ কলাম তৈরি</figcaption></figure>



<p>কোডটা লিখে পেজটা রিফ্রেশ করুন&#8230; মজাটা কি এবারে দেখা যাচ্ছে? অবশ্যই দেখা যাচ্ছে। কী দেখা যাচ্ছে?</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/02/PHP-column-loop-image-2.jpg"><img decoding="async" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/02/PHP-column-loop-image-2-1024x474.jpg" alt="ডিভগুলোতে তাদের ক্রমসংখ্যানুপাতিক ভাগশেষ কেমন আসছে। (nanodesigns)" class="wp-image-423"/></a><figcaption class="wp-element-caption">ডিভগুলোতে তাদের ক্রমসংখ্যানুপাতিক ভাগশেষ কেমন আসছে</figcaption></figure></div>


<p>এখানে দেখতেই পাচ্ছেন, যখন ডিভটা হচ্ছে ‌১ (মানে প্রথম ডিভ), তখন ২ দিয়ে ভাগ করলে তার ভাগশেষটা হচ্ছে ১; যখন ডিভ ২, তখন ২ দিয়ে ভাগ করলে তার ভাগশেষটা ০। প্রশ্ন হচ্ছে আমরা দুই দিয়ে ভাগ করছি কেন?</p>



<p>উত্তরটা খুব সহজ: কারণ আমরা দুই কলাম (2-column code) তৈরি করার জন্য কোড করছি।</p>



<p>এবারে আমরা পরীক্ষা করার জন্য যে লাইনটা লিখেছিলাম, সেটা এখনই ফেলে না দিয়ে ওটা ব্যবহার করে কিছু কন্ডিশন বা শর্ত দেয়া যাক। আমরা জানি, পিএইচপি-তে শর্ত দেয়া মানেই <tt>if-else</tt>-এর ব্যবহার।</p>



<figure class="wp-block-embed is-type-rich is-provider-embed-handler wp-block-embed-embed-handler"><div class="wp-block-embed__wrapper">
View the code on <a href="https://gist.github.com/mayeenulislam/b286812097c0b3dadf05f8dfd389c656">Gist</a>.
</div><figcaption class="wp-element-caption">PHP Loop এবং Modulus বা ভাগশেষ ব্যবহার করে আলাদা আলাদা ক্লাস লোড করা</figcaption></figure>



<p>আমরা ঐ ভাগশেষকে কাজে লাগিয়ে মাত্র একটা শর্ত দিয়ে কী দারুণভাবে কিছু ডায়নামিক লেখা যোগ করে ফেললাম। আমরা আমাদের <tt>test</tt> ডিভে সেটা দেখতে পাচ্ছি। (<em>দেখার জন্যই তো রেখেছি ওটাকে</em> 🙂 )</p>



<p>শর্তটা হলো:</p>



<p>যদি ডিভটাকে ২ দিয়ে ভাগ করলে ভাগশেষ শূণ্য পাও, তাহলে <tt>$class</tt> ভ্যারিয়েবলে রাখো “ second-div” কথাটা, নাহলে রাখো “ first-div” কথাটা।</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/02/PHP-column-loop-image-3.jpg"><img decoding="async" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/02/PHP-column-loop-image-3-1024x506.jpg" alt="ভাগশেষ অনুসারে আমাদের লোড করা ক্লাসগুলো দেখা যাচ্ছে। (nanodesigns)" class="wp-image-424"/></a><figcaption class="wp-element-caption">ভাগশেষ অনুসারে আমাদের লোড করা ক্লাসগুলো দেখা যাচ্ছে</figcaption></figure></div>


<p>আপনি ব্রাউযারে Inspect Element করলেই আসল মজাটা পাবেন, কারণ দেখতে পাবেন, আপনার <tt>content-body</tt> ক্লাসের পাশে এবারে খুব সুন্দর করে যথাক্রমে <tt>first-div</tt> এবং <tt>second-div</tt> নামে দুটো HTML ক্লাস বসে গেছে। আসলে যে, ঐ <tt>first-div</tt> আর <tt>second-div</tt> কথাটা দুটো ক্লাসের নাম আমরা এখন সেটা বুঝতে পারছি আমরা। এজন্যই নামগুলোর আগে, ডাবল কোটের ভিতরে <strong>একটা স্পেস বা ফাঁকা স্থান রেখে নিয়েছি</strong>, যাতে, যখন তা ক্লাস হিসেবে বসবে, তখন যেন অন্য আরেকটা ক্লাসের সাথে লেগে না যায়, তাহলে কাজ করবে না।</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/02/PHP-column-loop-image-4.jpg"><img decoding="async" width="337" height="152" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/02/PHP-column-loop-image-4.jpg" alt="ডেভলপার টুলে দেখা যাচ্ছে, কিভাবে ডিভে ক্লাসগুলো ক্রমান্বয়ে বসেছে। (nanodesigns)" class="wp-image-425" srcset="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/02/PHP-column-loop-image-4.jpg 337w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/02/PHP-column-loop-image-4-300x135.jpg 300w" sizes="(max-width: 337px) 100vw, 337px" /></a><figcaption class="wp-element-caption">ডেভলপার টুলে দেখা যাচ্ছে, কিভাবে ডিভে ক্লাসগুলো ক্রমান্বয়ে বসেছে</figcaption></figure></div>


<p>আমরা যেহেতু আমাদের ডিভের মধ্যে ডায়নামিকভাবে ক্লাস লোড করতে পেরেছি, আসল কাজটাই হয়ে গেছে আমাদের। বাকিটা এবার CSS-এর কারসাজি।</p>



<p>এবারে আমাদের <tt>content-body</tt> ক্লাসে দেয়া <tt>width</tt>-কে কমিয়ে অর্ধেকের একটু কম করে ফেলবো (অর্ধেক করছি কারণ পুরো ডিভ যদি 100%, তাকে 2 দিয়ে ভাগ করলে তা 50% হয়, আমরা দুটো কলামের মাঝে একটা ফাঁকা স্থান রাখার জন্য তা আরো একটু কমিয়ে এনেছি), এছাড়া এতে একটু <tt>float</tt> দিবো; আর নতুন দুটো ক্লাসে প্রোপার্টি দিবো।</p>



<figure class="wp-block-embed is-type-rich is-provider-embed-handler wp-block-embed-embed-handler"><div class="wp-block-embed__wrapper">
View the code on <a href="https://gist.github.com/mayeenulislam/b286812097c0b3dadf05f8dfd389c656">Gist</a>.
</div><figcaption class="wp-element-caption">লুপের div-গুলোকে ডানে-বামে সাজানোর জন্য CSS লিখলাম</figcaption></figure>



<p>ব্যস, হয়ে গেলো আমাদের কলাম। এই প্রোপার্টিগুলো একটা একটা করে দিয়ে দিয়ে প্রিভিউ দেখলে বুঝতে পারা যাবে, কিভাবে কাজটি হচ্ছে। তবুও বলছি: আমরা <tt>content-body</tt>-তে বামে ফ্লট দিয়ে <tt>width</tt> [অর্ধেকেরও কমে] কমিয়ে দিতেই ডিভগুলো বাম বরাবর পাশাপাশি এসে যাবে। তারপর শুধু ডানপাশের ডিভগুলোকে (<tt>.second-div</tt>) ডানে ফ্লট করে দিতেই আমাদের কাঙ্ক্ষিত কলাম তৈরি হয়ে গেলো। শুধু একটাই সমস্যা: এখনতো সবগুলো ডিভের উচ্চতা সমান, তাই বিষয়টা বোঝা যাচ্ছে না, কিন্তু যখন ডায়নামিক কন্টেন্ট দিয়ে ডিভগুলো ভরবে, তখন এগুলো কোনটা উচ্চতায় ছোট, কোনোটা বড় হবে। তখন <tt>second-div</tt>-এর উচ্চতা কমলেই <tt>first-div</tt> লাফ দিয়ে ডানদিকে সরে গিয়ে উপরের ঐ ফাঁকা জায়গাটা ভরতে যাবে, কারণ সব ডিভেই ফ্লট দেয়া &#8211; যা আমরা কোনোভাবেই চাই না। এজন্য আমরা প্রত্যেকটা <tt>first-div</tt>-কে বলে দিলাম, তুমি ডানে-বামে কোনোদিকেই ফ্লট মানবে না। সব মিলে যা দাঁড়ালো:</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/02/PHP-column-loop-image-5.jpg"><img decoding="async" width="1024" height="398" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/02/PHP-column-loop-image-5-1024x398.jpg" alt="ক্লাস অনুসারে সিএসএস বাসতেই কিভাবে ডিভগুলো যার যার অবস্থান করে নিয়েছে। (nanodesigns)" class="wp-image-426" srcset="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/02/PHP-column-loop-image-5-1024x398.jpg 1024w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/02/PHP-column-loop-image-5-300x117.jpg 300w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/02/PHP-column-loop-image-5-768x299.jpg 768w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/02/PHP-column-loop-image-5.jpg 1366w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">ক্লাস অনুসারে সিএসএস বাসতেই কিভাবে ডিভগুলো যার যার অবস্থান করে নিয়েছে</figcaption></figure></div>


<p>ব্যস, হয়ে গেল আমাদের ২ কলাম তৈরি। শুধু আরেকটু সুন্দর করে উপস্থাপন করার জন্য আর কোড কমিয়ে আনার জন্য এবারে কোডে কিছু যাদু প্রয়োগ করা যাক:</p>



<p>আমরা <tt>test</tt> ডিভটা ফেলে দিবো, ওটার কাজ শেষ। আমরা যে কন্ডিশনাল স্টেটমেন্টটা লিখেছিলাম, তাকে শর্ট ফর্মে লিখতে পারি। তাহলে&#8230;</p>



<pre class="wp-block-preformatted">&lt;?php if( $divCounter % 2 == 0 ) { $class = ' second-div'; } else { $class = ' first-div'; } ?&gt;
</pre>



<p>হয়ে যাবে&#8230;</p>



<pre class="wp-block-preformatted">&lt;?php $class = ( $divCounter % 2 == 0 ? ' second-div' : ' first-div' ); ?&gt;</pre>



<p>আর সিএসএস-এ <tt>.content-body</tt> থেকে <tt>box-shadow</tt>’র লাইনটা বাদ দিয়ে দিই, তাহলে বর্ডারটা চলে যাবে। ব্যস হয়ে গেলো আমাদের দুই কলাম তৈরির কাজ। এবারে পূর্ণাঙ্গ কোডটি নিচের লিংক থেকে নামিয়ে মিলিয়ে নিতে পারেন।</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/02/PHP-column-loop-image-6.jpg"><img decoding="async" width="1024" height="332" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/02/PHP-column-loop-image-6-1024x332.jpg" alt="পরীক্ষামূলক কোডগুলো সরিয়ে নিলেই ভেসে উঠলো আমাদের কাঙ্ক্ষিত কলাম। (nanodesigns)" class="wp-image-427" srcset="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/02/PHP-column-loop-image-6-1024x332.jpg 1024w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/02/PHP-column-loop-image-6-300x97.jpg 300w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/02/PHP-column-loop-image-6-768x249.jpg 768w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/02/PHP-column-loop-image-6.jpg 1365w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">পরীক্ষামূলক কোডগুলো সরিয়ে নিলেই ভেসে উঠলো আমাদের কাঙ্ক্ষিত কলাম</figcaption></figure></div>


<h3>৩ কলাম তৈরি</h3>



<p>যারা ২ কলাম তৈরি করতে পেরেছেন, সবচেয়ে বড় কথা, বুঝে বুঝে কাজটা করতে পেরেছেন, তারা এবারে অনায়াসেই ৩ কলামের কাজটি করে ফেলতে পারেন। লজিক বা সূত্রটা এক্ষেত্রেও সমান। সেই একই ভাগশেষের অংক, শুধু পার্থক্য হলো এবারে ৩ দিয়ে ভাগ দিয়ে দিয়ে কাজ করতে হবে। আমি বরং সরাসরি কোডটা দিই, তারপর বুঝিয়ে বলি:</p>



<figure class="wp-block-embed is-type-rich is-provider-embed-handler wp-block-embed-embed-handler"><div class="wp-block-embed__wrapper">
View the code on <a href="https://gist.github.com/mayeenulislam/b286812097c0b3dadf05f8dfd389c656">Gist</a>.
</div><figcaption class="wp-element-caption">PHP Loop এবং Modulus দিয়ে ৩ কলাম তৈরির কৌশল</figcaption></figure>



<p>সাথে লাগবে এই সিএসএসগুলো:</p>



<figure class="wp-block-embed is-type-rich is-provider-embed-handler wp-block-embed-embed-handler"><div class="wp-block-embed__wrapper">
View the code on <a href="https://gist.github.com/mayeenulislam/b286812097c0b3dadf05f8dfd389c656">Gist</a>.
</div><figcaption class="wp-element-caption">৩ কলামের লুপ কলাম আকারে দেখার জন্য প্রয়োজনীয় CSS</figcaption></figure>



<p>এবারে পাতাটি ব্রাউযারে খুললেই দেখা যাবে বিষয়টা কী হচ্ছে।</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/02/PHP-column-loop-image-7.jpg"><img decoding="async" width="1024" height="499" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/02/PHP-column-loop-image-7-1024x499.jpg" alt="৩ কলামের চেহারাটা হবে এরকম। নিচে, ডেভলপার টুলে ডিভের ক্লাসগুলো কিভাবে লোড হয়েছে, তাও দেখা যাচ্ছে। (nanodesigns)" class="wp-image-421" srcset="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/02/PHP-column-loop-image-7-1024x499.jpg 1024w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/02/PHP-column-loop-image-7-300x146.jpg 300w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/02/PHP-column-loop-image-7-768x374.jpg 768w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/02/PHP-column-loop-image-7.jpg 1354w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">৩ কলামের চেহারাটা হবে এরকম। নিচে, ডেভলপার টুলে ডিভের ক্লাসগুলো কিভাবে লোড হয়েছে, তাও দেখা যাচ্ছে</figcaption></figure></div>


<p>এখানে লক্ষ করুন: প্রথমত বিষয়টা বুঝার জন্য for-loop-এর লিমিটটা একটু বাড়িয়ে নিয়েছি। তারপর সেই ভাগ শেষ পন্থায় আমরা ক্লাস লোড করেছি। যখন আমরা তিন কলামের জন্য কাজ করছি, তখন কলামগুলো কিভাবে পড়ছে, দেখা যাক:</p>



<figure class="wp-block-table"><table><tbody><tr><td>1</td><td>2</td><td>3</td></tr><tr><td>4</td><td>5</td><td>6</td></tr><tr><td>7</td><td>&#8230;</td><td>&#8230;</td></tr></tbody></table><figcaption class="wp-element-caption">৩ কলামের ক্ষেত্রে দৃশ্যমান চেহারাটা যেমন</figcaption></figure>



<p>এবারে ৩ দিয়ে একটা একটা করে ভাগ করা যাক, 1 mod 3 = 1; 2 mod 3 = 2; 3 mod 3 = 0; 4 mod 3 = 1; 5 mod 3 = 2; 6 mod 3 = 0; 7 mod 3 = 1। দেখা যাচ্ছে, যে সংখ্যাকে ভাগ করিনা কেন, তিনটা আলাদা আলাদা ভাগশেষ আসার পরই, আবার ঐ একই ভাগশেষই তিনবার তিনবার করে ঘুরে ঘুরে আসছে। আমরা আসলে এই ব্যাপারটাকেই টার্গেট করছি আর এর অনুপাতে প্রয়োজনীয় ডিভ ক্লাস লোড করছি।</p>



<p>লক্ষ করলে দেখবেন, আমরা মাত্র দুটো ক্লাস লোড করে দুটো কলামকে চিহ্নিত করেছি। কারণ, আমাদের কলাম তৈরি করাতে দ্বিতীয় কলাম কোনটি, তা না জানলেও চলছে। প্রথম কলামের জন্য লজিক আগের মতোই, ফ্লটকে ক্লিয়ার করে দিচ্ছি। তবে .content-body-তে অতিরিক্ত হিসেবে যোগ হয়েছে margin-right। ডানদিকে মার্জিন দেয়ার কারণে প্রথম কলাম থেকে দ্বিতীয় কলাম পর্যন্ত একটা ফাঁকা স্থান তৈরি হয়েছে, তেমনি দ্বিতীয় কলাম থেকে তৃতীয় কলাম পর্যন্ত ফাঁকা স্থান, তেমনি তৃতীয় কলাম থেকে ডানদিকে ফাঁকা স্থান। দেখা যাচ্ছে, এই ডানদিকে-মার্জিনের প্রভাব পড়ছে সবগুলো ডিভে, অথচ তৃতীয় কলামের ডানে আর মার্জিনের দরকার নেই আমাদের, কারণ ওপাশে আর কোনো কলাম নেই, তাই আমরা .third-div-এ margin: 0 করে দিয়েছি।</p>



<p>ব্যস, লজিকটা আমরা এবারে জেনে গেছি।</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/02/PHP-column-final-nanodesigns.jpg"><img decoding="async" width="1024" height="606" src="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/02/PHP-column-final-nanodesigns-1024x606.jpg" alt="তিন কলাম দিয়ে তৈরি করা একটা নমুনা ডিযাইন। (nanodesigns)" class="wp-image-428" srcset="https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/02/PHP-column-final-nanodesigns-1024x606.jpg 1024w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/02/PHP-column-final-nanodesigns-300x178.jpg 300w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/02/PHP-column-final-nanodesigns-768x455.jpg 768w, https://mayeenulislam.github.io/tuts/wp-content/uploads/2014/02/PHP-column-final-nanodesigns.jpg 1353w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">তিন কলাম দিয়ে তৈরি করা একটা নমুনা ডিযাইন</figcaption></figure></div>


<p>পুরো প্রজেক্টের সোর্স কোড নিচের লিংক থেকে নামিয়ে নিতে পারেন। সাথে, তিন কলাম দিয়ে করা নমুনা ডিযাইনও থাকছে।</p>



<h3>৪, ৫ ইত্যাদি আরো বেশি কলাম</h3>



<p>লজিকটা এখন আর আশা করি বুঝিয়ে বলা লাগবে না। এই এক লজিকে আমরা মনের মতো করে ডিভে ইচ্ছেমতো ক্লাস লোড করে নিতে পারি, আর সে অনুপাতে সিএসএস দিয়ে সাজিয়ে নিতে পারি আমাদের ডিভগুলোকে আলাদা আলাদা করে। শুধু সূত্রে পরির্বতনটা হবে, যে সংখ্যা দিয়ে ভাগ করা হচ্ছে, তা: কারণ ২ কলামের সময় ভাগ দিয়েছি ২ দিয়ে, ৩ কলামের সময় ৩&#8230; তো ৩৯ কলামের জন্য???</p>



<h3>শেষ কথা</h3>



<p>এই টিউটোরিয়ালে আমরা পিএইচপি লুপ কাজে লাগিয়ে ক্লাস লোড করে করে তাতে সিএসএসের প্রয়োগ করে কলাম তৈরি করেছি। এখানে আমরা CSS2 ব্যবহার করেছি। কিন্তু CSS3 দিয়ে, ক্লাস লোড না করেই এরকম কলাম তৈরি করা যায়। সেটা আমরা অন্য অরেকদিন দেখবো। তবে, এই লুপ দিয়েই এখনকার মতো অনেক কাজ আপনারা সেরে নিতে পারবেন।</p>



<p>আপনাদের জন্য একটা অ্যাসাইনমেন্ট থাকুক: এই লজিক কাজে লাগিয়ে যে যার মতো নিত্য-নতুন সংখ্যক কলাম ব্যবহার করে ডিযাইন করে আমাদের সাথে শেয়ার করুন। আর জানান, যদি কোনো সমস্যায় পড়ে থাকেন। টিউটোরিয়ালটা কাজে লাগলো কিনা, তাও জানান।</p>



<p><strong>-মঈনুল ইসলাম</strong><br><img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f517.png" alt="🔗" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <a rel="noreferrer noopener" href="https://mayeenulislam.github.io/" target="_blank">mayeenulislam.github.io</a></p>
<p>The post <a rel="nofollow" href="https://mayeenulislam.github.io/tuts/columns-php-loop/">পিএইচপি লুপ দিয়ে কলাম তৈরি &#8211; ২ কলাম, ৩ কলাম এবং যত ইচ্ছা</a> appeared first on <a rel="nofollow" href="https://mayeenulislam.github.io/tuts/">Tuts by Mayeenul Islam</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mayeenulislam.github.io/tuts/columns-php-loop/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
	</channel>
</rss>
