<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Shikhun Blog]]></title><description><![CDATA[Shikhun Blog]]></description><link>https://blog.shikhun.net</link><image><url>https://cdn.hashnode.com/res/hashnode/image/upload/v1671038743418/wTNX977A4.png</url><title>Shikhun Blog</title><link>https://blog.shikhun.net</link></image><generator>RSS for Node</generator><lastBuildDate>Sun, 12 Apr 2026 20:29:40 GMT</lastBuildDate><atom:link href="https://blog.shikhun.net/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Web Fundamentals]]></title><description><![CDATA[HTTP vs HTTPS

HTTP হলো Browser এর মাধ্যমে কোন ওয়েব পেজে Request পাঠালে সেই Request Server এ একটা Plain Text হিসেবে যায়। যেখানে Request হিসেবে দেওয়া Data গুলো Insecure অবস্থায় চলাচল করে। মানে, যদি কোনো Request এ Username / Password / Card Details ইত্...]]></description><link>https://blog.shikhun.net/web-fundamentals</link><guid isPermaLink="true">https://blog.shikhun.net/web-fundamentals</guid><category><![CDATA[https]]></category><category><![CDATA[http]]></category><category><![CDATA[cache]]></category><category><![CDATA[cookies]]></category><dc:creator><![CDATA[Abdullah Al Shamim]]></dc:creator><pubDate>Wed, 01 Nov 2023 17:15:11 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1698858669883/406f16c8-0b77-48d2-a039-15a998c92623.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<ol>
<li><p>HTTP vs HTTPS</p>
<blockquote>
<p>HTTP হলো Browser এর মাধ্যমে কোন ওয়েব পেজে Request পাঠালে সেই Request Server এ একটা Plain Text হিসেবে যায়। যেখানে Request হিসেবে দেওয়া Data গুলো Insecure অবস্থায় চলাচল করে। মানে, যদি কোনো Request এ Username / Password / Card Details ইত্যাদি আমরা দেই তাহলে শুধু HTTP এর মাধ্যমে এগুলো যেভাবে লিখেছি সেভাবেই যাবে। এতে Hacker রা সহজেই আমাদের Data গুলো দেখতে পারবে।  </p>
<p>কিন্তু যদি এখানে HTTPS ব্যবহার করি তাহলে HTTPS এই Plain Text টাকে একটা Extra Security Layer বসিয়ে এরপর সেটা Server এ পাঠায়। Data গুলো Encrypt করে ফেলে, যা আসল Data কে পরিবর্তন করে ফেলে। সেই Encrypted Text কে শুধুমাত্র Server Decode করতে পারে। যে কারণে Hacker রা Data Leak করতে পারে না।</p>
<p>আর HTTPS এই Encryption এর কাজ করে SSL Certificate এর মাধ্যমে।</p>
</blockquote>
</li>
<li><p>Cache and Cookies</p>
<blockquote>
<p><em>Cache:</em> কোনো Website এ বার বার যাওয়া লাগলে সাইটের প্রতিটা Content প্রতিবার লোড হয়। এতে সাইটের Loading Time বাড়ে। যার কারণে Visitor হারানোর শঙ্কা থাকে।  </p>
<p>এই সমস্যা দূর করতে Cache ব্যবহার করা হয়। এটি Client Machine এ, মানে যে Website Visit করছে তার ডিভাইসে একটি Temporary File বানায়। যেখানে ওই Website এর বার বার ব্যবহার করা কিছু ফাইল Download করে রেখে দেয়। যেমনঃ Logo, Images, Js file, Css file ইত্যাদি। পরবর্তিতে যখন আবার সাইটটাতে Visit করে তখন এই Download হওয়া ফাইলগুলো থেকে Load করে দ্রুত Response করে দেয়। এর ফলে Loading Time কমে যায় ও User Experience Smooth হয়।  </p>
<p><em>Cookies:</em> যখন কোনো Website এ আমরা Password, Address Details, Ordering Process ইত্যাদি দিয়ে থাকি তখন এগুলো ওই Website কে মনে রাখতে হয় যে এই User টা কে? যেমনঃ কোনো Ecommerce সাইটের Cart এ কোনো Product Add করে রেখে দিয়ে Close করে দেওয়া হলো। পরে আবার Visit করলে যেন সেই User কে মনে রেখে Cart এর Product গুলো দেখাতে পারে সেজন্য Website Provider রা Server থেকে একটা Cookie Store করে রাখে যাতে User কে চিনতে পারে।  </p>
<p>এই Cookie Server থেকে Set করা হলেও এটা মূলত Client Machine এ একটি Temporary File বানায়। ফাইলের মধ্যে Server থেকে পাওয়া Password, Reset Password, Address Details, Ordering Process ইত্যাদির Data থাকে। যখন User Request পাঠায় তখন এই Data গুলো সাথে নিয়ে Request যায় Server এ। তখন Server User কে চিনতে পেরে সেই অনুযায়ী Response করে। এই Cookies এর কারণেই Auto-Password, Cart Details ইত্যাদি দেখা যায়।</p>
</blockquote>
</li>
</ol>
]]></content:encoded></item><item><title><![CDATA[We discuss basic routing]]></title><description><![CDATA[বেসিক রাউটিং
সফটওয়্যার আর্কিটেকচারে রাউট হচ্ছে মৌলিক উপাদান(Basic Component). রাউট URL(URL = Uniform Resource Locator)
থেকে অনুরোধ গ্রহণ করে এবং এপ্লিকেশনকে রিসোর্সের জন্য নির্দেশনা প্রদান করে। লারাভেলের রাউট সমূহ একই সাথে সুবিন্যস্ত করে রাখার জন্য r...]]></description><link>https://blog.shikhun.net/we-discuss-basic-routing</link><guid isPermaLink="true">https://blog.shikhun.net/we-discuss-basic-routing</guid><category><![CDATA[Basic Routes]]></category><dc:creator><![CDATA[Md Nazmul Hoque]]></dc:creator><pubDate>Thu, 01 Jun 2023 07:07:37 GMT</pubDate><content:encoded><![CDATA[<p>বেসিক রাউটিং</p>
<p>সফটওয়্যার আর্কিটেকচারে রাউট হচ্ছে মৌলিক উপাদান(Basic Component). রাউট URL(URL = Uniform Resource Locator)</p>
<p>থেকে অনুরোধ গ্রহণ করে এবং এপ্লিকেশনকে রিসোর্সের জন্য নির্দেশনা প্রদান করে। লারাভেলের রাউট সমূহ একই সাথে সুবিন্যস্ত করে রাখার জন্য routes/web.php তে লিখা হয়।</p>
<p>এর সবচেয়ে বড় সুবিধা হচ্ছে আপনি এক যায়গা থেকেই সমস্ত রাউটকে নিয়ন্ত্রণ করতে পারবেন অর্থাৎ পরবর্তিতে রাউট সম্পর্কিত যেকোনো ধরনের পরিবর্তন এখান থেকেই করতে পারবেন।</p>
<p>উদাহরণ হিসেবে একটি সাধারণ রাউট তুলে ধরা হল।</p>
<p>Route::get('/', function()</p>
<p>{</p>
<p>return view('hello');</p>
<p>}); উপরোক্ত উদাহরণে Route class এর get() মেথডকে কল করা হয়েছে। get() মেথডটি দুইটি আর্গুমেন্ট গ্রহণ করে। প্রথম আর্গুমেন্ট হিসেবে পাথ (URL Path) এবং দ্বিতীয় আর্গুমেন্ট হিসেবে ক্লোজার(Anonymous Function) যেমনঃ উপরোক্ত উদাহরণে প্রথম আর্গুমেন্ট হিসেবে ফরয়ার্ড স্লাশ / ব্যবহার করা হয়েছে যার দ্বারা রুট ডোমেইনকে নির্দেশ করা হচ্ছে। দ্বিতীয় আর্গুমেন্ট হিসেবে ক্লোজার ব্যবহার করা হয়েছে যার দ্বারা একশন সম্পাদিত হচ্ছে। অর্থাৎ উক্ত রাউটটি resources/views/hello.php ফাইলকে রিটার্ন করবে।</p>
<p>কি বিষয়টু একটু ঘোলা মনে হচ্ছে? সমস্যা নাই চলুন আমরা আর একটি উদাহরণের মাধ্যমে স্বচ্ছ ধারণা লাভ করি।</p>
<p>Route::get('books', function()</p>
<p>{</p>
<p>return 'Hey, I am laravel!';</p>
<p>});</p>
<p>এখন যদি আপনি ব্রাউজার এর Address Bar এ /books (<a target="_blank" href="http://localhost/your-project-name/books">http://localhost/your-project-name/books</a>) লিখে হিট করেন, তাহলে দেখতে পাবেন Hey, I am laravel!</p>
<p>অর্থাৎ get() মেথডটিতে প্রথম আর্গুমেন্ট হিসেবে books যা পাথ নির্দেশ করে এবং দ্বিতীয় আর্গুমেন্ট ক্লোজার যা দ্বারা কাঙ্ক্ষিত একশন সম্পাদিত হচ্ছে।</p>
<p>লারাভেলে রাউট মুলত দুই ভাবে লেখা যায়।</p>
<p>১) resource ডিফাইন করে রাউটারের উদাহরণঃ</p>
<p>Route::resource('users', 'UserController');</p>
<p>২) controller ডিফাইন করে রাউটারের উদাহরণঃ</p>
<p>Route::controller('users', 'UserController');</p>
<p>এ ক্ষেত্রে Controller class টি হবে।</p>
<p>class UserController extends BaseController {</p>
<p>public function getIndex()</p>
<p>{</p>
<p>return 'I am restful index';</p>
<p>}</p>
<p>}</p>
<p>নোট : এই দুই পদ্ধতি যথাযথভাবে কাজ করবে যদি আপনার Controller এবং Method সমূহ RESTful হয়। RESTful Controller সম্পর্কে এখান থেকে বিস্তারিত পড়ুন</p>
<p>অনুশীলনঃ কোন কিছু শেখার সময় হাতে কলমে করতে পারলে শেখাটা ভাল হয় তাই আমরা চেষ্টা করবো কিছু অনুশীলন করতে।</p>
<p>দ্বিতীয় অধ্যায়ে আমরা শিখেছিলাম লারাভেল ইন্সটল করতে, আসুন <a target="_blank" href="http://blog.app">blog.app</a> নামে একটি লারাভেল অ্যাাপ বানাই ও বেসিক রাউটিং অনুশীলন করি, পরবর্তীতে আমরা আরও নতুন নতুন জিনিস শিখবো ও এটাকে উন্নত করব।</p>
<p>আমাদের নিজস্ব এনভায়রনমেন্ট(htdocs, www etc.) এ যাই ও টার্মিনালে নিচের কমান্ড দেই</p>
<p>composer create-project laravel/laravel <a target="_blank" href="http://blog.app">blog.app</a> এই কমান্ড টি আমাদের ওয়ার্কিং ফোল্ডারে <a target="_blank" href="http://blog.app">blog.app</a> নামে একটি directory বানিয়ে তার ভিতরে লারাভেল এর যাবতীয় ফাইল ইন্টারনেট থেকে নামিয়ে নিবে।</p>
<p>আশাকরি ব্রাউজারে আপনি সাইটটি দেখতে পারছেন ।</p>
<p>আসুন নতুন রাউট বানাই ঃ</p>
<p>আমরা যদি routes/web.php ফাইলটি খুলি তাহলে এটা দেখবো</p>
<p>Route::get('/', function () { return view('welcome'); }); আসুন নতুন কিছু রুট বানাই এটাকে পরিবর্তন করে। এই মুহূর্তে আমরা সৌন্দর্যের কথা না ভেবে শুধু কার্যকরীটা দেখি।</p>
<p>Route::get('/', function () { return 'This is our home page.'; });</p>
<p>​ Route::get('/about', function () { return 'This is our about page.'; }); ​ Route::get('/contact', function () { return 'This is our contact page.'; }); ​</p>
<p>//Lets make some group route Route::group(['prefix' =&gt; 'admin'],</p>
<p>function () {</p>
<p>Route::get('/', function () { return 'This is our Admin Dashboard'; });</p>
<p>// this link: <a target="_blank" href="http://blog.app/admin/">blog.app/admin/</a> ​ Route::get('/user-list', function () {</p>
<p>return 'This is our Admin Dashboard user list page';</p>
<p>});</p>
<p>// this link: <a target="_blank" href="http://blog.app/admin/user-list">blog.app/admin/user-list</a></p>
<p>​ Route::get('/create-blog', function () {</p>
<p>return 'This is our Admin Dashboard create-blog page';</p>
<p>});</p>
<p>//// this link: <a target="_blank" href="http://blog.app/admin/create-blog">blog.app/admin/create-blog</a></p>
<p>});</p>
<p>এখানে নতুন হলো রুট গ্রুপ করা। 'prefix' ব্যবহার করে গ্রুপ তৈরি করেছি। আশা করি বুজতে পারছেন। এখন একটু কঠিন মনে হলেও পরবর্তী অধ্যায় করতে করতে সব আয়ত্তে এসে যাবে ।</p>
<p>পরবর্তী চ্যাপ্টারে ভিউ নিয়ে আলোচনা করা হবে।</p>
]]></content:encoded></item><item><title><![CDATA[Visual Studio Code এডিটর কি-বোর্ড শর্টকার্ট]]></title><description><![CDATA[এখন কোডিংয়ের স্পীড হবে রকেটের গতি যদি আপনি ব্লগটি পড়েন এবং শর্টকাট ব্যবহার করেন তাহলে চলুন শুরু করি।
Visual Studio Code এডিটর কি-বোর্ড শর্টকার্টঃ
MAC ও WINDOWS এর জন্য আলাদা কি-বোর্ড শর্টকাট নিচে দেওয়া হল-
Visual Studio Code এর কমান্ড পেলেট কিভাবে ওপ...]]></description><link>https://blog.shikhun.net/visual-studio-code-shortcut</link><guid isPermaLink="true">https://blog.shikhun.net/visual-studio-code-shortcut</guid><category><![CDATA[VS Code Shortcut]]></category><dc:creator><![CDATA[Mohammad Ullah]]></dc:creator><pubDate>Thu, 01 Jun 2023 07:07:17 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1673943400450/33902e18-9997-423f-9333-471980fac28b.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>এখন কোডিংয়ের স্পীড হবে রকেটের গতি যদি আপনি ব্লগটি পড়েন এবং শর্টকাট ব্যবহার করেন তাহলে চলুন শুরু করি।</p>
<p>Visual Studio Code এডিটর কি-বোর্ড শর্টকার্টঃ</p>
<p>MAC ও WINDOWS এর জন্য আলাদা কি-বোর্ড শর্টকাট নিচে দেওয়া হল-</p>
<p>Visual Studio Code এর কমান্ড পেলেট কিভাবে ওপেন করতে হয়-</p>
<table><tbody><tr><td><p>MAC</p></td><td><p>WINDOWS</p></td></tr><tr><td><p>COMMAND+SHIFT+P</p></td><td><p>CTRL+SHIFT+P</p></td></tr></tbody></table>

<p>Visual Studio Code এর file কমান্ড পেলেট কিভাবে ওপেন করতে হয়-</p>
<p>কোডিং এর মধ্যে আপনি যদি কোন file খুঁজতে চান সেক্ষেত্রে আপনি যে শর্টকার্টটি ব্যবহার করবেন-</p>
<table><tbody><tr><td><p>MAC</p></td><td><p>WINDOWS</p></td></tr><tr><td><p>COMMAND+P</p></td><td><p>CTRL+P</p></td></tr></tbody></table>

<p>Visual Studio Code এ কিভাবে নতুন Tab ওপেন করতে হয়-</p>
<table><tbody><tr><td><p>MAC</p></td><td><p>WINDOWS</p></td></tr><tr><td><p>COMMAND+N</p></td><td><p>CTRL+N</p></td></tr></tbody></table>

<p>Visual Studio Code এ কিভাবে নতুন Tab বন্ধ করতে হয়-</p>
<table><tbody><tr><td><p>MAC</p></td><td><p>WINDOWS</p></td></tr><tr><td><p>COMMAND+W</p></td><td><p>CTRL+W</p></td></tr></tbody></table>

<p>Visual Studio Code এ recently close করা Tab কিভাবে re-open করতে হয়-</p>
<table><tbody><tr><td><p>MAC</p></td><td><p>WINDOWS</p></td></tr><tr><td><p>COMMAND+SHIFT+T</p></td><td><p>CTRL+SHIFT+T</p></td></tr></tbody></table>

<p>Visual Studio Code এ Tab এর মধ্যে কিভাবে switch করতে হয়-</p>
<table><tbody><tr><td><p>MAC</p></td><td><p>WINDOWS</p></td></tr><tr><td><p>COMMAND+TAB</p></td><td><p>CTRL+TAB</p></td></tr></tbody></table>

<p>Visual Studio Code এ কিভাবে কোন একটা নির্দিষ্ট লাইনে যেতে হয়-</p>
<p>          ধরুন আপনি ১২ নাম্বার লাইনে যেতে চান তাহলে আপনি CTRL+G দিয়ে ১২ চেপে ENTER চাপুন</p>
<table><tbody><tr><td><p>MAC</p></td><td><p>WINDOWS</p></td></tr><tr><td><p>COMMAND+G</p></td><td><p>CTRL+G</p></td></tr></tbody></table>

<p>Visual Studio Code এ বাম পাশে যে explorer section আছে সেটা show এবং hide করতে চাইলে-</p>
<table><tbody><tr><td><p>MAC</p></td><td><p>WINDOWS</p></td></tr><tr><td><p>COMMAND+G</p></td><td><p>CTRL+G</p></td></tr></tbody></table>

<p>Visual Studio Code এ কিভাবে multiple curcer নিয়ে কাজ করা যায়-</p>
<table><tbody><tr><td><p>MAC</p></td><td><p>WINDOWS</p></td></tr><tr><td><p>COMMAND+SHIFT+L</p></td><td><p>CTRL+SHIFT+L</p></td></tr></tbody></table>

<p>Visual Studio Code এ একটা word কে কি-বোর্ড শর্টকার্ট এর মাধ্যমে কিভাবে find এবং replase  করা যায়-</p>
<table><tbody><tr><td><p>MAC</p></td><td><p>WINDOWS</p></td></tr><tr><td><p>COMMAND+OPTION+F</p></td><td><p>CTRL+H</p></td></tr></tbody></table>

<p>Visual Studio Code এ terminal open করার জন্য কি-বোর্ড শর্টকার্ট হল-</p>
<table><tbody><tr><td><p>MAC</p></td><td><p>WINDOWS</p></td></tr><tr><td><p>COMMAND+,</p></td><td><p>CTRL+,</p></td></tr></tbody></table>

<p>Visual Studio Code এ file এর লাইনের শুরুতে যেতে হলে-</p>
<table><tbody><tr><td><p>MAC</p></td><td><p>WINDOWS</p></td></tr><tr><td><p>COMMAND+ (←)</p></td><td><p>HOME</p></td></tr></tbody></table>

<p>Visual Studio Code এ file এর লাইনের শেষে যেতে হলে-</p>
<table><tbody><tr><td><p>MAC</p></td><td><p>WINDOWS</p></td></tr><tr><td><p>COMMAND+(→)</p></td><td><p>END</p></td></tr></tbody></table>

<p>Visual Studio Code এ আপনি যদি প্রতিটা word by word যেতে চান-</p>
<table><tbody><tr><td><p>MAC</p></td><td><p>WINDOWS</p></td></tr><tr><td><p>OPTION+(→/←)</p></td><td><p>CTRL+(→/←)</p></td></tr></tbody></table>

<p>Visual Studio Code এ একদম file এর শুরুতে যেতে হলে-</p>
<table><tbody><tr><td><p>MAC</p></td><td><p>WINDOWS</p></td></tr><tr><td><p>COMMAND+ (↑)</p></td><td><p>CTRL+CHOME</p></td></tr></tbody></table>

<p>Visual Studio Code এ একদম file এর শেষে যেতে হলে-</p>
<table><tbody><tr><td><p>MAC</p></td><td><p>WINDOWS</p></td></tr><tr><td><p>COMMAND+(↓)</p></td><td><p>CTRL+END</p></td></tr></tbody></table>

<pre><code class="lang-plaintext">VS code এর অফিসিয়াল ওয়েবসাইটে কি-বোর্ড শর্টকার্ট এর একটি চিটশীট পাওয়া যায়: লিঙ্ক নিচে দেওয়া হল
</code></pre>
<p>Visual Studio Code Shortcut Cheatsheet for MacOS:</p>
<p><a target="_blank" href="http://shorturl.at/gsGU6"><strong>shorturl.at/gsGU6</strong></a></p>
<p>Visual Studio Code Shortcut Cheatsheet for Windows:</p>
<p><a target="_blank" href="http://shorturl.at/mry38"><strong>shorturl.at/mry38</strong></a></p>
<p>consol.log এর কি-বোর্ড শর্টকার্ট:</p>
<p>এটা একটা pluggin তাই এটা MacOS এবং Windows এ একই রকম।</p>
<table><tbody><tr><td><p>MAC</p></td><td><p>WINDOWS</p></td></tr><tr><td><p>CONTROL+OPTION+L</p></td><td><p>CTRL+ALT+L</p></td></tr></tbody></table>

<p>consol.log দেওয়ার পর আবার যদি delete করার প্রয়োজন হয় তাহলে</p>
<table><tbody><tr><td><p>MAC</p></td><td><p>WINDOWS</p></td></tr><tr><td><p>SHIFT+OPTION+D</p></td><td><p>SHIFT+ALT+D</p></td></tr></tbody></table>

<p>consol.log যদি comment করার প্রয়োজন হয় তাহলে</p>
<table><tbody><tr><td><p>MAC</p></td><td><p>WINDOWS</p></td></tr><tr><td><p>SHIFT+OPTION+C</p></td><td><p>SHIFT+ALT+C</p></td></tr></tbody></table>

<p>consol.log যদি uncomment করার প্রয়োজন হয় তাহলে</p>
<table><tbody><tr><td><p>MAC</p></td><td><p>WINDOWS</p></td></tr><tr><td><p>SHIFT+OPTION+U</p></td><td><p>SHIFT+ALT+U</p></td></tr></tbody></table>]]></content:encoded></item><item><title><![CDATA[WordPress Support Engineer Input Field And Form]]></title><description><![CDATA[আজকে আমরা আলোচনা করব আমাদের WordPress Support Engineer Course এর ক্লাস ২ নিয়ে এবং আমাদের টপিক হলো html input fields.
ইনপুট ফিল্ডে বিভিন্ন রকম টাইপ রয়েছে এর মধ্যে default html,html-5,iput type="text" ইত্যাদি।
তো চলুন শুরু করি ।প্রথমেই আমরা আলোচনা করব ...]]></description><link>https://blog.shikhun.net/wordpress-support-engineer-input-field-and-form</link><guid isPermaLink="true">https://blog.shikhun.net/wordpress-support-engineer-input-field-and-form</guid><category><![CDATA[HTML5]]></category><category><![CDATA[Input]]></category><category><![CDATA[Input-fields]]></category><dc:creator><![CDATA[Rakibul Islam]]></dc:creator><pubDate>Sun, 07 May 2023 09:22:02 GMT</pubDate><content:encoded><![CDATA[<h2 id="heading-wordpress-support-engineer-course-html-input-fields">আজকে আমরা আলোচনা করব আমাদের WordPress Support Engineer Course এর ক্লাস ২ নিয়ে এবং আমাদের টপিক হলো html input fields.</h2>
<p>ইনপুট ফিল্ডে বিভিন্ন রকম টাইপ রয়েছে এর মধ্যে default html,html-5,iput type="text" ইত্যাদি।</p>
<p>তো চলুন শুরু করি ।প্রথমেই আমরা আলোচনা করব ডিফল্ট html input field type="text" নিয়ে।</p>
<p><strong>সিম্পল ভাবে আমরা এখানে type="text" দিলে এটা সাধারন লেখার মত আচরন করবে।এই টাইপের ওপর ভিত্তি করেই ইনপুট ফিল্ডের বিভিন্ন রকম ব্যাবহার হয়ে থাকে। আমরা বিভিন্ন রকম ইনপুট ফিল্ড গুলোর লিস্ট দেখি।</strong></p>
<pre><code class="lang-haml">&lt;center&gt;
    &lt;h2&gt;WordPress Support Engineer Input Field And Form&lt;/h2&gt;

    1. &lt;h1&gt;Input type text&lt;/h1&gt;
    &lt;input type="text"&gt;:
    &lt;form&gt;  
        &lt;label&gt;Enter first name&lt;/label&gt;&lt;br&gt;  
        &lt;input type="text" name="firstname"&gt;&lt;br&gt;  
        &lt;label&gt;Enter last name&lt;/label&gt;&lt;br&gt;  
        &lt;input type="text" name="lastname"&gt;&lt;br&gt;  
        &lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;The default maximum cahracter lenght is 20.&lt;/p&gt;  
    &lt;/form&gt;  



2.&lt;h1&gt;Input type Password&lt;/h1&gt;
 &lt;input type="password"&gt;:

&lt;form&gt;  
    &lt;label&gt;Enter User name&lt;/label&gt;&lt;br&gt;  
    &lt;input type="text" name="firstname"&gt;&lt;br&gt;  
    &lt;label&gt;Enter Password&lt;/label&gt;&lt;br&gt;  
    &lt;input type="Password" name="password"&gt;&lt;br&gt;  
    &lt;br&gt;&lt;input type="submit" value="submit"&gt;  
&lt;/form&gt;  


3. &lt;h1&gt;Input type Submit&lt;/h1&gt;
&lt;input type="submit"&gt;:
&lt;form action="https://www.javatpoint.com/html-tutorial"&gt;  
    &lt;label&gt;Enter User name&lt;/label&gt;&lt;br&gt;  
    &lt;input type="text" name="firstname"&gt;&lt;br&gt;  
    &lt;label&gt;Enter Password&lt;/label&gt;&lt;br&gt;  
    &lt;input type="Password" name="password"&gt;&lt;br&gt;  
    &lt;br&gt;&lt;input type="submit" value="submit"&gt;  
&lt;/form&gt;  

&lt;h1&gt;Input type reset&lt;/h1&gt;
4. &lt;input type="reset"&gt;:
&lt;form&gt;  
    &lt;label&gt;User id: &lt;/label&gt;  
     &lt;input type="text" name="user-id" value="user"&gt;  
              &lt;label&gt;Password: &lt;/label&gt;  
     &lt;input type="password" name="pass" value="pass"&gt;&lt;br&gt;&lt;br&gt;   
     &lt;input type="submit" value="login"&gt;  
      &lt;input type="reset" value="Reset"&gt;  
&lt;/form&gt;  

5.&lt;h1&gt;Input type radio&lt;/h1&gt;
 &lt;input type="radio"&gt;:
&lt;form&gt;  
    &lt;p&gt;Kindly Select your favorite color&lt;/p&gt;  
    &lt;input type="radio" name="color" value="red"&gt; Red &lt;br&gt;  
    &lt;input type="radio" name="color" value="blue"&gt; blue &lt;br&gt;  
    &lt;input type="radio" name="color" value="green"&gt;green &lt;br&gt;  
    &lt;input type="radio" name="color" value="pink"&gt;pink &lt;br&gt;  
    &lt;input type="submit" value="submit"&gt;  
  &lt;/form&gt;  


  6.&lt;h1&gt;Input type checkbox&lt;/h1&gt;
   &lt;input type="checkbox"&gt;:&lt;form&gt;   
    &lt;label&gt;Enter your Name:&lt;/label&gt;  
    &lt;input type="text" name="name"&gt;  
    &lt;p&gt;Kindly Select your favourite sports&lt;/p&gt;  
    &lt;input type="checkbox" name="sport1" value="cricket"&gt;Cricket&lt;br&gt;  
    &lt;input type="checkbox" name="sport2" value="tennis"&gt;Tennis&lt;br&gt;  
    &lt;input type="checkbox" name="sport3" value="football"&gt;Football&lt;br&gt;  
    &lt;input type="checkbox" name="sport4" value="baseball"&gt;Baseball&lt;br&gt;  
    &lt;input type="checkbox" name="sport5" value="badminton"&gt;Badminton&lt;br&gt;&lt;br&gt;  
    &lt;input type="submit" value="submit"&gt;  
&lt;/form&gt;  


7. &lt;h1&gt;Input type Button&lt;/h1&gt;
&lt;input type="button"&gt;:
&lt;form&gt;  
    &lt;input type="button" value="Clcik me " onclick="alert('you are learning HTML')"&gt;  
&lt;/form&gt;

8. &lt;h1&gt;Input type file&lt;/h1&gt;
&lt;input type="file"&gt;:

&lt;form&gt;  
    &lt;label&gt;Select file to upload:&lt;/label&gt;  
    &lt;input type="file" name="newfile"&gt;  
    &lt;input type="submit" value="submit"&gt;  
&lt;/form&gt;  


9.&lt;h1&gt;Input type image&lt;/h1&gt;
 &lt;input type="image"&gt;:

&lt;h2&gt;Input "image" type.&lt;/h2&gt;  
&lt;p&gt;We can create an image as submit button&lt;/p&gt;  
  &lt;form&gt;  
    &lt;label&gt;User id:&lt;/label&gt;&lt;br&gt;  
     &lt;input type="text" name="name"&gt;&lt;br&gt;&lt;br&gt;  
     &lt;input type="image" alt="Submit" src="login.png"  width="100px"&gt;  
  &lt;/form&gt;  


  1. &lt;h1&gt;Input type color&lt;/h1&gt;
  &lt;input type="color"&gt;:
  &lt;form&gt;  
    Pick your Favorite color: &lt;br&gt;&lt;br&gt;  
    &lt;input type="color" name="upclick" value="#a52a2a"&gt; Upclick&lt;br&gt;&lt;br&gt;  
    &lt;input type="color" name="downclick" value="#f5f5dc"&gt; Downclick  
&lt;/form&gt;  


2. &lt;h1&gt;Input type date&lt;/h1&gt;
&lt;input type="date"&gt;:
&lt;form&gt;  
    Select Start and End Date: &lt;br&gt;&lt;br&gt;  
      &lt;input type="date" name="Startdate"&gt; Start date:&lt;br&gt;&lt;br&gt;  
      &lt;input type="date" name="Enddate"&gt; End date:&lt;br&gt;&lt;br&gt;  
     &lt;input type="submit"&gt;  
&lt;/form&gt;  

3. &lt;h1&gt;Input type datetime-local&lt;/h1&gt;
&lt;input type="datetime-local"&gt;:
&lt;form&gt;  
    &lt;label&gt;  
      Select the meeting schedule: &lt;br&gt;&lt;br&gt;  
      Select date &amp; time: &lt;input type="datetime-local" name="meetingdate"&gt; &lt;br&gt;&lt;br&gt;  
    &lt;/label&gt;  
      &lt;input type="submit"&gt;  
&lt;/form&gt;  

4. &lt;h1&gt;Input type email&lt;/h1&gt;
&lt;input type="email"&gt;:
&lt;form&gt;  
    &lt;label&gt;&lt;b&gt;Enter your Email-address&lt;/b&gt;&lt;/label&gt;  
   &lt;input type="email" name="email" required&gt;  
   &lt;input type="submit"&gt;  
    &lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;User can also enter multiple email addresses separating by comma or whitespace as following: &lt;/p&gt;  
    &lt;label&gt;&lt;b&gt;Enter multiple Email-addresses&lt;/b&gt;&lt;/label&gt;  
    &lt;input type="email" name="email"  multiple&gt;  
   &lt;input type="submit"&gt;  
&lt;/form&gt;     

5. &lt;h1&gt;Input type month&lt;/h1&gt;
&lt;input type="month"&gt;:

&lt;form&gt;  
    &lt;label&gt;Enter your Birth Month-year: &lt;/label&gt;  
    &lt;input type="month" name="newMonth"&gt;  
    &lt;input type="submit"&gt;  
&lt;/form&gt;  

6.&lt;h1&gt;Input type Number&lt;/h1&gt;
 &lt;input type="number"&gt;:
&lt;form&gt;  
    &lt;label&gt;Enter your age: &lt;/label&gt;  
    &lt;input type="number" name="num" min="50" max="80"&gt;  
     &lt;input type="submit"&gt;  
&lt;/form&gt;  

7. &lt;h1&gt;Input type url&lt;/h1&gt;
&lt;input type="url"&gt;:
&lt;form&gt;  
    &lt;label&gt;Enter your website URL: &lt;/label&gt;  
    &lt;input type="url" name="website" placeholder="http://example.com"&gt;&lt;br&gt;  
    &lt;input type="submit" value="send data"&gt;  
&lt;/form&gt;  

8. &lt;h1&gt;Input type week&lt;/h1&gt;
&lt;input type="week"&gt;:
&lt;form&gt;  
    &lt;label&gt;&lt;b&gt;Select your best week of year:&lt;/b&gt;&lt;/label&gt;&lt;br&gt;&lt;br&gt;  
    &lt;input type="week" name="bestweek"&gt;  
    &lt;input type="submit" value="Send data"&gt;  
 &lt;/form&gt;  

 9. &lt;h1&gt;Input type search&lt;/h1&gt;
 &lt;input type="search"&gt;:
 &lt;form&gt;  
    &lt;label&gt;Search here:&lt;/label&gt;  
    &lt;input type="search" name="q"&gt;  
    &lt;input type="submit" value="search"&gt;  
&lt;/form&gt; 

10.&lt;h1&gt;Input type tel&lt;/h1&gt;
 &lt;input type="tel"&gt;:
&lt;form&gt;  
    &lt;label&gt;&lt;b&gt;Enter your Telephone Number(in format of xxx-xxx-xxxx):&lt;/b&gt;&lt;/label&gt;  
    &lt;input type="tel" name="telephone" pattern="[0-9]{3}-[0-9]{3}-[0-9]{4}" required&gt;  
    &lt;input type="submit"&gt;&lt;br&gt;&lt;br&gt;  
 &lt;/form&gt;  

&lt;/center&gt;
</code></pre>
]]></content:encoded></item><item><title><![CDATA[Tailwind Css CLI ব্যাক্ষ্যা সহ Install প্রসেস]]></title><description><![CDATA[সবার প্রথমে আমাদের একটা Directory বানাতে হবে। আপনার Project এর নাম দিয়ে একটি Directory বানিয়ে ফেলুন। এরপর যেকোনো একটা Terminal ব্যবহার করে এই Directory তে ঢুকুন।

npm install -D tailwindcss autoprefixer vite এই কমান্ড Terminal-এ দিবো। এক্সট্রা হিসেবে...]]></description><link>https://blog.shikhun.net/tailwind-css-cli-install</link><guid isPermaLink="true">https://blog.shikhun.net/tailwind-css-cli-install</guid><category><![CDATA[Tailwind CSS]]></category><dc:creator><![CDATA[Abdullah Al Shamim]]></dc:creator><pubDate>Mon, 03 Apr 2023 14:34:02 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1680532327200/1b78aa23-7a1a-4e7b-8103-e5e15d8ae327.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<ul>
<li><p>সবার প্রথমে আমাদের একটা Directory বানাতে হবে। আপনার Project এর নাম দিয়ে একটি Directory বানিয়ে ফেলুন। এরপর যেকোনো একটা Terminal ব্যবহার করে এই Directory তে ঢুকুন।</p>
</li>
<li><p><code>npm install -D tailwindcss autoprefixer vite</code> এই কমান্ড Terminal-এ দিবো। এক্সট্রা হিসেবে <code>autoprefixer</code> ও <code>vite</code> আছে। এই <code>autoprefixer</code> ব্যবহার করেছি যেনো যেকোনো Browser এ সব <code>css</code> কাজ করে। আর <code>vite</code> ব্যবহার করেছি <strong>Live Server</strong> জন্য। আর ভবিষ্যতে Build করার জন্যও এটা দরকার পড়বে।</p>
</li>
<li><p><code>npx tailwindcss init</code> এই কমান্ড Terminal-এ ব্যবহার করবো <code>tailwind.config.js</code> ফাইল তৈরি হওয়ার জন্য। আর এই ফাইলের ভিতরে আমরা নিচের কোডগুলো লিখে দিব…</p>
</li>
</ul>
<pre><code class="lang-jsx"><span class="hljs-comment">/** <span class="hljs-doctag">@type <span class="hljs-type">{import('tailwindcss').Config}</span> </span>*/</span>
<span class="hljs-built_in">module</span>.exports = {
  <span class="hljs-attr">content</span>: [<span class="hljs-string">"*"</span>],
  <span class="hljs-attr">theme</span>: {
    <span class="hljs-attr">extend</span>: {},
  },
  <span class="hljs-attr">plugins</span>: [],
}
</code></pre>
<p>💡 এইখানের content এর ভিতরে *(Star) চিহ্ন দিয়ে বোঝানো হয়েছে যে এই Directory-র ভিতরে যেখানে Tailwind CSS ব্যবহার করা হবে সেখান থেকেই যেনো কাজ করে। আলাদা ভাবে Path বা <code>html/css</code> ফাইলও চিনিয়ে দেওয়া যায়।</p>
<ul>
<li>এরপর Directory তে একটা <code>src</code> নামে ফোল্ডার বানাবো। <code>src</code> ফোল্ডারের ভিতরে <code>tailwind.css</code> নামে একটা ফাইল নিব। আর এই ফাইলের ভিতরে নিচের কোড দিয়ে দিব…</li>
</ul>
<pre><code class="lang-css"><span class="hljs-keyword">@tailwind</span> base;
<span class="hljs-keyword">@tailwind</span> components;
<span class="hljs-keyword">@tailwind</span> utilities;
</code></pre>
<ul>
<li>এবার <code>package.json</code> ফাইলে চলে যাবো এবং নিচের কোডটা <code>devDependencies</code> এর নিচে দিয়ে দিবো…</li>
</ul>
<pre><code class="lang-jsx">,
  <span class="hljs-string">"scripts"</span>: {
    <span class="hljs-string">"dev"</span>: <span class="hljs-string">"npx tailwindcss -i ./src/tailwind.css -o ./output/style.css --minify --watch"</span>,
        <span class="hljs-string">"build"</span>: <span class="hljs-string">"vite"</span>
  }
</code></pre>
<p>💡 এখানে <code>"dev"</code> এর ভিতরের কোডটা ব্যবহার করবো বিভিন্ন জায়গার <code>css</code> প্রসেস করে এক জায়গায় এনে <code>Output</code> দিয়ে দেওয়ার জন্য। এটাই হবে Directory-র মূল <code>css</code> ফাইল।</p>
<p>এখানে <code>-i</code> দিয়ে বোঝানো হয়েছে কোন ফাইলটা <code>input</code> হিসেবে কাজ করবে আর <code>-o</code> দিয়ে বোঝানো হয়েছে <code>output</code> হিসেবে কোথায় যাবে। যে নামের ফাইল বানানো হবে সেই নামই এখানে দিয়ে দিতে হবে। <code>--minify</code> ফ্ল্যাগ ব্যবহার করা হয়েছে যেন আমাদের <code>css</code> ফাইলটার জায়গা কম লাগে আর <code>--watch</code> ফ্ল্যাগ হলো আমরা যদি কোনো ফাইলে পরিবর্তন করি তাহলে <strong>Live Server</strong> এ তা সাথে সাথে আপডেট হয়ে যাবে।</p>
<p>আর <code>“build”</code> এর ভিতরের <code>vite</code> দিয়ে আমাদের প্রজেক্টের <strong>Live Server</strong> চালু করা যাবে।</p>
<p>এই <code>"dev"</code> এবং <code>“build”</code> পরবর্তিতে Terminal এ ব্যবহার করবো। এগুলো আপনি চাইলে নাম হিসেবে যে কোনো কিছু দিতে পারেন।</p>
<ul>
<li>এবার Directory-র যেকোনো জায়গায় একটা <code>index.html</code> ফাইল বানাবো আর নিচের কোডটা দিয়ে দিব…</li>
</ul>
<pre><code class="lang-xml"><span class="hljs-meta">&lt;!doctype <span class="hljs-meta-keyword">html</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">html</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">head</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">charset</span>=<span class="hljs-string">"UTF-8"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"viewport"</span> <span class="hljs-attr">content</span>=<span class="hljs-string">"width=device-width, initial-scale=1.0"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">link</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"/output/style.css"</span> <span class="hljs-attr">rel</span>=<span class="hljs-string">"stylesheet"</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">head</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">body</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">h1</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"text-3xl font-bold underline"</span>&gt;</span>Hello From SHAMIM<span class="hljs-tag">&lt;/<span class="hljs-name">h1</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">body</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">html</span>&gt;</span>
</code></pre>
<p>💡 এই <code>html</code> ফাইলে আমরা ৫ নম্বর স্টেপে একটা <code>css</code> ফাইল বানিয়েছি, এটা মূল <code>css</code> ফাইল। এই <code>css</code> ফাইলটা ওইখানে <strong>Link</strong> করিয়ে দিতে হবে।</p>
<ul>
<li>সর্বশেষ Terminal-এ <code>npm run dev</code> কমান্ড দিলে আমাদের প্রসেস করে একটা Output <code>css</code> ফাইল বানিয়ে দিবে। এবার Terminal-এ নতুন আর একটা Tab নিব এবং <code>npm run build</code> কমান্ড দিব, তাহলে একটা <strong>Server Link</strong> তৈরি হবে। সেখানে গেলেই আমরা আমাদের <strong>Tailwind CSS</strong> এর <strong>Output</strong> দেখতে পারবো। ধন্যবাদ।</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[কিভাবে ইলেমেন্টর কাস্টম উইজেড ডেভেলপ করতে হয়?]]></title><description><![CDATA[আজকে থেকে আমরা এলেমেন্টর এর widget development নিয়ে শিখব কিভাবে এটা register করতে হয় । এর বিভিন্ন Settings এবং এটা আমরা কখন কিভাবে ব্যাবহার করব সে বিষয় নিয়ে বিস্তারিত শেখা এবং জানার চেষ্টা করব।
এর জন্য প্রথমেই আমাদের যেটার প্রয়োজন হবে সেটা হলো প্রথমে...]]></description><link>https://blog.shikhun.net/how-to-develop-elementor-custom-widget</link><guid isPermaLink="true">https://blog.shikhun.net/how-to-develop-elementor-custom-widget</guid><category><![CDATA[WordPress]]></category><category><![CDATA[Elementor]]></category><category><![CDATA[wordpress plugins]]></category><dc:creator><![CDATA[Rakibul Islam]]></dc:creator><pubDate>Fri, 17 Mar 2023 17:01:32 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1679072357760/e1cbb147-5aad-45a4-b25d-6caa3c7facff.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-widget-development-register-settings">আজকে থেকে আমরা এলেমেন্টর এর widget development নিয়ে শিখব কিভাবে এটা register করতে হয় । এর বিভিন্ন Settings এবং এটা আমরা কখন কিভাবে ব্যাবহার করব সে বিষয় নিয়ে বিস্তারিত শেখা এবং জানার চেষ্টা করব।</h2>
<p>এর জন্য প্রথমেই আমাদের যেটার প্রয়োজন হবে সেটা হলো প্রথমেই আপনার ইলেমেন্টর plugins টা আপনার wordpress plugins folder এর মধ্যে install করা থাকতে হবে।</p>
<p>এরপর প্রথম কাজ plugin folder এর মধ্যেই আরেকটা ফোল্ডার তৈরি করবেন যার নাম দিবেন elementor-addon এরপর এর মধ্যে একটা ফাইল তৈরি করবেন যেখানে আপনার addon টা register করবেন। ফাইল টার নাম দিবেন elementor-addon.php</p>
<p>এবার আপনার ফাইলের মধ্যে আপনার যে কয়টা widgets লাগবে সে গুলো register করতে পারেন তবে এখানে প্রথমেই আপনাকে আরেকটা প্লাগিনের structure follow করতে হবে। মানে একটা প্লাগিন বানিয়ে সেটা কে active করতে হবে।</p>
<p>তারমানে widget development করতে হলে আপনাকে wordpress theme development ,plugin development সম্পর্কে ভাল ধারনা থাকতে হবে। তো একটা প্লগিন বা থিম এর header লিখে ফেলি।</p>
<pre><code class="lang-php"><span class="hljs-meta">&lt;?php</span>
<span class="hljs-comment">/**
 * Plugin Name: Elementor Addon
 * Description: Simple my custom widgets for Elementor.
 * Version:     1.0.0
 * Author:      Rakibul Islam
 * Author URI:  http://rakibulislam33.github.io/
 * Text Domain: elementor-addon
 */</span>
</code></pre>
<p>এবার আপনার কাজ হলো আপনার custom widgets কে এখানে register করা ।</p>
<pre><code class="lang-php"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">register_my_custom_widget</span>(<span class="hljs-params"> $widgets_manager </span>) </span>{

    <span class="hljs-keyword">require_once</span>( <span class="hljs-keyword">__DIR__</span> . <span class="hljs-string">'/widgets/my-custom-widget-1.php'</span> );<span class="hljs-comment">//আপনার উইজেড এর ফাইল এখানে দেখিয়ে দিতে হবে ।</span>

    $widgets_manager-&gt;register( <span class="hljs-keyword">new</span> \Elementor_My_Custom_Widget_1() ); <span class="hljs-comment">//যে নামে এখানে আপনার উইজেড এখানে রেজিস্টার করা হলো সেটাই আপনার উইজেড ফাইলের ক্লাস নাম হবে ।</span>
}
add_action( <span class="hljs-string">'elementor/widgets/register'</span>, register_my_custom_widget);
</code></pre>
<p>এবার আমার আপনার পরিচিত সেই action হুক এর মাধ্যমে সেটাকে add করে দিব।</p>
<p>এবার আপনার উইজেড ফাইলের মধ্যে এবার আপনার প্রয়োজনীয় কোড গুলো লিখবেন এবং এর জন্য প্রথমেই যেটা প্রয়োজন হবে সেটা হলো একটা php block নিয়ে এর মধ্যে একটা ক্লাস নাম দিতে হবে কারন হলো যেহেতু আপনি elementor এর ই একটা functionality extend করছেন এবং elementor এর সব কিছুই object oriented follow করে তাই elementor এর কাস্টম ক্লাস কে extend করে নতুন functionality add করতে হয় । তবে ক্লাস নাম দেওয়ার সময় অবশ্যয় একটা জিনিষ মনে রাখবেন সেটা হলো ক্যামেল ক্যাস ফলো করে লিখবেন।</p>
<p><strong>চলুন নিচে তার উদাহরন দেখে নেই।</strong></p>
<pre><code class="lang-php"><span class="hljs-meta">&lt;?php</span>
<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Elementor_My_Custom_Widget_1</span> <span class="hljs-keyword">extends</span> \<span class="hljs-title">Elementor</span>\<span class="hljs-title">Widget_Base</span> </span>{

}
</code></pre>
<p>আমাদের একটা ক্লাসের নাম লিখে elementor এর ক্লাস কে extends করেছি এবার আমাদের প্রয়োজনীয় function গুলো লিখতে হবে এক্ষেত্রে elementor এর default একটা structure আছে আমাদের সেই অনুযায়ী কোড গুলো লিখতে হবে যেমন কোন abstract use করেছে কি না , কি কি মেথড ব্যাবহার করেছে সব গুলো আমাদের সেই structure follow করে আগাতে হবে।</p>
<p>তো এর পরেই আমাদের একটা নাম দিতে হবে।</p>
<pre><code class="lang-php">    <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">get_name</span>(<span class="hljs-params"></span>) </span>{
        <span class="hljs-keyword">return</span> <span class="hljs-string">'My_Custom_widget_1'</span>;
    }
</code></pre>
<p>এরপরে আমাদের উইজেড এর টাইটেল টা লিখব। এবং সেটা translate করে দিব text-domain এর মাধ্যমে।</p>
<pre><code class="lang-php">    <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">get_title</span>(<span class="hljs-params"></span>) </span>{
        <span class="hljs-keyword">return</span> esc_html__( <span class="hljs-string">'Hello World 1'</span>, <span class="hljs-string">'elementor-addon'</span> );
    }
</code></pre>
<p>এর পরে আমাদের প্রয়োজন হবে আমাদের উইজেড এর আইকনের ।</p>
<pre><code class="lang-php">    <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">get_icon</span>(<span class="hljs-params"></span>) </span>{
        <span class="hljs-keyword">return</span> <span class="hljs-string">'eicon-code'</span>;
    }
</code></pre>
<p>এর পরে আমাদের প্রয়োজন হবে আমাদের উইজেড টা কোথায় কিসের মধ্যে থাকবে সেটা ডিফাইন করা যেমনঃ- basic,pro,etc</p>
<pre><code class="lang-php">    <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">get_categories</span>(<span class="hljs-params"></span>) </span>{
        <span class="hljs-keyword">return</span> [ <span class="hljs-string">'basic'</span> ];
    }
</code></pre>
<p>এরপর আমাদের প্রয়োজন হবে আমাদের উইজেড টা সহজেই খুজে পাওয়ার জন্য আমরা search করব। এবং এর জন্য প্রয়োজন হবে keywords তাই আমরা keywords গুলো দিব।</p>
<pre><code class="lang-php">    <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">get_keywords</span>(<span class="hljs-params"></span>) </span>{
        <span class="hljs-keyword">return</span> [ <span class="hljs-string">'hello'</span>, <span class="hljs-string">'world'</span> ];
    }
</code></pre>
<p>এবং finally আমরা আমাদের ডিফল্ট text যেটা আমাদের উইজেড drag করে আনার সময় থাকবে সেটা দিয়ে দিব।</p>
<pre><code class="lang-php">    <span class="hljs-keyword">protected</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">render</span>(<span class="hljs-params"></span>) </span>{
        <span class="hljs-meta">?&gt;</span>

        &lt;p&gt; this is my custom title &lt;/p&gt;

        <span class="hljs-meta">&lt;?php</span>
    }
</code></pre>
<p>ব্যাস আমাদের প্রাথমিক উইজেড বানানো complete আমরা যদি এখন elementor এ গিয়ে search করি তাহলে আমরা আমাদের উইজেড কে দেখতে পাব।</p>
<p><strong>নিচে উইজেড এর পুরো কোড টা দেওয়া হলোঃ-</strong></p>
<pre><code class="lang-php"><span class="hljs-meta">&lt;?php</span>
<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Elementor_My_Custom_Widget_1</span> <span class="hljs-keyword">extends</span> \<span class="hljs-title">Elementor</span>\<span class="hljs-title">Widget_Base</span> </span>{

    <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">get_name</span>(<span class="hljs-params"></span>) </span>{
        <span class="hljs-keyword">return</span> <span class="hljs-string">'My_Custom_widget_1'</span>;
    }

    <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">get_title</span>(<span class="hljs-params"></span>) </span>{
        <span class="hljs-keyword">return</span> esc_html__( <span class="hljs-string">'Hello World 1'</span>, <span class="hljs-string">'elementor-addon'</span> );
    }

    <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">get_icon</span>(<span class="hljs-params"></span>) </span>{
        <span class="hljs-keyword">return</span> <span class="hljs-string">'eicon-code'</span>;
    }

    <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">get_categories</span>(<span class="hljs-params"></span>) </span>{
        <span class="hljs-keyword">return</span> [ <span class="hljs-string">'basic'</span> ];
    }

    <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">get_keywords</span>(<span class="hljs-params"></span>) </span>{
        <span class="hljs-keyword">return</span> [ <span class="hljs-string">'hello'</span>, <span class="hljs-string">'world'</span> ];
    }

    <span class="hljs-keyword">protected</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">render</span>(<span class="hljs-params"></span>) </span>{
        <span class="hljs-meta">?&gt;</span>

        &lt;p&gt; this is my custom title &lt;/p&gt;

        <span class="hljs-meta">&lt;?php</span>
    }


}
</code></pre>
<p>Follow me on Facebook: <a target="_blank" href="https://www.facebook.com/rakibuli33">https://www.facebook.com/rakibuli33</a> Follow me on Linkedin:<a target="_blank" href="https://www.linkedin.com/in/rakibuli33/">https://www.linkedin.com/in/rakibuli33/</a> Facebook Group:<a target="_blank" href="https://www.facebook.com/groups/35255">https://www.facebook.com/groups/35255</a><a target="_blank" href="https://www.youtube.com/redirect?event=video_description&amp;redir_token=QUFFLUhqbVlPcWUxTWhDdXBSLUJFaklQZXFJTGtYbE9Rd3xBQ3Jtc0tub00zdzRYSWNPUmNJbDd6UVNYY3hJNWk3U1YtZTRHQTRsdzU0T0RuZkVpNzAxTW1WTWoySElmODBxcmFyRTNoTWVobl9lODE2YWNMV1BLUk4yX2o0SlN3TEozZUU1dFdjUDhRdW5RSjl2dzhKb01LQQ&amp;q=https%3A%2F%2Fwww.facebook.com%2Fgroups%2F35255..&amp;v=7vFhnKZT5Lw">..</a>.</p>
]]></content:encoded></item><item><title><![CDATA[পিএইচপি  if…else…elseif স্ট্যাটমেন্ট]]></title><description><![CDATA[Post No:32
আসসালামুয়ালাইকুম আশা করি সবাই অনেক ভালো আছেন আজকে আমরা পিএইচপি if…else…elseif এর ব্যবহার সম্পর্কে জানবো।
আমার আগের ব্লগ গুলা পড়ার জন্যে লিংকে ক্লিক করুন:hashnode.com/@Labib
PHP তে আমরা কোন variable ঘোষণা করলে তা $ চিহ্ন দিয়ে প্রকাশ করে থাক...]]></description><link>https://blog.shikhun.net/ifelseelseif</link><guid isPermaLink="true">https://blog.shikhun.net/ifelseelseif</guid><category><![CDATA[PHP]]></category><category><![CDATA[পিএইচপি  if…else…elseif স্ট্যাটমেন্ট (PHP  if…else…elseif Statements)]]></category><dc:creator><![CDATA[Labib]]></dc:creator><pubDate>Thu, 26 Jan 2023 01:16:53 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1674626941597/6b5e98cd-29c0-40f3-9373-dd1508ed0a38.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><s>Post No:32</s></p>
<p>আসসালামুয়ালাইকুম আশা করি সবাই অনেক ভালো আছেন আজকে আমরা পিএইচপি if…else…elseif এর ব্যবহার সম্পর্কে জানবো।</p>
<p>আমার আগের ব্লগ গুলা পড়ার জন্যে লিংকে ক্লিক করুন:<br /><a target="_blank" href="http://hashnode.com/@Labib"><strong>hashnode.com/@Labib</strong></a></p>
<p>PHP তে আমরা কোন variable ঘোষণা করলে তা $ চিহ্ন দিয়ে প্রকাশ করে থাকি। আমরা যদি if-else statement এর কাজ করতে যাই তাহলে আমাদের এই চিহ্ন নিয়ে কাজ করতে হবে। কোন উদাহরন দেওয়ার আগে আমরা একটু if-else বিষয় টা বুঝে নেই।</p>
<p>পিএইচপি ফাইল রান করার ক্ষেত্রে আমাদের অনেক condition থাকতে পারে if-else এর মাধ্যমে আমরা সেই condition গুলো প্রকাশ করতে পারি এবং প্রিন্ট করতে পারি।</p>
<hr />
<pre><code class="lang-php">&lt; ?php
 $t = date(<span class="hljs-string">"H"</span>);            <span class="hljs-comment">/*variable ঘোষণা করেছি */</span>
</code></pre>
<pre><code class="lang-php"><span class="hljs-keyword">if</span> ($t &lt; <span class="hljs-string">"20"</span>)              <span class="hljs-comment">/*এর মাধ্যমে আমরা শর্ত দিয়ে দিয়েছি*/</span>
 {
 <span class="hljs-keyword">echo</span> <span class="hljs-string">"Have a good day!"</span>;   <span class="hljs-comment">/*এবং শর্ত যদি মিলে তাহলে তা প্রিন্ট করবে */</span>
 }
 <span class="hljs-meta">?&gt;</span>
</code></pre>
<hr />
<p>যদি আমরা if এর সাথে else ব্যবহার করি তাহলে দেখুন</p>
<hr />
<pre><code class="lang-php">&lt; ?php
 $t = date(<span class="hljs-string">"H"</span>);          <span class="hljs-comment">/*variable ঘোষণা করেছি */</span>
</code></pre>
<pre><code class="lang-php"><span class="hljs-keyword">if</span> ($t &lt; <span class="hljs-string">"20"</span>)            <span class="hljs-comment">/*এর মাধ্যমে আমরা শর্ত দিয়ে দিয়েছি*/</span>
 {
 <span class="hljs-keyword">echo</span> <span class="hljs-string">"Have a good day!"</span>; <span class="hljs-comment">/*এবং শর্ত যদি মিলে তাহলে তা প্রিন্ট করবে */</span>
 }
 <span class="hljs-keyword">else</span> {
 <span class="hljs-keyword">echo</span> <span class="hljs-string">"Have a good night!"</span>;<span class="hljs-comment">/*যদি শর্ত না মিলে তাহলে এটা প্রিন্ট হবে*/</span>
 }
</code></pre>
<hr />
<pre><code class="lang-php"> অনেক সময় অনেকগুলো <span class="hljs-keyword">if</span>-<span class="hljs-keyword">else</span> ব্যবহার করতে হতে পারে।
</code></pre>
<hr />
<pre><code class="lang-php">  $t = date(<span class="hljs-string">"H"</span>);   <span class="hljs-comment">/*এই কোড এর মাধ্যমে খুঁজে পাবে দিনের ঘণ্টা*/</span>
</code></pre>
<pre><code class="lang-php"><span class="hljs-keyword">if</span> ($t &lt; <span class="hljs-string">"10"</span>)      <span class="hljs-comment">/*প্রথম শর্ত দেওয়া হল*/</span> {
 <span class="hljs-keyword">echo</span> <span class="hljs-string">"Have a good morning!"</span>;<span class="hljs-comment">/*শর্ত মিললে এটি প্রকাশ করবে।*/</span>
 } <span class="hljs-keyword">elseif</span> ($t &lt; <span class="hljs-string">"20"</span>)<span class="hljs-comment">/*যদি না মিলে তাহলে দ্বিতীয় শর্ত প্রকাশ করা হোল*/</span> {
 <span class="hljs-keyword">echo</span> <span class="hljs-string">"Have a good day!"</span><span class="hljs-comment">/*দ্বিতীয় শর্ত মিললে এটা প্রকাশ করবে। */</span>;
 } <span class="hljs-keyword">else</span> {
 <span class="hljs-keyword">echo</span> <span class="hljs-string">"Have a good night!/*যদি কোনটাই না মিলে তাহলে এটি প্রিন্ট করবে।*/"</span>;
 }
 <span class="hljs-meta">?&gt;</span>
</code></pre>
<hr />
<p>নোটপ্যাড ওপেন করে এই example টুকু টাইপ করে ফাইল টি সেভ করুন if-else.php extension দিয়ে। আপনার ফাইল টি <a target="_blank" href="http://localhost">localhost</a> &gt; htdocs&gt; test ফোল্ডার এর ভিতর রাখুন। ব্রাউজার ওপেন করে এড্রেস বারে লিখুন <a target="_blank" href="http://localhost/test/if-ese.php">localhost/test/if-ese.php</a>. Go বাটন এ ক্লিক করলে একটি ফলাফল আপনি খুজে পাবেন।</p>
]]></content:encoded></item><item><title><![CDATA[PHP Operator]]></title><description><![CDATA[Post No:31
আসসালামুয়ালাইকুম আশা করি সবাই অনেক ভালো আছেন আজকে আমরা পিএইচপি PHP Operator এর ব্যবহার সম্পর্কে জানবো।
আমার আগের ব্লগ গুলা পড়ার জন্যে লিংকে ক্লিক করুন:hashnode.com/@Labib
ভেরিয়েবল এবং মুল্যের উপর অপারেশন সম্পাদন করতে অপারেটর ব্যবহার করা হ...]]></description><link>https://blog.shikhun.net/php-operator</link><guid isPermaLink="true">https://blog.shikhun.net/php-operator</guid><category><![CDATA[PHP Operator]]></category><dc:creator><![CDATA[Labib]]></dc:creator><pubDate>Tue, 24 Jan 2023 02:08:22 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1674409569121/14c190ee-d5a7-4e4c-a292-58ee00948222.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><s>Post No:31</s></p>
<p>আসসালামুয়ালাইকুম আশা করি সবাই অনেক ভালো আছেন আজকে আমরা পিএইচপি PHP Operator এর ব্যবহার সম্পর্কে জানবো।</p>
<p>আমার আগের ব্লগ গুলা পড়ার জন্যে লিংকে ক্লিক করুন:<br /><a target="_blank" href="http://hashnode.com/@Labib"><strong>hashnode.com/@Labib</strong></a></p>
<p>ভেরিয়েবল এবং মুল্যের উপর অপারেশন সম্পাদন করতে অপারেটর ব্যবহার করা হয়।</p>
<p>পিএইচপি অপারেটরকে নিম্নলিখিত গ্রুপ এ ভাগ করা যায়:</p>
<ul>
<li><p>গাণিতিক অপারেটর</p>
</li>
<li><p>অ্যাসাইনমেন্ট অপারেটর</p>
</li>
<li><p>তুলনা অপারেটর</p>
</li>
<li><p>বর্ধিত / হ্রাস অপারেটার</p>
</li>
<li><p>লজিক্যাল অপারেটর</p>
</li>
<li><p>স্ট্রিং অপারেটর</p>
</li>
<li><p>এরে অপারেটর</p>
</li>
</ul>
<h2 id="heading-kirgpqrgprgpogpofgpprgpqrgpr8g4kax4ka4kaj4ka4kak4ka4kaviocmhecmqucmvucmsocnhcmncmscoq"><strong>পিএইচপি গাণিতিক অপারেটর</strong></h2>
<p>পিএইচপি গাণিতিক অপারেটর যেমন উপরন্তু, বিয়োগ, গুণ, ইত্যাদি হিসাবে সাধারণ আঙ্কিক অপারেশন, সঞ্চালন সাংখ্যিক মান সঙ্গে ব্যবহার করা হয়।</p>
<table><tbody><tr><td><p>অপারেটর</p></td><td><p>নাম</p></td><td><p>উদাহরণ</p></td><td><p>ফলাফল</p></td></tr><tr><td><p>+</p></td><td><p>সংযোজন</p></td><td><p>$x + $y</p></td><td><p>$ X এবং $ y এর যোগফল</p></td></tr><tr><td><p>-</p></td><td><p>বিয়োগ</p></td><td><p>$x - $y</p></td><td><p>$ X ও $ Y এর পার্থক্য</p></td></tr><tr><td><p><em></em></p></td><td><p>গুণ</p></td><td><p>$x  $y</p></td><td><p>$ X এবং $ X এর গুণ</p></td></tr><tr><td><p>/</p></td><td><p>ভাগ</p></td><td><p>$x / $y</p></td><td><p>$ x এবং $ y এর ভাগফল</p></td></tr><tr><td><p>%</p></td><td><p>বাকি</p></td><td><p>$x % $y</p></td><td><p>$ x এর ভাগফল</p></td></tr><tr><td><p><strong></strong></p></td><td><p>সূচকীয়</p></td><td><p>$x  $y</p></td><td><p>$ x এর পাওয়ার $ y এর ফলাফল</p></td></tr></tbody></table>

<h2 id="heading-kirgpqrgprgpogpofgpprgpqrgpr8g4kaf4ken4kav4ka4ka44ka4kah4kao4kau4keh4kao4ken4kafiocmhecmqucmvucmsocnhcmncmscoq"><strong>পিএইচপি অ্যাসাইনমেন্ট অপারেটর</strong></h2>
<p>পিএইচপি অ্যাসাইনমেন্ট অপারেটর ভ্যারিয়েবল এর মান লেখার জন্য সংখ্যাগত মান এর সাথে ব্যবহার করা হয়।<br />পিএইচপি মৌলিক অ্যাসাইনমেন্ট অপারেটর হচ্ছে "=" । এটা বাম operand এর মান ডান operand এর মান দ্বারা পরিবর্তিত হয়।</p>
<table><tbody><tr><td><p>অ্যাসাইনমেন্ট</p></td><td><p>হিসাবে একই ...</p></td><td><p>বিবরণ</p></td></tr><tr><td><p>x = y</p></td><td><p>x = y</p></td><td><p>বাম operand এর মান ডান দিকের মানের সমান</p></td></tr><tr><td><p>x += y</p></td><td><p>x = x + y</p></td><td><p>সংযোজন</p></td></tr><tr><td><p>x -= y</p></td><td><p>x = x - y</p></td><td><p>বিয়োগ</p></td></tr><tr><td><p>x <em>= y</em></p></td><td><p>x = x  y</p></td><td><p>গুণ</p></td></tr><tr><td><p>x /= y</p></td><td><p>x = x / y</p></td><td><p>ভাগ</p></td></tr><tr><td><p>x %= y</p></td><td><p>x = x % y</p></td><td><p>ভাগশেষ</p></td></tr></tbody></table>

<h2 id="heading-kirgpqtgp4hgprlgpqjgpr4g4kaf4kaq4ka4kaw4keh4kaf4kawkio"><strong>তুলনা অপারেটর</strong></h2>
<p>পিএইচপি তুলনা অপারেটর দুটি মান (সংখ্যা বা স্ট্রিং) এর মধ্যে তুলনা করতে ব্যবহৃত হয়:</p>
<table><tbody><tr><td><p>অপারেটর</p></td><td><p>নাম</p></td><td><p>উদাহরণ</p></td><td><p>ফলাফল</p></td></tr><tr><td><p>==</p></td><td><p>সমান</p></td><td><p>$x == $y</p></td><td><p>$ x ও $ y সমান হলে TRUE প্রদান করে</p></td></tr><tr><td><p>===</p></td><td><p>অভিন্ন</p></td><td><p>$x === $y</p></td><td><p>$ x ও $ y সমান এবং একই টাইপের হলে TRUE প্রদান করে</p></td></tr><tr><td><p>!=</p></td><td><p>সমান না</p></td><td><p>$x != $y</p></td><td><p>$x, $y এর সমান না হলে TRUE প্রদান করে</p></td></tr><tr><td><p>&lt;&gt;</p></td><td><p>সমান না</p></td><td><p>$x &lt;&gt; $y</p></td><td><p>$x, $y এর সমান না হলে TRUE প্রদান করে</p></td></tr><tr><td><p>!==</p></td><td><p>অভিন্ন নয়</p></td><td><p>$x !== $y</p></td><td><p>$ x ও $ y সমান না হলে অথবা একই টাইপের না হলে TRUE প্রদান করে</p></td></tr><tr><td><p>&gt;</p></td><td><p>তার চেয়ে অনেক বেশী</p></td><td><p>$x &gt; $y</p></td><td><p>$x, $y এর থেকে বড় হলে TRUE প্রদান করে</p></td></tr><tr><td><p>&lt;</p></td><td><p>কম</p></td><td><p>$x &lt; $y</p></td><td><p>$x, $y এর থেকে ছোট হলে TRUE প্রদান করে</p></td></tr><tr><td><p>&gt;=</p></td><td><p>এর চেয়ে বড় বা সমান</p></td><td><p>$x &gt;= $y</p></td><td><p>$x, $y এর থেকে বড় অথবা সমান হলে TRUE প্রদান করে</p></td></tr><tr><td><p>&lt;=</p></td><td><p>এর চেয়ে কম বা সমান</p></td><td><p>$x &lt;= $y</p></td><td><p>$x, $y এর থেকে ছোট অথবা সমান হলে TRUE প্রদান করে</p></td></tr></tbody></table>

<h2 id="heading-php-increment-decrement-operators">**বর্ধিত / হ্রাস অপারেটার PHP Increment / Decrement Operators</h2>
<p>**</p>
<p>পিএইচপি বৃদ্ধি অপারেটরদের একটি ভেরিয়েবল এর মান বৃদ্ধি করতে ব্যবহার করা হয়।</p>
<p>পিএইচপি হ্রাস অপারেটরদের একটি ভেরিয়েবল এর মান হ্রাস করতে ব্যবহার করা হয়।</p>
<table><tbody><tr><td><p><strong>অপারেটর</strong></p></td><td><p><strong>নাম</strong></p></td><td><p><strong>বর্ণনা</strong></p></td></tr><tr><td><p>++$x</p></td><td><p>প্রাক-বৃদ্ধি</p></td><td><p>$x এর মান এক বৃদ্ধি করে, তারপর $x এর মান প্রদান করে</p></td></tr><tr><td><p>$x++</p></td><td><p>পরবর্তীতে-বৃদ্ধি</p></td><td><p>$x এর মান প্রদান করে, তারপর $x এর মান এক বৃদ্ধি করে</p></td></tr><tr><td><p>--$x</p></td><td><p>প্রাক-হ্রাস</p></td><td><p>$x এর মান এক হ্রাস করে, তারপর $x এর মান প্রদান করে</p></td></tr><tr><td><p>$x--</p></td><td><p>পরবর্তীতে-হ্রাস</p></td><td><p>$x এর মান প্রদান করে, তারপর $x এর মান এক হ্রাস করে</p></td></tr></tbody></table>

<h2 id="heading-kirgprlgppzgprgppxgp43gpqgpr7gprig4kaf4kaq4ka4kaw4keh4kaf4kawkio"><strong>লজিক্যাল অপারেটর</strong></h2>
<p>পিএইচপি লজিক্যাল অপারেটর শর্তাধীন বিবৃতি একত্রিত করতে ব্যবহার করা হয়।</p>
<table><tbody><tr><td><p><strong>অপারেটর</strong></p></td><td><p><strong>নাম</strong></p></td><td><p><strong>উদাহরণ</strong></p></td><td><p><strong>ফলাফল</strong></p></td></tr><tr><td><p>and</p></td><td><p>And</p></td><td><p>$x and $y</p></td><td><p>সত্য যদি $x এবং $y উভয়ই সত্য হয়</p></td></tr><tr><td><p>or</p></td><td><p>Or</p></td><td><p>$x or $y</p></td><td><p>সত্য যদি $x অথবা $y এর যেকোনটি সত্য হয়</p></td></tr><tr><td><p>xor</p></td><td><p>Xor</p></td><td><p>$x xor $y</p></td><td><p>সত্য যদি $x অথবা $y সত্য হয়, কিন্তু উভয়ই সত্য না হয়</p></td></tr><tr><td><p>&amp;&amp;</p></td><td><p>And</p></td><td><p>$x &amp;&amp; $y</p></td><td><p>সত্য যদি $x এবং $y উভয়ই সত্য হয়</p></td></tr><tr><td><p>||</p></td><td><p>Or</p></td><td><p>$x || $y</p></td><td><p>সত্য যদি $x বা $y সত্য হয়</p></td></tr><tr><td><p>!</p></td><td><p>Not</p></td><td><p>!$x</p></td><td><p>সত্য যদি $x সত্য না হয়</p></td></tr></tbody></table>

<h2 id="heading-kirgprjgp43gppgp43gprdgprgpoig4kaf4kaq4ka4kaw4keh4kaf4kawkio"><strong>স্ট্রিং অপারেটর</strong></h2>
<p>পিএইচপি এ দুটি অপারেটর আছে যাদেরকে বিশেষভাবে স্ট্রিং এর জন্য ডিজাইন করা হয়েছে।</p>
<table><tbody><tr><td><p><strong>অপারেটর</strong></p></td><td><p><strong>নাম</strong></p></td><td><p><strong>উদাহরণ</strong></p></td><td><p><strong>ফলাফল</strong></p></td></tr><tr><td><p>.</p></td><td><p>সংযুক্তকরণ</p></td><td><p>$txt1 . $txt2</p></td><td><p>$txt1 এবং $txt2 কে সংযুক্ত করে</p></td></tr><tr><td><p>.=</p></td><td><p>সংযুক্তকরণের অ্যাসাইনমেন্ট</p></td><td><p>$txt1 .= $txt2</p></td><td><p>$txt2 কে $txt1 এর সাথে যুক্ত করে</p></td></tr></tbody></table>

<p>পিএইচপি অ্যারে অপারেটর</p>
<p>পিএইচপি অ্যারে অপারেটর অ্যারেগুলোর মধ্যে তুলনা করতে ব্যবহার করা হয়।</p>
<table><tbody><tr><td><p><strong>অপারেটর</strong></p></td><td><p><strong>নাম</strong></p></td><td><p><strong>উদাহরন</strong></p></td><td><p><strong>ফলাফল</strong></p></td></tr><tr><td><p>+</p></td><td><p>মিলন</p></td><td><p>$x + $y</p></td><td><p>$x এবং $y এর মিলন</p></td></tr><tr><td><p>==</p></td><td><p>সমতা</p></td><td><p>$x == $y</p></td><td><p>True প্রদান করে যদি $x এবং $y এর একই কী / মান জোড়া থাকে</p></td></tr><tr><td><p>===</p></td><td><p>পরিচিতি</p></td><td><p>$x === $y</p></td><td><p>True প্রদান করে যদি $x এবং $y এর একই ক্রম এবং প্রকার অনুসারে কী/মান জোড়া থাকে</p></td></tr><tr><td><p>!=</p></td><td><p>অসাম্য</p></td><td><p>$x != $y</p></td><td><p>True প্রদান করে যদি $x, $y এর সমান না হয়</p></td></tr><tr><td><p>&lt;&gt;</p></td><td><p>অসমতা</p></td><td><p>$x &lt;&gt; $y</p></td><td><p>True প্রদান করে যদি $x, $y এর সমান না হয়</p></td></tr><tr><td><p>!==</p></td><td><p>অ-পরিচয়</p></td><td><p>$x !== $y</p></td><td><p>True প্রদান করে যদি $x, $y এর সাথে পরিচিত না হয়</p></td></tr></tbody></table>]]></content:encoded></item><item><title><![CDATA[পিএইচপি Strings, Constants]]></title><description><![CDATA[Post No:30
আসসালামুয়ালাইকুম আশা করি সবাই অনেক ভালো আছেন আজকে আমরা পিএইচপি Strings, Constants এর ব্যবহার সম্পর্কে জানবো।
আমার আগের ব্লগ গুলা পড়ার জন্যে লিংকে ক্লিক করুন:hashnode.com/@Labib
যে কোন প্রুগ্রামিং ল্যাঙ্গুয়েজে স্ট্রিং এর উপর পরিষ্কার ধারনা ...]]></description><link>https://blog.shikhun.net/strings-constants</link><guid isPermaLink="true">https://blog.shikhun.net/strings-constants</guid><category><![CDATA[PHP]]></category><category><![CDATA[পিএইচপি Strings, Constants]]></category><dc:creator><![CDATA[Labib]]></dc:creator><pubDate>Sat, 21 Jan 2023 20:37:06 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1674305410995/505027a9-1106-45c2-a7d7-135d25807ecd.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><s>Post No:30</s></p>
<p>আসসালামুয়ালাইকুম আশা করি সবাই অনেক ভালো আছেন আজকে আমরা পিএইচপি Strings, Constants এর ব্যবহার সম্পর্কে জানবো।</p>
<p>আমার আগের ব্লগ গুলা পড়ার জন্যে লিংকে ক্লিক করুন:<br /><a target="_blank" href="http://hashnode.com/@Labib"><strong>hashnode.com/@Labib</strong></a></p>
<p>যে কোন প্রুগ্রামিং ল্যাঙ্গুয়েজে স্ট্রিং এর উপর পরিষ্কার ধারনা থাকাটা খুবয় জরুরি। একটা স্ট্রিং তৈরি হয় এক বা একাধিক ক্যারেক্টার মিলে । সোজা কথায় স্ট্রিং হচ্ছে ক্যারেক্টারের সমষ্টি ।</p>
<p>যেমন “Hello World” হচ্ছে একটি স্ট্রিং।</p>
<h2 id="heading-kirgpqrgprgpogpofgpprgpqrgpr8g4ka44ken4kaf4ken4kaw4ka4kaciocmqcmvucmgucmtucmqcoq"><strong>পিএইচপি স্ট্রিং ফাংশন</strong></h2>
<p>পিএইচপিতে স্ট্রিং মেনিপুলেট করার অনেক ফাংশন রয়েছে। নিচে কিছু কমন ফাংশনের বর্ণনা দেওয়া হয়েছে।</p>
<h3 id="heading-number-of-characters"><strong>স্ট্রিং এর দৈর্ঘ্য (number of characters) বের করা</strong></h3>
<p>strlen() ফাংশনের মাধ্যমে স্ট্রিং এর দৈর্ঘ্য বের করতে হয়, নিচে উদাহরন দেওয়া হল।<br />উদাহরণঃ</p>
<hr />
<pre><code class="lang-php">&lt; ?php
 $text = “Hello World!”
 <span class="hljs-keyword">echo</span> strlen($text); <span class="hljs-comment">// outputs 12</span>
 <span class="hljs-meta">?&gt;</span>
</code></pre>
<hr />
<p>এই কোডটার আউটপুট হবে 12</p>
<h3 id="heading-kirgprjgp43gppgp43gprdgprgpoig4kap4kawiocmkcnncmvucmsocnjecmosdgpogprag4ka44kac4kaw4ken4kav4kaiocmrocnhcmscdgppxgprdgpr4qkg"><strong>স্ট্রিং এর ওয়ার্ড এর সংখ্যা বের করা</strong></h3>
<p>স্ট্রিং এর ওয়ার্ড এর সংখ্যা বের করার জন্য str_word_count() ফাংশনটা ব্যাবহার করা হয়<br />উদাহরণঃ</p>
<hr />
<pre><code class="lang-php">&lt; ?php
 $text = “Hello World!”
 <span class="hljs-keyword">echo</span> str_word_count($text);<span class="hljs-comment">// outputs 2</span>
 <span class="hljs-meta">?&gt;</span>
</code></pre>
<hr />
<p>এই কোডটার আউটপুট হবে 2</p>
<h3 id="heading-kirgprjgp43gppgp43gprdgprgpoig4kaw4ka4kat4ka4kaw4ken4ka4iocmlecmsocmvioq"><strong>স্ট্রিং রিভার্স করা</strong></h3>
<p>strrev()ফাংশনের মাধ্যমে একটি স্ট্রিং কে রিভার্স করা যায়।<br />উদাহরণঃ</p>
<hr />
<pre><code class="lang-php">&lt; ?php
 <span class="hljs-keyword">echo</span> strrev(<span class="hljs-string">"Hello world!"</span>); <span class="hljs-comment">// outputs !dlrow olleH</span>
 <span class="hljs-meta">?&gt;</span>
</code></pre>
<hr />
<p>আউটপুট হবে !dlrow olleH।</p>
<h3 id="heading-kirgprjgp43gppgp43gprdgprgpoig4kapiocmqocmvcmsocnjecmpucmvcmtcnjecmnydgpogppxgppgpr4g4kaf4keh4kav4ken4ka44kafiocmlecnicmnocnhydgpqzgp4fgprag4kav4kaw4kakio"><strong>স্ট্রিং এ নির্দিষ্ট একটা টেক্সট কোজে বের করা</strong></h3>
<p>strpos()ফাংশন এর মাধ্যমে এই কাজটি করা হয়।<br />উদাহরণঃ</p>
<hr />
<pre><code class="lang-php">&lt; ?php
 <span class="hljs-keyword">echo</span> strpos(<span class="hljs-string">"Hello world!"</span>, <span class="hljs-string">"world"</span>); <span class="hljs-comment">// outputs 6</span>
 <span class="hljs-meta">?&gt;</span>
</code></pre>
<hr />
<p>আউটপুট হবে 6 যেহেতু "Hello world!" এ “world” এর পজিশন 6।</p>
<p>স্ট্রিং এ টেক্সট রিপ্লেস করাঃ<br />এই কাজটি করতে হয় str_replace() ফাংশনের মাধ্যমে।<br />উদাহরণঃ</p>
<hr />
<pre><code class="lang-php">&lt; ?php
 <span class="hljs-keyword">echo</span> str_replace(<span class="hljs-string">"world"</span>, <span class="hljs-string">"Dolly"</span>, <span class="hljs-string">"Hello world!"</span>); <span class="hljs-comment">// outputs Hello Dolly!</span>
 <span class="hljs-meta">?&gt;</span>
</code></pre>
<hr />
<p>এই কোডটির আউটপুট হবে<br />Hello Dolly!</p>
<p>কনস্টান্ট হচ্ছে এমন একটি identifier যেইটা ভেরিয়েবলের মতই কাজ করে তবে ডিফারেন্স হচ্ছে ভেরিয়েবলের মান বিভিন্ন সময় বিভিন্ন রকম হয় কিন্তু কনস্টান্ট একবার ডিফাইন করা হলে পুরো স্ক্রিপ্টে আর পরিবর্তন হয় না।</p>
<p>একটি ভ্যালিড কনস্টান্টের নাম আরম্ভ করতে হয় লেটার অথবা আন্ডারস্কোর ক্যারেক্টার দিয়ে। এক্ষেত্রে মনে রাখা জরুরি যে কনস্টান্টের নামের আগে কোন $ সাইন ব্যাবহার করা হয় না। প্রচলিত নিয়ম অনুযায়ী কনস্টান্ট লিখতে হয় আপারকেস লেটার দিয়ে।<br />একটি কনস্টান্ট বানানোর জন্য পিএইচপির define() ফাংশন ব্যাবহার করা হয়। নিচে উদাহরণ দিয়ে বিষয়টি বোজানো হয়েছে।</p>
<p>define() ফাংশনটি দেখতে নিচের মত</p>
<hr />
<p>define(name, value, case-insensitivity)</p>
<hr />
<p>প্যারামিটারগুলুর বর্ণনা নিচে দেওয়া হল</p>
<ul>
<li><p>name: এইটি কনস্টান্টের নামে নির্দেশ করে।</p>
</li>
<li><p>value: এইটি কনস্টান্টের মান নির্দেশ করে।</p>
</li>
</ul>
<h2 id="heading-case-insensitivity"><strong>case-insensitivity</strong></h2>
<p>এইটি নির্দেশ করে কনস্টান্টের মান কেস সেনসিটিভ কিনা। এইটা ডিফল্ট হিসেবে false থাকে।<br />উদাহরণ</p>
<hr />
<pre><code class="lang-php">&lt; ?php
 define(<span class="hljs-string">"GREETING"</span>, <span class="hljs-string">"Welcome to PHP!"</span>);
 <span class="hljs-keyword">echo</span> GREETING;
 <span class="hljs-meta">?&gt;</span>
</code></pre>
<hr />
<p>এই কোডটি GREETING নামের একটি কন্সটান্ট তৈরি করে যার মান হচ্ছে “Welcome to PHP!”।<br />কনস্টান্ট অটোমেটিক্যালি গ্লূবাল অর্থাৎ এইটি পুরো স্ক্রিপ্টে ব্যাবহার করা যেতে পারে। নিচে একটি উদাহরণ দিয়ে বিষয়টি বোঝানো হয়েছে।</p>
<hr />
<pre><code class="lang-php"> &lt; ?php
 define(<span class="hljs-string">"GREETING"</span>, <span class="hljs-string">"Welcome to PHP!"</span>);
</code></pre>
<pre><code class="lang-php"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">showGreeting</span>(<span class="hljs-params"></span>) </span>{
 <span class="hljs-keyword">echo</span> GREETING;
 }
</code></pre>
<pre><code class="lang-php">showGreeting();
 <span class="hljs-meta">?&gt;</span>
</code></pre>
<hr />
<p>উপরের উদাহরণে GREETING কনস্টান্টটি showGreeting() ফাংশনের বাইরে সংজ্ঞায়িত করার পরেও, ফাংশনের ভিতরে এইটি ব্যবহার করা যাচ্ছে।</p>
]]></content:encoded></item><item><title><![CDATA[পিএইচপি  ডাটা টাইপ (PHP Data Types)]]></title><description><![CDATA[Post No:29
আসসালামুয়ালাইকুম আশা করি সবাই অনেক ভালো আছেন আজকে আমরা পিএইচপি ডাটা টাইপ (PHP Data Types) এর ব্যবহার সম্পর্কে জানবো।
আমার আগের ব্লগ গুলা পড়ার জন্যে লিংকে ক্লিক করুন:hashnode.com/@Labib
ভেরিয়েবল বিভন্ন রকমের ডাটা স্টোর করতে পারে, এবং বিভন্ন...]]></description><link>https://blog.shikhun.net/php-data-types</link><guid isPermaLink="true">https://blog.shikhun.net/php-data-types</guid><category><![CDATA[PHP]]></category><category><![CDATA[পিএইচপি  ডাটা টাইপ (PHP Data Types)]]></category><dc:creator><![CDATA[Labib]]></dc:creator><pubDate>Fri, 20 Jan 2023 15:56:27 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1674141380551/ddb516e8-03e0-459f-869c-86c07ea06269.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><s>Post No:29</s></p>
<p>আসসালামুয়ালাইকুম আশা করি সবাই অনেক ভালো আছেন আজকে আমরা পিএইচপি ডাটা টাইপ (PHP Data Types) এর ব্যবহার সম্পর্কে জানবো।</p>
<p>আমার আগের ব্লগ গুলা পড়ার জন্যে লিংকে ক্লিক করুন:<br /><a target="_blank" href="http://hashnode.com/@Labib"><strong>hashnode.com/@Labib</strong></a></p>
<p>ভেরিয়েবল বিভন্ন রকমের ডাটা স্টোর করতে পারে, এবং বিভন্ন ডাটা টাইপ বিভন্ন রকম কাজ করে। পিএইচপি নিচে উল্লেখিত ডাটা টাইপ গুলো সাপোর্ট করে।</p>
<h2 id="heading-string"><strong>স্ট্রিং (String):</strong></h2>
<p>স্ট্রিং তৈরি হয় এক বা একাধিক ক্যারেক্টার মিলে । সোজা কথায় স্ট্রিং হচ্ছে ক্যারেক্টারের সমষ্টি । যেমনঃ “Hello World” হচ্ছে একটি স্ট্রিং।<br />ডাবল কিংবা সিঙ্গল কোট ব্যবহার করে স্ট্রিং (string) ভেরিয়েবল তৈরি করতে হয়।<br />উদাহরণঃ</p>
<hr />
<pre><code class="lang-php"> <span class="hljs-meta">&lt;?php</span> 
 $x = <span class="hljs-string">"Hello world!"</span>;
 $y = <span class="hljs-string">'Hello world!'</span>;

 <span class="hljs-keyword">echo</span> $x;
 <span class="hljs-keyword">echo</span> <span class="hljs-string">"&lt;br&gt;"</span>; 
 <span class="hljs-keyword">echo</span> $y;
 <span class="hljs-meta">?&gt;</span>
</code></pre>
<hr />
<p>এইখানে $x এবং y হল দুটি string টাইপ ভেরিয়েবল</p>
<h2 id="heading-integer"><strong>ইন্টিজার (integer)</strong></h2>
<p>ইন্টিজার মানে হল পূর্ণ সংখ্যা । এইটি -2,147, 483, 648 এবং +2, 147, 483, 647 এর মধ্যে যে কোন একটি সংখ্যা হতে পারে। নিচের উদাহরণে $x হল একটি ইন্টিজার (integer) টাইপের ভেরিয়েবল।</p>
<hr />
<pre><code class="lang-php"><span class="hljs-meta">&lt;?php</span> 
 $x = <span class="hljs-number">5985</span>;
 var_dump($x);
 <span class="hljs-meta">?&gt;</span>
</code></pre>
<hr />
<p>var_dump() ফাংশনটি ডাটা টাইপ এবং মান রিটার্ন করে।</p>
<h2 id="heading-float"><strong>ফ্লোটিং পয়েন্ট (Float)</strong></h2>
<p>ফ্লোট হল একটি decimal point নাম্বার। নিচের উদাহরণে $x হল একটি ফ্লোট টাইপের ভেরিয়েবল।</p>
<hr />
<pre><code class="lang-php"><span class="hljs-meta">&lt;?php</span> 
 $x = <span class="hljs-number">10.365</span>;
 var_dump($x);
 <span class="hljs-meta">?&gt;</span>
</code></pre>
<hr />
<h2 id="heading-boolean"><strong>বুলিয়ান (boolean)</strong></h2>
<p>কোন কিছু সত্য না মিথ্যা তা প্রকাশ করার জন্য বুলিয়ান ডাটা টাইপটি ব্যাবহার করা হয়।বুলিয়ান এর দুইটি মান হতে পারে – true অথবা false<br />উদাহরনঃ</p>
<hr />
<pre><code class="lang-php">$x = <span class="hljs-literal">true</span>
$y = <span class="hljs-literal">false</span>
</code></pre>
<hr />
<h2 id="heading-array"><strong>এ্যারে (Array)</strong></h2>
<p>একটি সিঙ্গেল ভেরিয়েবলে একের অধিক মান স্টোর করার জন্য এ্যারে ব্যাবহার করা হয়। নিচের উদাহরণে $cars হল একটি এ্যারে।</p>
<hr />
<pre><code class="lang-php"><span class="hljs-meta">&lt;?php</span> 
 $cars = <span class="hljs-keyword">array</span>(<span class="hljs-string">"Volvo"</span>,<span class="hljs-string">"BMW"</span>,<span class="hljs-string">"Toyota"</span>);
 var_dump($cars);
 <span class="hljs-meta">?&gt;</span>
</code></pre>
<hr />
<p>এইখানে $cars এ্যারেতে তিনটি স্ট্রিং টাইপের মান রয়েছেঃ<br />Volvo, BMW এবং Toyota।</p>
<h2 id="heading-object"><strong>অবজেক্ট টাইপ (Object)</strong></h2>
<p>কোন নির্দিষ্ট একটি ক্লাসের instance কে অবজেক্ট বলা হয়। অবজেক্ট হচ্ছে ভেরিয়েবল এবং ফাংশন এর সমস্টি। অবজেক্ট ইন্সট্যান্স তৈরি করতে হয় new কিওয়ার্ডটি ব্যবহার করে।<br />উদাহরনঃ</p>
<hr />
<pre><code class="lang-php"><span class="hljs-meta">&lt;?php</span>
 <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Car</span> </span>{
     <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">Car</span>(<span class="hljs-params"></span>) </span>{
         <span class="hljs-keyword">$this</span>-&gt;model = <span class="hljs-string">"VW"</span>;
     }
 }

 <span class="hljs-comment">// create an object</span>
 $herbie = <span class="hljs-keyword">new</span> Car();

 <span class="hljs-comment">// show object properties</span>
 <span class="hljs-keyword">echo</span> $herbie-&gt;model;
 <span class="hljs-meta">?&gt;</span>
</code></pre>
<hr />
<h2 id="heading-null"><strong>নাল টাইপ (Null)</strong></h2>
<p>নাল একটি বিশেষ ধরণের ডাটা টাইপ যেটার মান হতে পারে শুধুমাত্র একটি- এবং এইটি হল null । একটি ভেরিয়েবলে কোন মান এসাইন করা না হলে ওইটাকে নাল ডাটা টাইপের ভেরিয়েবল বলা হয়।<br />উদাহরনঃ</p>
<hr />
<p>&lt;?php<br />$x = "Hello world!";<br />$x = null;<br />var_dump($x);<br />?&gt;</p>
<hr />
<p>এইখানে $x হল একটি নাল টাইপের ভেরিয়েবল।</p>
]]></content:encoded></item><item><title><![CDATA[পিএইচপি ভেরিয়েবল Echo এবং প্রিন্ট স্ট্যাটমেন্ট]]></title><description><![CDATA[Post No:28
আসসালামুয়ালাইকুম আশা করি সবাই অনেক ভালো আছেন আজকে আমরা পিএইচপি ভেরিয়েবল Echo এবং প্রিন্ট স্ট্যাটমেন্ট এর ব্যবহার সম্পর্কে জানবো।
আমার আগের ব্লগ গুলা পড়ার জন্যে লিংকে ক্লিক করুন:hashnode.com/@Labib
ভেরিয়েবল হচ্ছে একটি স্টোরেজ এরিয়া । এইটিকে...]]></description><link>https://blog.shikhun.net/echo</link><guid isPermaLink="true">https://blog.shikhun.net/echo</guid><category><![CDATA[PHP]]></category><category><![CDATA[পিএইচপি ভেরিয়েবল Echo এবং প্রিন্ট স্ট্যাটমেন্ট]]></category><dc:creator><![CDATA[Labib]]></dc:creator><pubDate>Wed, 18 Jan 2023 17:46:22 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1674063877595/fdca0322-e12d-4c5d-abcf-68423d013e57.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><s>Post No:28</s></p>
<p>আসসালামুয়ালাইকুম আশা করি সবাই অনেক ভালো আছেন আজকে আমরা পিএইচপি ভেরিয়েবল Echo এবং প্রিন্ট স্ট্যাটমেন্ট এর ব্যবহার সম্পর্কে জানবো।</p>
<p>আমার আগের ব্লগ গুলা পড়ার জন্যে লিংকে ক্লিক করুন:<br /><a target="_blank" href="http://hashnode.com/@Labib"><strong>hashnode.com/@Labib</strong></a></p>
<p>ভেরিয়েবল হচ্ছে একটি স্টোরেজ এরিয়া । এইটিকে কমপিউটারের ডাটা জমা রাখার একটি অস্থায়ী বক্সের মত কল্পনা করা যায়। পিএইচপি তে ভেরিয়েবলকে ডলার চিহ্ন এবং এর পরে ভেরিয়েবলের নাম দ্বারা প্রদর্শন করা হয়। নিচে একটি উদাহরণ দিয়ে বিষয়টি বোজানো হয়েছে।</p>
<hr />
<pre><code class="lang-php">&lt; ?php
 $text = <span class="hljs-string">"Hello World!"</span>;
 $num1 = <span class="hljs-number">5</span>;
 $num2 = <span class="hljs-number">10.5</span>;
 <span class="hljs-meta">?&gt;</span>
</code></pre>
<hr />
<p>উপরের স্টেটমেন্টটা এক্সিকিউট হওয়ার পর ভেরিয়েবল $text এ থাকবে “Hello world!”, ভেরিয়েবল $num1 এ থাকবে 5 এবং ভেরিয়েবল $num2 এ থাকবে 10.5.</p>
<p>ভেরিয়েবল লেখার সময় আমাদের কিছু নিয়ম অনুসরণ করতে হবে, যেমনঃ</p>
<p> ভেরিয়েবল সবসময় ডলার চিহ্ন দ্বারা আরম্ভ হবে এবং এর পরে ভেরিয়েবলের নাম লিখতে হবে।</p>
<p> ভেরিয়েবলের নাম অবশ্যই লেটার অথবা আণ্ডারস্কোর ক্যারেকটার দ্বারা আরম্ভ করতে হবে। কখনো নাম্বার দিয়ে আরম্ভ করা যাবে না।</p>
<p> আলফা-নিউমেরিক এবং আণ্ডারস্কোর ক্যারেকটার (A-z,0-9,-) ছারা অন্য কিছু ভেরিয়েবলে ব্যাবহার করা যাবে না।</p>
<p> পিএইচপি তে ভেরিয়েবল কেস সেনসিটিভ । অর্থাৎ $name এবং $NAME দুইটা ভিন্ন ভেরিয়েবল হিসেবে বিবেচিত হবে।</p>
<p>ভেরিয়েবলের ডাটা আঊটপূটে দেখানোর জন্য পিএইচপি এর echo স্টেটমেন্টটা ব্যাবহার করতে হবে। নিচে একটি উদাহরণ দিয়ে বিষয়টি বোজানো হয়েছে।</p>
<hr />
<pre><code class="lang-php">&lt; ?php
 $myName = <span class="hljs-string">"john"</span>;
 $myAge = <span class="hljs-number">40</span>;
 <span class="hljs-keyword">echo</span> <span class="hljs-string">"Hello, there. My name is <span class="hljs-subst">$myName</span> and I am <span class="hljs-subst">$myAge</span> years old"</span>
 <span class="hljs-meta">?&gt;</span>
</code></pre>
<hr />
<p>এই কোডটার আঊটপূট হবে নিচের মত</p>
<hr />
<p>Hello, there. My name is john and I am 40 years old</p>
<p>Php তে ফলাফল পাওয়ার জন্য আমাদের echo বা print ব্যবহার করতে হয়। পিএইচপি এর প্রায় সব উদাহরন এ print বা echo এর ব্যবহার দেখতে পাওয়া যায়। কমবেশি print এবং echo এর ফাংশন প্রায় একই। তবে print এর তুলনায় echo একটু তারাতারি কাজ করে।<br />Echo statement ব্যবহার করে পিএইচপি তে একটি উদাহরন দেখা যাক</p>
<hr />
<pre><code class="lang-php"><span class="hljs-meta">&lt;?php</span>
 <span class="hljs-keyword">echo</span> <span class="hljs-string">"&lt;h2&gt;PHP is Fun!&lt;/h2&gt;"</span>;
 <span class="hljs-keyword">echo</span> <span class="hljs-string">"Hello world!&lt;br&gt;"</span>;
 <span class="hljs-keyword">echo</span> <span class="hljs-string">"I'm about to learn PHP!&lt;br&gt;"</span>;
 <span class="hljs-keyword">echo</span> <span class="hljs-string">"This "</span>, <span class="hljs-string">"string "</span>, <span class="hljs-string">"was "</span>, <span class="hljs-string">"made "</span>, <span class="hljs-string">"with multiple parameters."</span>;
 <span class="hljs-meta">?&gt;</span>
</code></pre>
<hr />
<p>এটি যদি রান করি তাহলে ফলাফল দেখা যাবে</p>
<hr />
<h2 id="heading-php-is-fun"><strong>PHP is Fun!</strong></h2>
<p>Hello world!<br />I'm about to learn PHP!<br />This string was made with multiple parameters.</p>
]]></content:encoded></item><item><title><![CDATA[ক্লাস নং-২০(পার্ট-১৯) - Cash payment refund ,- Stripe payment refund  through transaction_id,]]></title><description><![CDATA[আজকের ক্লাসে আমরা আমাদের - Cash payment refund through transaction_id,- Stripe payement refund through transaction_id নিয়ে আলোচনা করব। এছাড়াও আমাদের payment gateway তে payment করার সময় কার্ড নং এবং আমাদের অন্যান্য এরর গুলো সুন্দর মত শো করাব।
তো প্রথম...]]></description><link>https://blog.shikhun.net/cash-payment-refund-stripe-payment-refund-through-transactionid</link><guid isPermaLink="true">https://blog.shikhun.net/cash-payment-refund-stripe-payment-refund-through-transactionid</guid><category><![CDATA[লারাভেল]]></category><category><![CDATA[Laravel]]></category><category><![CDATA[laravelframework]]></category><category><![CDATA[Stripe Checkout]]></category><category><![CDATA[payment gateway]]></category><dc:creator><![CDATA[Rakibul Islam]]></dc:creator><pubDate>Mon, 16 Jan 2023 18:24:59 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1673893373722/707d955a-4594-4737-92d4-02af545d23cc.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>আজকের ক্লাসে আমরা আমাদের - Cash payment refund through transaction_id,- Stripe payement refund through transaction_id নিয়ে আলোচনা করব। এছাড়াও আমাদের payment gateway তে payment করার সময় কার্ড নং এবং আমাদের অন্যান্য এরর গুলো সুন্দর মত শো করাব।</p>
<p>তো প্রথমেই আমরা refund policy তে যায়। এবং এর জন্য আমরা database migration এ যায়। এবং আগের যে টেবিল আছে সেখানে আমরা transaction id column add করি।</p>
<pre><code class="lang-bash"> Schema::create(<span class="hljs-string">'payments'</span>, <span class="hljs-keyword">function</span> (Blueprint <span class="hljs-variable">$table</span>) {
            <span class="hljs-variable">$table</span>-&gt;id();
            <span class="hljs-variable">$table</span>-&gt;<span class="hljs-built_in">float</span>(<span class="hljs-string">'amount'</span>);
            <span class="hljs-variable">$table</span>-&gt;unsignedBigInteger(<span class="hljs-string">'invoice_id'</span>);
            <span class="hljs-variable">$table</span>-&gt;string(<span class="hljs-string">'transaction_id'</span>);
            <span class="hljs-variable">$table</span>-&gt;timestamps();

            <span class="hljs-variable">$table</span>-&gt;foreign(<span class="hljs-string">'invoice_id'</span>)-&gt;references(<span class="hljs-string">'id'</span>)-&gt;on(<span class="hljs-string">'invoices'</span>)-&gt;onDelete(<span class="hljs-string">'cascade'</span>);
        });
</code></pre>
<p>এবার আমাদের এই payment create admission যে livewire component আছে সেখানে payment create এর মধ্যে আমরা দিয়ে দিই।</p>
<pre><code class="lang-bash"><span class="hljs-keyword">if</span>(!empty(<span class="hljs-variable">$this</span>-&gt;payment)) {
            Payment::create([
                <span class="hljs-string">'amount'</span> =&gt; <span class="hljs-variable">$this</span>-&gt;payment,
                <span class="hljs-string">'invoice_id'</span> =&gt; <span class="hljs-variable">$invoice</span>-&gt;id,
                <span class="hljs-string">'transaction_id'</span> =&gt; Str::random(8),
            ]);
        }
</code></pre>
<p>এবং এই transaction id টা আমাদের যে payment model আছে সেখানে fillable property তে দিয়ে দিতে হবে।</p>
<pre><code class="lang-bash"> protected <span class="hljs-variable">$fillable</span> =[
        <span class="hljs-string">'amount'</span>,
        <span class="hljs-string">'invoice_id'</span>,
        <span class="hljs-string">'transaction_id'</span>
    ];
</code></pre>
<p>এবার আমরা একবার আমাদের Database এ migration চালিয়ে নেব যেহেতু আমাদের migration এ change করা হয়েছে।</p>
<p>এবার আমরা student admission করিয়ে আমাদের invoice create করে refund policy চেক করতে পারব।</p>
<p>আশা করি বুঝতে পেরেছেন।</p>
<p>এখন আমরা যে বিষয় টা নিয়ে কথা বলব সেটা হলো আমরা যদি admission section এ গিয়ে email দিয়ে লিড খুজে admission করানোর সময় যদি না পায় বা ভূল email দেই তাহলে সেখানে আমাদের new admission form আসবে যেখানে</p>
<ul>
<li><p>-name</p>
</li>
<li><p>-email</p>
</li>
<li><p>-password</p>
</li>
</ul>
<p>দিলে নতুন করে admission course select করে payment করার অপশন আসবে আমরা সেটা করব।</p>
<p>তো এর জন্য প্রথমেই আপনাকে livewire এর admission file এ গিয়ে সেখানে fillable property নিতে হবে।</p>
<pre><code class="lang-bash"> public <span class="hljs-variable">$name</span>;
    public <span class="hljs-variable">$email</span>;
    public <span class="hljs-variable">$password</span>;
    public <span class="hljs-variable">$notFound</span> = <span class="hljs-literal">false</span>;
    public <span class="hljs-variable">$user_id</span>;
</code></pre>
<p>এরপর search function এ সেগুলো দিয়ে define করতে হবে।</p>
<pre><code class="lang-bash">  public <span class="hljs-keyword">function</span> <span class="hljs-function"><span class="hljs-title">search</span></span>() {
        <span class="hljs-variable">$this</span>-&gt;notFound = <span class="hljs-literal">true</span>;
        <span class="hljs-variable">$this</span>-&gt;course_id = null;
        <span class="hljs-variable">$this</span>-&gt;lead_id = null;
        <span class="hljs-variable">$this</span>-&gt;selectedCourse = null;
        <span class="hljs-variable">$this</span>-&gt;leads = Lead::<span class="hljs-built_in">where</span>(<span class="hljs-string">'name'</span>, <span class="hljs-string">'like'</span>, <span class="hljs-string">'%'</span> . <span class="hljs-variable">$this</span>-&gt;search . <span class="hljs-string">'%'</span>)
            -&gt;orWhere(<span class="hljs-string">'email'</span>, <span class="hljs-string">'like'</span>, <span class="hljs-string">'%'</span> . <span class="hljs-variable">$this</span>-&gt;search . <span class="hljs-string">'%'</span>)
            -&gt;orWhere(<span class="hljs-string">'phone'</span>, <span class="hljs-string">'like'</span>, <span class="hljs-string">'%'</span> . <span class="hljs-variable">$this</span>-&gt;search . <span class="hljs-string">'%'</span>)
            -&gt;get();
    }
</code></pre>
<p>এরপর আমাদের student কে নতুন করে add করে নিতে হবে।</p>
<pre><code class="lang-bash">public <span class="hljs-keyword">function</span> <span class="hljs-function"><span class="hljs-title">addStudent</span></span>(){
        <span class="hljs-variable">$this</span>-&gt;validate([
            <span class="hljs-string">'name'</span>=&gt;<span class="hljs-string">'required'</span>,
            <span class="hljs-string">'email'</span>=&gt;<span class="hljs-string">'required|email'</span>,
            <span class="hljs-string">'password'</span>=&gt;<span class="hljs-string">'required'</span>
        ]);
        <span class="hljs-variable">$user</span> = User::create([
            <span class="hljs-string">'name'</span> =&gt; <span class="hljs-variable">$this</span>-&gt;name,
            <span class="hljs-string">'email'</span> =&gt; <span class="hljs-variable">$this</span>-&gt;email,
            <span class="hljs-string">'password'</span> =&gt; bcrypt(<span class="hljs-variable">$this</span>-&gt;password),
        ]);

        <span class="hljs-variable">$this</span>-&gt;user_id = <span class="hljs-variable">$user</span>-&gt;id;

    }
    public <span class="hljs-keyword">function</span> <span class="hljs-function"><span class="hljs-title">studentAdmit</span></span>(){

        <span class="hljs-variable">$invoice</span> = Invoice::create([
            <span class="hljs-string">'due_date'</span> =&gt; now()-&gt;addDays(7),
            <span class="hljs-string">'user_id'</span> =&gt; <span class="hljs-variable">$this</span>-&gt;user_id,
        ]);

        InvoiceItem::create([
            <span class="hljs-string">'name'</span> =&gt; <span class="hljs-string">'Course: '</span> . <span class="hljs-variable">$this</span>-&gt;selectedCourse-&gt;name,
            <span class="hljs-string">'price'</span> =&gt; <span class="hljs-variable">$this</span>-&gt;selectedCourse-&gt;price,
            <span class="hljs-string">'quantity'</span> =&gt; 1,
            <span class="hljs-string">'invoice_id'</span> =&gt; <span class="hljs-variable">$invoice</span>-&gt;id,
        ]);

        <span class="hljs-variable">$this</span>-&gt;selectedCourse-&gt;students()-&gt;attach(<span class="hljs-variable">$this</span>-&gt;user_id);

        <span class="hljs-keyword">if</span> (!empty(<span class="hljs-variable">$this</span>-&gt;payment)) {
            Payment::create([
                <span class="hljs-string">'amount'</span> =&gt; <span class="hljs-variable">$this</span>-&gt;payment,
                <span class="hljs-string">'invoice_id'</span> =&gt; <span class="hljs-variable">$invoice</span>-&gt;id,
                <span class="hljs-string">'transaction_id'</span> =&gt; Str::random(8),
            ]);
        }



        <span class="hljs-variable">$this</span>-&gt;selectedCourse = null;
        <span class="hljs-variable">$this</span>-&gt;course_id = null;
        <span class="hljs-variable">$this</span>-&gt;lead_id = null;
        <span class="hljs-variable">$this</span>-&gt;search = null;
        <span class="hljs-variable">$this</span>-&gt;leads = [];
        <span class="hljs-variable">$this</span>-&gt;notFound = <span class="hljs-literal">false</span>;


        flash()-&gt;addSuccess(<span class="hljs-string">'Admission successful'</span>);
    }
</code></pre>
<p>এবার আমাদের admission blade file এ elseif দিয়ে নতুন করে form নিয়ে আসতে হবে।</p>
<pre><code class="lang-bash">@elseif(count(<span class="hljs-variable">$leads</span>) === 0 &amp;&amp; <span class="hljs-variable">$notFound</span>)
        &lt;form class=<span class="hljs-string">"mt-6"</span> wire:submit.prevent=<span class="hljs-string">"addStudent"</span>&gt;
            &lt;div class=<span class="hljs-string">"mt-6 mb-3 w-full flex items-center gap-4"</span>&gt;
                &lt;div&gt;
                    @include(<span class="hljs-string">'components.form-field'</span>, [
                        <span class="hljs-string">'name'</span> =&gt; <span class="hljs-string">'name'</span>,
                        <span class="hljs-string">'label'</span> =&gt; <span class="hljs-string">'Name'</span>,
                        <span class="hljs-string">'type'</span> =&gt; <span class="hljs-string">'text'</span>,
                        <span class="hljs-string">'placeholder'</span> =&gt; <span class="hljs-string">'Enter name'</span>,
                        <span class="hljs-string">'required'</span> =&gt; <span class="hljs-string">'required'</span>,
                    ])
                &lt;/div&gt;
                &lt;div&gt;
                    @include(<span class="hljs-string">'components.form-field'</span>, [
                        <span class="hljs-string">'name'</span> =&gt; <span class="hljs-string">'email'</span>,
                        <span class="hljs-string">'label'</span> =&gt; <span class="hljs-string">'Email'</span>,
                        <span class="hljs-string">'type'</span> =&gt; <span class="hljs-string">'email'</span>,
                        <span class="hljs-string">'placeholder'</span> =&gt; <span class="hljs-string">'Enter Email'</span>,
                        <span class="hljs-string">'required'</span> =&gt; <span class="hljs-string">'required'</span>,
                    ])
                &lt;/div&gt;

                &lt;div&gt;
                    @include(<span class="hljs-string">'components.form-field'</span>, [
                        <span class="hljs-string">'name'</span> =&gt; <span class="hljs-string">'password'</span>,
                        <span class="hljs-string">'label'</span> =&gt; <span class="hljs-string">'Password'</span>,
                        <span class="hljs-string">'type'</span> =&gt; <span class="hljs-string">'password'</span>,
                        <span class="hljs-string">'placeholder'</span> =&gt; <span class="hljs-string">'Enter password'</span>,
                        <span class="hljs-string">'required'</span> =&gt; <span class="hljs-string">'required'</span>,
                    ])
                &lt;/div&gt;

            &lt;/div&gt;

          &lt;div class=<span class="hljs-string">"mt-3"</span>&gt;
              @<span class="hljs-keyword">if</span> (empty(<span class="hljs-variable">$user_id</span>))
                  @include(<span class="hljs-string">'components.wire-loading-btn'</span>)
              @endif
          &lt;/div&gt;
        &lt;/form&gt;

        &lt;form class=<span class="hljs-string">"mt-4"</span> wire:submit.prevent=<span class="hljs-string">"studentAdmit"</span>&gt;
            @<span class="hljs-keyword">if</span>(!empty(<span class="hljs-variable">$user_id</span>))
                &lt;div class=<span class="hljs-string">"mb-4"</span>&gt;
                    &lt;select wire:change=<span class="hljs-string">"courseSelected"</span> wire:model.lay=<span class="hljs-string">"course_id"</span> class=<span class="hljs-string">"lms-input"</span>&gt;
                        &lt;option value=<span class="hljs-string">""</span>&gt;Select course&lt;/option&gt;
                        @foreach(<span class="hljs-variable">$courses</span> as <span class="hljs-variable">$course</span>)
                            &lt;option value=<span class="hljs-string">"{{<span class="hljs-variable">$course</span>-&gt;id}}"</span>&gt;{{<span class="hljs-variable">$course</span>-&gt;name}}&lt;/option&gt;
                        @endforeach
                    &lt;/select&gt;
                &lt;/div&gt;
            @endif

            @<span class="hljs-keyword">if</span>(!empty(<span class="hljs-variable">$selectedCourse</span>))
                &lt;p class=<span class="hljs-string">"mb-4"</span>&gt;Price: <span class="hljs-variable">${{number_format($selectedCourse-&gt;price, 2)}</span>}&lt;/p&gt;

                &lt;div class=<span class="hljs-string">"mb-4"</span>&gt;
                    &lt;input wire:model.lazy=<span class="hljs-string">"payment"</span> <span class="hljs-built_in">type</span>=<span class="hljs-string">"number"</span> step=<span class="hljs-string">".01"</span> max=<span class="hljs-string">"{{number_format(<span class="hljs-variable">$selectedCourse</span>-&gt;price, 2)}}"</span> class=<span class="hljs-string">"lms-input"</span> placeholder=<span class="hljs-string">"Payment now"</span>&gt;
                &lt;/div&gt;

                @include(<span class="hljs-string">'components.wire-loading-btn'</span>)
            @endif
        &lt;/form&gt;
</code></pre>
<p>ব্যাস আমাদের কাজ complete .</p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/Yf83sjVSi2A"></iframe>

<p>discord link: <a target="_blank" href="http://discord.gg/9qWUUbQ3"><strong>discord.gg/9qWUUbQ3</strong></a></p>
<p>facebook group :<a target="_blank" href="http://web.facebook.com/groups/1661735757554627"><strong>web.facebook.com/groups/1661735757554627</strong></a></p>
<p>Happy Learning</p>
<p><strong><em>Rakibul Islam</em></strong></p>
]]></content:encoded></item><item><title><![CDATA[ক্লাস নং-২০(পার্ট-১৮) payment gateway stripe, and their services]]></title><description><![CDATA[আজকের ক্লাসে মূলত আমাদের payment gateway stripe নিয়ে আলোচনা হবে গতক্লাসে এটা নিয়ে কথা হয়েছে কিন্তু আমরা আমাদের invoice করে এবং payment gateway and theiir services নিয়ে প্রাথমিক আলোচনা করেছিলাম আজকে আমরা সেটা কে ভাল ভাবে জানব এবং ব্যাবহার করব।
তো প্রথ...]]></description><link>https://blog.shikhun.net/payment-gateway-stripe-and-their-services</link><guid isPermaLink="true">https://blog.shikhun.net/payment-gateway-stripe-and-their-services</guid><category><![CDATA[Stripe Checkout]]></category><category><![CDATA[payment gateway]]></category><category><![CDATA[laravelframework]]></category><category><![CDATA[Laravel]]></category><dc:creator><![CDATA[Rakibul Islam]]></dc:creator><pubDate>Mon, 16 Jan 2023 18:15:54 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1673892861365/a373ab34-3697-45f9-863f-72a99dab0077.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>আজকের ক্লাসে মূলত আমাদের payment gateway stripe নিয়ে আলোচনা হবে গতক্লাসে এটা নিয়ে কথা হয়েছে কিন্তু আমরা আমাদের invoice করে এবং payment gateway and theiir services নিয়ে প্রাথমিক আলোচনা করেছিলাম আজকে আমরা সেটা কে ভাল ভাবে জানব এবং ব্যাবহার করব।</p>
<p>তো প্রথমেই আমরা আমাদের project এ stripe install করে নেই।</p>
<pre><code class="lang-bash">composer require stripe/stripe-php
</code></pre>
<p>এরপর আমরা আমাদের show.blade.php file এ একটা ফর্ম নিয়ে সেখানে payment এর অপশন তৈরি করি।</p>
<pre><code class="lang-bash">&lt;form method=<span class="hljs-string">"post"</span> action=<span class="hljs-string">"{{route('stripe-payment')}}"</span>&gt; @csrf
                        &lt;div class=<span class="hljs-string">"flex mb-4"</span>&gt;
                            &lt;div class=<span class="hljs-string">"w-full"</span>&gt;
                                &lt;input value=<span class="hljs-string">"4242424242424242"</span> name=<span class="hljs-string">"card_no"</span> <span class="hljs-built_in">type</span>=<span class="hljs-string">"number"</span> class=<span class="hljs-string">"lms-input"</span> placeholder=<span class="hljs-string">"Card number"</span>&gt;
                            &lt;/div&gt;
                            &lt;div class=<span class="hljs-string">"min-w-max ml-4"</span>&gt;
                                &lt;input value=<span class="hljs-string">"12/30"</span> name=<span class="hljs-string">"card_expiry_date"</span> <span class="hljs-built_in">type</span>=<span class="hljs-string">"text"</span> class=<span class="hljs-string">"lms-input"</span> placeholder=<span class="hljs-string">"Expiry month/year"</span>&gt;
                            &lt;/div&gt;
                            &lt;div class=<span class="hljs-string">"min-w-max ml-4"</span>&gt;
                                &lt;input value=<span class="hljs-string">"232"</span> name=<span class="hljs-string">"card_ccv"</span> <span class="hljs-built_in">type</span>=<span class="hljs-string">"text"</span> class=<span class="hljs-string">"lms-input"</span> placeholder=<span class="hljs-string">"CCV"</span>&gt;
                            &lt;/div&gt;
                            &lt;div class=<span class="hljs-string">"min-w-max ml-4"</span>&gt;
                                &lt;input name=<span class="hljs-string">"amount"</span> <span class="hljs-built_in">type</span>=<span class="hljs-string">"number"</span> class=<span class="hljs-string">"lms-input"</span> value=<span class="hljs-string">"{{number_format(<span class="hljs-variable">$invoice</span>-&gt;amount()['due'], 2)}}"</span> placeholder=<span class="hljs-string">"Amount"</span>&gt;
                            &lt;/div&gt;
                            &lt;input <span class="hljs-built_in">type</span>=<span class="hljs-string">"hidden"</span> name=<span class="hljs-string">"invoice_id"</span> value=<span class="hljs-string">"{{<span class="hljs-variable">$invoice</span>-&gt;id}}"</span>&gt;
                        &lt;/div&gt;
                        &lt;button <span class="hljs-built_in">type</span>=<span class="hljs-string">"submit"</span> class=<span class="hljs-string">"lms-btn"</span>&gt;Pay Now&lt;/button&gt;
 &lt;/form&gt;
</code></pre>
<p>এবার আমাদের একটা controller make করা লাগবে যেখানে আমাদের payment এর কাজ গুলো করব।</p>
<pre><code class="lang-bash">php artisan make:controller StripePaymentController
</code></pre>
<p>এবার আমাদের একটা post রাউট তৈরি করা লাগবে।</p>
<pre><code class="lang-bash">Route::post(<span class="hljs-string">'/stripe-payment'</span>, [StripePaymentController::class, <span class="hljs-string">'stripePayment'</span>])-&gt;name(<span class="hljs-string">'stripe-payment'</span>);
</code></pre>
<p>এবার আমাদের controller এর মধ্যে গিয়ে সেখানে আমাদের প্রয়োজনীয় কোড গুলো লিখি।</p>
<pre><code class="lang-bash">public <span class="hljs-keyword">function</span> stripePayment(Request <span class="hljs-variable">$request</span>) {

        <span class="hljs-variable">$validator</span> = Validator::make(<span class="hljs-variable">$request</span>-&gt;all(), [
            <span class="hljs-string">'card_no'</span> =&gt; <span class="hljs-string">'required'</span>,
            <span class="hljs-string">'card_expiry_date'</span> =&gt; <span class="hljs-string">'required'</span>,
            <span class="hljs-string">'card_ccv'</span> =&gt; <span class="hljs-string">'required'</span>,
            <span class="hljs-string">'amount'</span> =&gt; <span class="hljs-string">'required'</span>,
            <span class="hljs-string">'invoice_id'</span> =&gt; <span class="hljs-string">'required|integer'</span>,
        ]);

        // validator fails
        <span class="hljs-keyword">if</span>(<span class="hljs-variable">$validator</span>-&gt;fails()) {
            flash()-&gt;addWarning(<span class="hljs-string">'Please fill all the fields'</span>);
        } <span class="hljs-keyword">else</span> {
            <span class="hljs-variable">$stripe</span> = new StripeClient(env(<span class="hljs-string">'STRIPE_SECRET'</span>));

            // try catch stripe token
            try {
                <span class="hljs-variable">$token</span> = <span class="hljs-variable">$stripe</span>-&gt;tokens-&gt;create([
                    <span class="hljs-string">'card'</span> =&gt; [
                        <span class="hljs-string">'number'</span> =&gt; <span class="hljs-variable">$request</span>-&gt;card_no,
                        <span class="hljs-string">'exp_month'</span> =&gt; explode(<span class="hljs-string">'/'</span>, <span class="hljs-variable">$request</span>-&gt;card_expiry_date)[0],
                        <span class="hljs-string">'exp_year'</span> =&gt; explode(<span class="hljs-string">'/'</span>, <span class="hljs-variable">$request</span>-&gt;card_expiry_date)[1],
                        <span class="hljs-string">'cvc'</span> =&gt; <span class="hljs-variable">$request</span>-&gt;card_ccv,
                    ],
                ]);
            } catch (\Exception <span class="hljs-variable">$e</span>) {
                flash()-&gt;addWarning(<span class="hljs-string">'Invalid card details'</span>);
                <span class="hljs-built_in">return</span> redirect()-&gt;back();
            }

            // dd(<span class="hljs-string">'test'</span>);

            <span class="hljs-variable">$charge</span> = <span class="hljs-variable">$stripe</span>-&gt;charges-&gt;create([
                <span class="hljs-string">'amount'</span> =&gt; intval(<span class="hljs-variable">$request</span>-&gt;amount * 100),
                <span class="hljs-string">'currency'</span> =&gt; <span class="hljs-string">'usd'</span>,
                <span class="hljs-string">'description'</span> =&gt; <span class="hljs-string">'Payment for invoice #'</span> . <span class="hljs-variable">$request</span>-&gt;invoice_id,
                <span class="hljs-string">'source'</span> =&gt; <span class="hljs-variable">$token</span>-&gt;id,
            ]);

            // dd(<span class="hljs-variable">$charge</span>);
            Payment::create([
                <span class="hljs-string">'amount'</span> =&gt; <span class="hljs-variable">$request</span>-&gt;amount,
                <span class="hljs-string">'invoice_id'</span> =&gt; <span class="hljs-variable">$request</span>-&gt;invoice_id,
                <span class="hljs-string">'transaction_id'</span> =&gt; <span class="hljs-variable">$charge</span>-&gt;id,
            ]);

            flash()-&gt;addSuccess(<span class="hljs-string">'Payment successful'</span>);
        }
        <span class="hljs-built_in">return</span> redirect()-&gt;back();
    }
</code></pre>
<p>এবং আমাদের stripe website এ গিয়ে একটা accaount make করতে হবে।এবং developer option mood on করলে সেখানে একটা secret key পাওয়া যাবে সেটা কপি করে নিয়ে env file এর নিচে paste করতে হবে' STRIPE_SECRET=sk_test_51MQaveCXCmINpP8TXp2F6DW8N7lLqwLCxGxti7kA80QdT00zmLkc3Cf(এমন একটা কোড তবে এটা দিয়েন না কাজ করবে না ।)</p>
<p>এবং আমাদের invoice-edit.blade.php file এ গিয়ে আমরা নিচের কোড গুলো দিতে পারি,।</p>
<pre><code class="lang-bash">&lt;div&gt;
    &lt;h2 class=<span class="hljs-string">"font-bold text-green-700  "</span>&gt;Information&lt;/h2&gt;
    &lt;p&gt;Invoice to: {{<span class="hljs-variable">$invoice</span>-&gt;user-&gt;name}}&lt;/p&gt;

    &lt;table class=<span class="hljs-string">"table-auto w-full mb-4"</span>&gt;
        &lt;tr&gt;
            &lt;th class=<span class="hljs-string">"lms-cell-border text-left"</span>&gt;Name&lt;/th&gt;
            &lt;th class=<span class="hljs-string">"lms-cell-border"</span>&gt;Price&lt;/th&gt;
            &lt;th class=<span class="hljs-string">"lms-cell-border"</span>&gt;Quantity&lt;/th&gt;
            &lt;th class=<span class="hljs-string">"lms-cell-border text-right"</span>&gt;Total&lt;/th&gt;
        &lt;/tr&gt;

        @foreach(<span class="hljs-variable">$invoice</span>-&gt;items as <span class="hljs-variable">$item</span>)
        &lt;tr&gt;
            &lt;td class=<span class="hljs-string">"lms-cell-border"</span>&gt;{{<span class="hljs-variable">$item</span>-&gt;name}}&lt;/td&gt;
            &lt;td class=<span class="hljs-string">"lms-cell-border text-center"</span>&gt;<span class="hljs-variable">${{number_format($item-&gt;price, 2)}</span>}&lt;/td&gt;
            &lt;td class=<span class="hljs-string">"lms-cell-border text-center"</span>&gt;{{<span class="hljs-variable">$item</span>-&gt;quantity}}&lt;/td&gt;
            &lt;td class=<span class="hljs-string">"lms-cell-border text-right"</span>&gt;<span class="hljs-variable">${{number_format($item-&gt;price * $item-&gt;quantity, 2)}</span>}&lt;/td&gt;
        &lt;/tr&gt;
        @endforeach
        &lt;tr&gt;
            &lt;td colspan=<span class="hljs-string">"3"</span> class=<span class="hljs-string">"lms-cell-border text-right"</span>&gt;Subtotal&lt;/td&gt;
            &lt;td class=<span class="hljs-string">"lms-cell-border text-right"</span>&gt;<span class="hljs-variable">${{number_format($invoice-&gt;amount()['total'], 2)}</span>}&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td colspan=<span class="hljs-string">"3"</span> class=<span class="hljs-string">"lms-cell-border text-right"</span>&gt;Paid&lt;/td&gt;
            &lt;td class=<span class="hljs-string">"lms-cell-border text-right"</span>&gt;- <span class="hljs-variable">${{number_format($invoice-&gt;amount()['paid'], 2)}</span>}&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td colspan=<span class="hljs-string">"3"</span> class=<span class="hljs-string">"lms-cell-border text-right"</span>&gt;Due&lt;/td&gt;
            &lt;td class=<span class="hljs-string">"lms-cell-border text-right"</span>&gt;<span class="hljs-variable">${{number_format($invoice-&gt;amount()['due'], 2)}</span>}&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/table&gt;




    @<span class="hljs-keyword">if</span>(<span class="hljs-variable">$enableAddItem</span>)
    &lt;form class=<span class="hljs-string">"mb-4"</span> wire:submit.prevent=<span class="hljs-string">"saveNewItem"</span>&gt;
        &lt;div class=<span class="hljs-string">"flex mb-4"</span>&gt;
            &lt;div class=<span class="hljs-string">"w-full"</span>&gt;
                @include(<span class="hljs-string">'components.form-field'</span>, [
                    <span class="hljs-string">'name'</span> =&gt; <span class="hljs-string">'name'</span>,
                    <span class="hljs-string">'label'</span> =&gt; <span class="hljs-string">'Name'</span>,
                    <span class="hljs-string">'type'</span> =&gt; <span class="hljs-string">'text'</span>,
                    <span class="hljs-string">'placeholder'</span> =&gt; <span class="hljs-string">'Item name'</span>,
                    <span class="hljs-string">'required'</span> =&gt; <span class="hljs-string">'required'</span>,
                ])
            &lt;/div&gt;

            &lt;div class=<span class="hljs-string">"min-w-max ml-4"</span>&gt;
                @include(<span class="hljs-string">'components.form-field'</span>, [
                    <span class="hljs-string">'name'</span> =&gt; <span class="hljs-string">'price'</span>,
                    <span class="hljs-string">'label'</span> =&gt; <span class="hljs-string">'Price'</span>,
                    <span class="hljs-string">'type'</span> =&gt; <span class="hljs-string">'number'</span>,
                    <span class="hljs-string">'placeholder'</span> =&gt; <span class="hljs-string">'Type price'</span>,
                    <span class="hljs-string">'required'</span> =&gt; <span class="hljs-string">'required'</span>,
                ])
            &lt;/div&gt;

            &lt;div class=<span class="hljs-string">"min-w-max ml-4"</span>&gt;
                @include(<span class="hljs-string">'components.form-field'</span>, [
                    <span class="hljs-string">'name'</span> =&gt; <span class="hljs-string">'quantity'</span>,
                    <span class="hljs-string">'label'</span> =&gt; <span class="hljs-string">'Quantity'</span>,
                    <span class="hljs-string">'type'</span> =&gt; <span class="hljs-string">'number'</span>,
                    <span class="hljs-string">'placeholder'</span> =&gt; <span class="hljs-string">'Type quantity'</span>,
                    <span class="hljs-string">'required'</span> =&gt; <span class="hljs-string">'required'</span>,
                ])
            &lt;/div&gt;


        &lt;/div&gt;
        &lt;div class=<span class="hljs-string">"flex mb-4"</span>&gt;
            @include(<span class="hljs-string">'components.wire-loading-btn'</span>)
            &lt;button class=<span class="hljs-string">" bg-red-500 ml-4 py-2 px-4 font-bold text-white "</span> wire:click=<span class="hljs-string">"addNewItem"</span> <span class="hljs-built_in">type</span>=<span class="hljs-string">"button"</span>&gt;Cancel&lt;/button&gt;
        &lt;/div&gt;
    &lt;/form&gt;
    @<span class="hljs-keyword">else</span>
        &lt;button class=<span class="hljs-string">"px-4 py-2 bg-green-300 mt-4 mb-4"</span> wire:click=<span class="hljs-string">"addNewItem"</span> class=<span class="hljs-string">"underline"</span>&gt;Add New Item&lt;/button&gt;
    @endif


    &lt;h3 class=<span class="hljs-string">"font-bold text-lg mb-2"</span>&gt;Payments&lt;/h3&gt;
    &lt;ul class=<span class="hljs-string">"mb-4"</span>&gt;
        @foreach(<span class="hljs-variable">$invoice</span>-&gt;payments as <span class="hljs-variable">$payment</span>)
        &lt;li&gt;{{date(<span class="hljs-string">'F j, Y - g:i:a'</span>, strtotime(<span class="hljs-variable">$payment</span>-&gt;created_at))}} - <span class="hljs-variable">${{number_format($payment-&gt;amount, 2)}</span>} - transaction ID: {{<span class="hljs-variable">$payment</span>-&gt;transaction_id}} &lt;button wire:click=<span class="hljs-string">"refund({{<span class="hljs-variable">$payment</span>-&gt;id}})"</span> class=<span class="hljs-string">"bg-red-500 text-white px-4 py-1 mb-2 text-xs"</span>&gt;Refund&lt;/button&gt;&lt;/li&gt;
        @endforeach
    &lt;/ul&gt;
&lt;/div&gt;
</code></pre>
<p>এবার আমরা আমাদের website এ গিয়ে invoiceedit এ গিয়ে test করতে পারি।</p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/OzcFQ2gOThw"></iframe>

<p>discord link: <a target="_blank" href="http://discord.gg/9qWUUbQ3"><strong>discord.gg/9qWUUbQ3</strong></a></p>
<p>facebook group :<a target="_blank" href="http://web.facebook.com/groups/1661735757554627"><strong>web.facebook.com/groups/1661735757554627</strong></a></p>
<p>Happy Learning</p>
<p><strong><em>Rakibul Islam</em></strong></p>
]]></content:encoded></item><item><title><![CDATA[ক্লাস নং-২০(পার্ট-১৭)- invoice single, invoice payment by stripe and others]]></title><description><![CDATA[যেহেতু আমাদের প্রজেক্টের সব কিছুই livewire দিয়ে করছি তাই আমরা এটাও করার জন্য প্রথমেই একটা component make করব।
php artisan livewire:make InvoiceEdit

এবার আমাদের user folder এর মধ্যে যে invoice folder আছে তারমধ্যে আমাদের show.blade.php file এই ফাইলের ...]]></description><link>https://blog.shikhun.net/invoice-single-invoice-payment-by-stripe-and-others</link><guid isPermaLink="true">https://blog.shikhun.net/invoice-single-invoice-payment-by-stripe-and-others</guid><category><![CDATA[Laravel]]></category><category><![CDATA[stripe]]></category><category><![CDATA[payment gateway]]></category><dc:creator><![CDATA[Rakibul Islam]]></dc:creator><pubDate>Mon, 16 Jan 2023 18:08:36 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1673892448929/cd99f4af-7317-4887-84b6-787d98f86137.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>যেহেতু আমাদের প্রজেক্টের সব কিছুই livewire দিয়ে করছি তাই আমরা এটাও করার জন্য প্রথমেই একটা component make করব।</strong></p>
<pre><code class="lang-bash">php artisan livewire:make InvoiceEdit
</code></pre>
<p><strong>এবার আমাদের user folder এর মধ্যে যে invoice folder আছে তারমধ্যে আমাদের show.blade.php file এই ফাইলের মধ্যে আমরা আমাদের livewire যে component make করলাম সেটাকে শো করাব।</strong></p>
<p><strong>এবার আমাদের invoice-edit blade file এ গিয়ে কোড গুলো লিখি।</strong></p>
<pre><code class="lang-bash">&lt;div&gt;
    &lt;h2 class=<span class="hljs-string">"font-bold text-green-700  "</span>&gt;Information&lt;/h2&gt;
    &lt;p&gt;Invoice to: {{<span class="hljs-variable">$invoice</span>-&gt;user-&gt;name}}&lt;/p&gt;

    &lt;table class=<span class="hljs-string">"table-auto w-full mb-4"</span>&gt;
        &lt;tr&gt;
            &lt;th class=<span class="hljs-string">"lms-cell-border text-left"</span>&gt;Name&lt;/th&gt;
            &lt;th class=<span class="hljs-string">"lms-cell-border"</span>&gt;Price&lt;/th&gt;
            &lt;th class=<span class="hljs-string">"lms-cell-border"</span>&gt;Quantity&lt;/th&gt;
            &lt;th class=<span class="hljs-string">"lms-cell-border text-right"</span>&gt;Total&lt;/th&gt;
        &lt;/tr&gt;

        @foreach(<span class="hljs-variable">$invoice</span>-&gt;items as <span class="hljs-variable">$item</span>)
        &lt;tr&gt;
            &lt;td class=<span class="hljs-string">"lms-cell-border"</span>&gt;{{<span class="hljs-variable">$item</span>-&gt;name}}&lt;/td&gt;
            &lt;td class=<span class="hljs-string">"lms-cell-border text-center"</span>&gt;<span class="hljs-variable">${{number_format($item-&gt;price, 2)}</span>}&lt;/td&gt;
            &lt;td class=<span class="hljs-string">"lms-cell-border text-center"</span>&gt;{{<span class="hljs-variable">$item</span>-&gt;quantity}}&lt;/td&gt;
            &lt;td class=<span class="hljs-string">"lms-cell-border text-right"</span>&gt;<span class="hljs-variable">${{number_format($item-&gt;price * $item-&gt;quantity, 2)}</span>}&lt;/td&gt;
        &lt;/tr&gt;
        @endforeach
        &lt;tr&gt;
            &lt;td colspan=<span class="hljs-string">"3"</span> class=<span class="hljs-string">"lms-cell-border text-right"</span>&gt;Subtotal&lt;/td&gt;
            &lt;td class=<span class="hljs-string">"lms-cell-border text-right"</span>&gt;<span class="hljs-variable">${{number_format($invoice-&gt;amount()['total'], 2)}</span>}&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td colspan=<span class="hljs-string">"3"</span> class=<span class="hljs-string">"lms-cell-border text-right"</span>&gt;Paid&lt;/td&gt;
            &lt;td class=<span class="hljs-string">"lms-cell-border text-right"</span>&gt;- <span class="hljs-variable">${{number_format($invoice-&gt;amount()['paid'], 2)}</span>}&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td colspan=<span class="hljs-string">"3"</span> class=<span class="hljs-string">"lms-cell-border text-right"</span>&gt;Due&lt;/td&gt;
            &lt;td class=<span class="hljs-string">"lms-cell-border text-right"</span>&gt;<span class="hljs-variable">${{number_format($invoice-&gt;amount()['due'], 2)}</span>}&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/table&gt;




    @<span class="hljs-keyword">if</span>(<span class="hljs-variable">$enableAddItem</span>)
    &lt;form class=<span class="hljs-string">"mb-4"</span> wire:submit.prevent=<span class="hljs-string">"saveNewItem"</span>&gt;
        &lt;div class=<span class="hljs-string">"flex mb-4"</span>&gt;
            &lt;div class=<span class="hljs-string">"w-full"</span>&gt;
                @include(<span class="hljs-string">'components.form-field'</span>, [
                    <span class="hljs-string">'name'</span> =&gt; <span class="hljs-string">'name'</span>,
                    <span class="hljs-string">'label'</span> =&gt; <span class="hljs-string">'Name'</span>,
                    <span class="hljs-string">'type'</span> =&gt; <span class="hljs-string">'text'</span>,
                    <span class="hljs-string">'placeholder'</span> =&gt; <span class="hljs-string">'Item name'</span>,
                    <span class="hljs-string">'required'</span> =&gt; <span class="hljs-string">'required'</span>,
                ])
            &lt;/div&gt;

            &lt;div class=<span class="hljs-string">"min-w-max ml-4"</span>&gt;
                @include(<span class="hljs-string">'components.form-field'</span>, [
                    <span class="hljs-string">'name'</span> =&gt; <span class="hljs-string">'price'</span>,
                    <span class="hljs-string">'label'</span> =&gt; <span class="hljs-string">'Price'</span>,
                    <span class="hljs-string">'type'</span> =&gt; <span class="hljs-string">'number'</span>,
                    <span class="hljs-string">'placeholder'</span> =&gt; <span class="hljs-string">'Type price'</span>,
                    <span class="hljs-string">'required'</span> =&gt; <span class="hljs-string">'required'</span>,
                ])
            &lt;/div&gt;

            &lt;div class=<span class="hljs-string">"min-w-max ml-4"</span>&gt;
                @include(<span class="hljs-string">'components.form-field'</span>, [
                    <span class="hljs-string">'name'</span> =&gt; <span class="hljs-string">'quantity'</span>,
                    <span class="hljs-string">'label'</span> =&gt; <span class="hljs-string">'Quantity'</span>,
                    <span class="hljs-string">'type'</span> =&gt; <span class="hljs-string">'number'</span>,
                    <span class="hljs-string">'placeholder'</span> =&gt; <span class="hljs-string">'Type quantity'</span>,
                    <span class="hljs-string">'required'</span> =&gt; <span class="hljs-string">'required'</span>,
                ])
            &lt;/div&gt;


        &lt;/div&gt;
        &lt;div class=<span class="hljs-string">"flex mb-4"</span>&gt;
            @include(<span class="hljs-string">'components.wire-loading-btn'</span>)
            &lt;button class=<span class="hljs-string">" bg-red-500 ml-4 py-2 px-4 font-bold text-white "</span> wire:click=<span class="hljs-string">"addNewItem"</span> <span class="hljs-built_in">type</span>=<span class="hljs-string">"button"</span>&gt;Cancel&lt;/button&gt;
        &lt;/div&gt;
    &lt;/form&gt;
    @<span class="hljs-keyword">else</span>
        &lt;button class=<span class="hljs-string">"px-4 py-2 bg-green-300 mt-4 mb-4"</span> wire:click=<span class="hljs-string">"addNewItem"</span> class=<span class="hljs-string">"underline"</span>&gt;Add New Item&lt;/button&gt;
    @endif


    &lt;h3 class=<span class="hljs-string">"font-bold text-lg mb-2"</span>&gt;Payments&lt;/h3&gt;
    &lt;ul class=<span class="hljs-string">"mb-4"</span>&gt;
        @foreach(<span class="hljs-variable">$invoice</span>-&gt;payments as <span class="hljs-variable">$payment</span>)
        &lt;li&gt;{{date(<span class="hljs-string">'F j, Y - g:i:a'</span>, strtotime(<span class="hljs-variable">$payment</span>-&gt;created_at))}} - <span class="hljs-variable">${{number_format($payment-&gt;amount, 2)}</span>} - transaction ID: {{<span class="hljs-variable">$payment</span>-&gt;transaction_id}} &lt;button wire:click=<span class="hljs-string">"refund({{<span class="hljs-variable">$payment</span>-&gt;id}})"</span> class=<span class="hljs-string">"bg-red-500 text-white px-4 py-2 text-xs"</span>&gt;Refund&lt;/button&gt;&lt;/li&gt;
        @endforeach
    &lt;/ul&gt;
&lt;/div&gt;
</code></pre>
<p>এবং আমাদের যে component file টা আছে সেখানে নিচের কোড গুলো লিখি,।</p>
<pre><code class="lang-bash">public <span class="hljs-variable">$invoice_id</span>;
    public <span class="hljs-variable">$invoice</span>;
    public <span class="hljs-variable">$enableAddItem</span> = <span class="hljs-literal">false</span>;
    public <span class="hljs-variable">$name</span>;
    public <span class="hljs-variable">$quantity</span>;
    public <span class="hljs-variable">$price</span>;

    public <span class="hljs-keyword">function</span> <span class="hljs-function"><span class="hljs-title">mount</span></span>() {
        <span class="hljs-variable">$this</span>-&gt;invoice = Invoice::findOrFail(<span class="hljs-variable">$this</span>-&gt;invoice_id);
    }
    public <span class="hljs-keyword">function</span> <span class="hljs-function"><span class="hljs-title">render</span></span>()
    {
        <span class="hljs-built_in">return</span> view(<span class="hljs-string">'livewire.invoice-edit'</span>);
    }

    public <span class="hljs-keyword">function</span> <span class="hljs-function"><span class="hljs-title">addNewItem</span></span>() {
        <span class="hljs-variable">$this</span>-&gt;enableAddItem = !<span class="hljs-variable">$this</span>-&gt;enableAddItem;
    }

    public <span class="hljs-keyword">function</span> <span class="hljs-function"><span class="hljs-title">saveNewItem</span></span>() {
        InvoiceItem::create([
            <span class="hljs-string">'name'</span> =&gt; <span class="hljs-variable">$this</span>-&gt;name,
            <span class="hljs-string">'price'</span> =&gt; <span class="hljs-variable">$this</span>-&gt;price,
            <span class="hljs-string">'quantity'</span> =&gt; <span class="hljs-variable">$this</span>-&gt;quantity,
            <span class="hljs-string">'invoice_id'</span> =&gt; <span class="hljs-variable">$this</span>-&gt;invoice_id,
        ]);

        <span class="hljs-variable">$this</span>-&gt;name = <span class="hljs-string">''</span>;
        <span class="hljs-variable">$this</span>-&gt;price = <span class="hljs-string">''</span>;
        <span class="hljs-variable">$this</span>-&gt;quantity = <span class="hljs-string">''</span>;

        <span class="hljs-variable">$this</span>-&gt;addNewItem();

        flash()-&gt;addSuccess(<span class="hljs-string">'Added!'</span>);

        <span class="hljs-built_in">return</span> redirect(route(<span class="hljs-string">'invoice-show'</span>, <span class="hljs-variable">$this</span>-&gt;invoice_id));
    }
</code></pre>
<p><strong>এবং আমাদের যে controller আছে সেখানে id এর পরিবর্তে invoice গুলো পাঠিয়ে দেই।</strong></p>
<pre><code class="lang-bash"><span class="hljs-built_in">return</span> view(<span class="hljs-string">'user.invoice.show'</span>, [
            <span class="hljs-string">'invoice'</span> =&gt; Invoice::findOrFail(<span class="hljs-variable">$id</span>),
        ]);
</code></pre>
<p>এবং আমাদের যে মডেল আছে সেখানে fillable property গুলো দিয়ে দেই।</p>
<p>এবং আমাদের আগেই subtotal calculate করা আছে আমরা সেই কোড গুলো review করলেই বুঝতে পারব আশা করি ।আর যদি কোন কিছু মিসিং থাকে আমাদের github repository তো আছেই।</p>
<p>আশা করি খুব সিম্পল ভাবেই বুঝতে পেরেছেন।</p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/7VX_C2pw6Jw"></iframe>

<p>discord link: <a target="_blank" href="http://discord.gg/9qWUUbQ3"><strong>discord.gg/9qWUUbQ3</strong></a></p>
<p>facebook group :<a target="_blank" href="http://web.facebook.com/groups/1661735757554627"><strong>web.facebook.com/groups/1661735757554627</strong></a></p>
<p>Happy Learning</p>
<p><strong><em>Rakibul Islam</em></strong></p>
]]></content:encoded></item><item><title><![CDATA[পি এইচ পি  সিন্ট্যাক্স (PHP  Syntax)]]></title><description><![CDATA[Post No:27
আসসালামুয়ালাইকুম আশা করি সবাই অনেক ভালো আছেন আজকে আমরা পি এইচ পি সিন্ট্যাক্স (PHP Syntax) এর ব্যবহার সম্পর্কে জানবো।
আমার আগের ব্লগ গুলা পড়ার জন্যে লিংকে ক্লিক করুন:hashnode.com/@Labib
পিএইচপি হলো একটি প্রোগ্রামিং ল্যাগুয়েজ যা ওয়েব ডেভেলপম...]]></description><link>https://blog.shikhun.net/php-syntax</link><guid isPermaLink="true">https://blog.shikhun.net/php-syntax</guid><category><![CDATA[PHP]]></category><category><![CDATA[পি এইচ পি  সিন্ট্যাক্স]]></category><dc:creator><![CDATA[Labib]]></dc:creator><pubDate>Mon, 16 Jan 2023 17:28:58 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1673889803618/d64fa6c4-7da1-404a-8b3e-0e67101748c9.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><s>Post No:27</s></p>
<p>আসসালামুয়ালাইকুম আশা করি সবাই অনেক ভালো আছেন আজকে আমরা পি এইচ পি সিন্ট্যাক্স (PHP Syntax) এর ব্যবহার সম্পর্কে জানবো।</p>
<p>আমার আগের ব্লগ গুলা পড়ার জন্যে লিংকে ক্লিক করুন:<br /><a target="_blank" href="http://hashnode.com/@Labib"><strong>hashnode.com/@Labib</strong></a></p>
<p>পিএইচপি হলো একটি প্রোগ্রামিং ল্যাগুয়েজ যা ওয়েব ডেভেলপমেন্ট এর জন্য বহুল ব্যবহৃত।</p>
<p>পিএইচপি কোড এর প্রতিটি অংশ &lt; ?php চিহ্ন দিয়ে শুরু এবং ?&gt; চিহ্ন দিয়ে শেষ হবে।<br />এবার আপনার কোড এডিটর (নোটপ্যাড/ড্রিময়েভার বা আপনি যা ব্যাবহার করেন) খুলুন এবং নিচের মত লিখুনঃ</p>
<hr />
<pre><code class="lang-php">&lt; ?php
 <span class="hljs-comment">// PHP code goes here</span>
 <span class="hljs-meta">?&gt;</span>
</code></pre>
<hr />
<p>পিএইচপি কোড কে কাজ করাতে অবশ্যই ফাইলটি সেভ করার সময় .php এক্সটেনশন দিয়ে সেভ করতে হবে। যদি .html থাকে তাহলে পিএইচপি কোড execute হবেনা।</p>
<p>এবার তাহলে ছোট একটা কোড লেখা যাক।</p>
<hr />
<pre><code class="lang-xml"><span class="hljs-meta">&lt;!DOCTYPE <span class="hljs-meta-keyword">html</span>&gt;</span>
 <span class="hljs-tag">&lt;<span class="hljs-name">html</span>&gt;</span>
 <span class="hljs-tag">&lt;<span class="hljs-name">body</span>&gt;</span>

 <span class="hljs-tag">&lt;<span class="hljs-name">h1</span>&gt;</span>My first PHP page<span class="hljs-tag">&lt;/<span class="hljs-name">h1</span>&gt;</span>

 <span class="hljs-tag">&lt;<span class="hljs-name">?php</span>
 <span class="hljs-attr">echo</span> "<span class="hljs-attr">Hello</span> <span class="hljs-attr">World</span>!";
 ?&gt;</span>

 <span class="hljs-tag">&lt;/<span class="hljs-name">body</span>&gt;</span>
 <span class="hljs-tag">&lt;/<span class="hljs-name">html</span>&gt;</span>
</code></pre>
<hr />
<p>উপরে লক্ষ্য করুন echo নামে একটা ফাংশন ব্যবহার করা হয়েছে যেটা দিয়ে php তে কোনো লেখা প্রদর্শন করানো হয়। তারপর লক্ষ্য করুন ";" সেমিকোলন চিহ্ন ব্যবহার করা হয়েছে। এটা দিয়ে পিএইচপি-তে কোনো লাইন শেষ বুঝনো হয়। অর্থাৎ কোনো লাইনের শেষে ; দিয়ে সেই লাইনের এক্সিকিউশন বন্ধ করা হয়। উদাহরণঃ " Hello World!"</p>
<h2 id="heading-php"><strong>PHP তে কমেন্ট</strong></h2>
<p>কোনো প্রোগ্রামিং লান্গুয়েজে যখন কমেন্ট বা মন্তব্য যোগ করা হয় তখন তা এক্সিকিউশন হয় না। কমেন্ট সাধারনত সাহায্যকারী হিসেবে ব্যবহৃত হয়। যাতে একটা কোড লেখা দেখে সহজে বুঝা যায় যে কোডটি কেন লেখা হয়েছে। পিএইচপি-তে সাধারনত তিন ধরনের কমেন্ট ব্যবহার করা হয়।</p>
<p>উদাহরণঃ</p>
<hr />
<pre><code class="lang-xml"><span class="hljs-meta">&lt;!DOCTYPE <span class="hljs-meta-keyword">html</span>&gt;</span>
 <span class="hljs-tag">&lt;<span class="hljs-name">html</span>&gt;</span>
 <span class="hljs-tag">&lt;<span class="hljs-name">body</span>&gt;</span>

 <span class="hljs-tag">&lt;<span class="hljs-name">?php</span>
 // <span class="hljs-attr">This</span> <span class="hljs-attr">is</span> <span class="hljs-attr">a</span> <span class="hljs-attr">single-line</span> <span class="hljs-attr">comment</span>

 # <span class="hljs-attr">This</span> <span class="hljs-attr">is</span> <span class="hljs-attr">also</span> <span class="hljs-attr">a</span> <span class="hljs-attr">single-line</span> <span class="hljs-attr">comment</span>

 /*
 <span class="hljs-attr">This</span> <span class="hljs-attr">is</span> <span class="hljs-attr">a</span> <span class="hljs-attr">multiple-lines</span> <span class="hljs-attr">comment</span> <span class="hljs-attr">block</span>
 <span class="hljs-attr">that</span> <span class="hljs-attr">spans</span> <span class="hljs-attr">over</span> <span class="hljs-attr">multiple</span>
 <span class="hljs-attr">lines</span>
 */

 // <span class="hljs-attr">You</span> <span class="hljs-attr">can</span> <span class="hljs-attr">also</span> <span class="hljs-attr">use</span> <span class="hljs-attr">comments</span> <span class="hljs-attr">to</span> <span class="hljs-attr">leave</span> <span class="hljs-attr">out</span> <span class="hljs-attr">parts</span> <span class="hljs-attr">of</span> <span class="hljs-attr">a</span> <span class="hljs-attr">code</span> <span class="hljs-attr">line</span>
 $<span class="hljs-attr">x</span> = <span class="hljs-string">5</span> /* + <span class="hljs-attr">15</span> */ + <span class="hljs-attr">5</span>;
 <span class="hljs-attr">echo</span> $<span class="hljs-attr">x</span>;
 ?&gt;</span>

 <span class="hljs-tag">&lt;/<span class="hljs-name">body</span>&gt;</span>
 <span class="hljs-tag">&lt;/<span class="hljs-name">html</span>&gt;</span>
</code></pre>
<hr />
<p>single line comment - // এই চিহ্ন দ্বারা।<br />এখানে // এই চিহ্ন এর পরের This is single line comment এই লেখাটি ব্রাউজার প্রদর্শন করবে না। কারণ এইটা কমেন্ট এর মধ্যে লেখা</p>
<p>multi-line comment - /* */<br />এখানে # এর পরের লেখাগুলোও ব্রাউজার দেখাবে না। কারণ এটাও একটা কমেন্ট। এটাকে বলা হয় ইউনিক্সের শেল স্টাইল মন্তব্য। এই স্টাইলটা বেশি ব্যবহৃত হয় কোনো পিএইচপি কনফিগারেশন বা মান সম্পর্কিত মন্তব্য যোগ করতে।</p>
]]></content:encoded></item><item><title><![CDATA[পি এইচ পি  ইন্সটলেশন (PHPInstallation)]]></title><description><![CDATA[Post No:26
আসসালামুয়ালাইকুম ,আশা করি সবাই অনেক অনেক ভালো আছেন।গত দুই তিন আমি কিছুই ব্ পোস্ট করিনি এইটার জন্যে আপনাদের কাছে আগেই ক্ষমা চেয়ে নিচ্ছি তার কারণ ছিলো আমার ল্যাপটপের যান্ত্রিক ক্রুটির জন্যে । আজকে থেকে ইনশাআল্লাহ নিয়মিত ব্লগ দেওয়ার চেষ্টা কর...]]></description><link>https://blog.shikhun.net/phpinstallation</link><guid isPermaLink="true">https://blog.shikhun.net/phpinstallation</guid><category><![CDATA[PHP]]></category><category><![CDATA[পি এইচ পি  ইন্সটলেশন]]></category><dc:creator><![CDATA[Labib]]></dc:creator><pubDate>Sun, 15 Jan 2023 20:43:10 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1673815309789/f0aa3a19-7dc2-4baf-a378-83f1b2b0a2a4.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><s>Post No:26</s></p>
<p>আসসালামুয়ালাইকুম ,আশা করি সবাই অনেক অনেক ভালো আছেন।গত দুই তিন আমি কিছুই ব্ পোস্ট করিনি এইটার জন্যে আপনাদের কাছে আগেই ক্ষমা চেয়ে নিচ্ছি তার কারণ ছিলো আমার ল্যাপটপের যান্ত্রিক ক্রুটির জন্যে । আজকে থেকে ইনশাআল্লাহ নিয়মিত ব্লগ দেওয়ার চেষ্টা করবো আমার আগের বেসিক Html and Css ব্লগ সিরিজ টা শেষ হয়েছে ২৫ নং ব্লগ পোস্টের মাধ্যমে ।আশা করছি অনেক কিছু শিখতে পারছেন আমি যতোটুকু পারি ঠিক এতোটুকু শিখানোর ট্রাই করছি। আমার ব্লগের বাহিরে ও অনেক কিছু আছে যেগুলো আপনাদের নিজে নিজে রিসার্চ করে গুগল ইউটউবে থেকে শিকতে হবে।<br />আচ্ছা যাই হোক এখন আসল কথায় আসি আজকে থেকে আমি যতোটুকু পারি এতোটুকু দিয়ে পি এইপির বেসিক একটা সিরিজ ব্লগ করবো যেটাতে আমি Php বেসিক টাকে কভার করার চেষ্টা করবো ।এই ব্লগ সিরিজটা খুব বড়ো হবে না ছোটো ছোট অংশে পোস্ট করা হবে আশা করি সবাই সাপোর্ট করবেন। আজকে এই পর্যন্তই কাজে ফিরে আসা যাক আমি এর আগে Php পরিচিত নিয়ে পোস্ট দিয়েছি ঐ ব্লগটা পরার জন্যে নিচে লিংকে ক্লিক করুন।<br /><a target="_blank" href="https://blog.shikhun.net/php">https://blog.shikhun.net/php</a></p>
<p>আগের ব্লগ গুলা পড়ার জন্যে লিংকে ক্লিক করুন:<br /><a target="_blank" href="https://hashnode.com/@Labib"><strong>https://hashnode.com/@Labib</strong></a>  </p>
<h1 id="heading-php-5"><strong>PHP 5 ইনস্টলেশন</strong></h1>
<p>PHP শিখতে গেলে আপনার নিজের পিসিতে কিংবা ওয়েব সার্ভারে এই সফটওয়্যারটি প্রয়োজন। তাই ইনস্টলেশনটা আগে শিখতে হবে।</p>
<p>PHP ইনস্টল করতে আমরা যেসব ব্যবস্থা নিতে পারি:</p>
<ul>
<li><p>PHP এবং MySQL সাপোর্ট করে এমন একটি ওয়েব হোস্টিং খুজে বের করা। কিংবা,</p>
</li>
<li><p>আপনার নিজের কম্পিউটারে ওয়েব সার্ভার ইনস্টল করা এবং তারপর PHP এবং MySQL ইনস্টল করা।</p>
</li>
</ul>
<p>আপনার ওয়েব সার্ভারে যদি আগে থেকেই PHP সাপোর্ট বিদ্যমান থাকে, তবে নতুন করে কিছু করতে হবে না। পিএইচপি এক্সটেনশনযুক্ত একটি ফাইল (*.php) তৈরী করুন এবং তা সার্ভারে আপলোড করুন। তাহলে সার্ভার এই ফাইল আপনার কাজের জন্য প্রস্তুত করে দিবে। আপনার অতিরিক্ত কোনো টুলস ইনস্টল করার প্রয়োজন হবে না। পিএইচপি একটি ফ্রি সফটওয়্যার এবং বেশিরভাগ ওয়েব হোস্টিং এটি সাপোর্ট করে।</p>
<h2 id="heading-php"><strong>নিজের পিসিতে PHP ইনস্টল</strong></h2>
<p>যদি আপনার ওয়েব সার্ভার পিএইচপি সাপোর্ট না করে তবে পিএইচপি শিখতে গেলে আপনাকে অবশ্যই নিজের পিসিতে এটি ইনস্টল করে নিতে হবে।<br />ধারাবাহিকভাবে আপনাকে যা করতে হবে:</p>
<ul>
<li><p>নিজের পিসিতে একটি ওয়েব সার্ভার ইনস্টল করুন,</p>
</li>
<li><p>PHP ইনস্টল করুন,</p>
</li>
<li><p>MySQL বা অন্য কোনো ডাটাবেজ ইনস্টল করুন।</p>
</li>
</ul>
<p>পিএইচপি’র অফিসিয়াল ওয়েবসাইটে এটি ইনস্টল করার বিস্তারিত নির্দেশনা দেয়া আছে। সাইটের লিংক ব্রাউজ করতে ক্লিক করুন –<br />http://php.net/manual/en/install.php</p>
]]></content:encoded></item><item><title><![CDATA[লারাভেল শিখতে হলে আপনার যা জানা থাকা লাগবে এবং শুরু করার সময় যা যা লাগবে (Requirements for Learning Laravel Framework)]]></title><description><![CDATA[লারাভেল শিখতে হলে আপনার যা জানা থাকা লাগবে:
HTML
CSS
JavaScript
SQL
PHP
PHP OOP
MVC
Composer
HTML:
অর্থ্যাৎ HyperText Markup Language. এইচটিএমএল হল ওয়েব ব্রাউজারে প্রদর্শনের জন্য স্ট্রাকচার করার জন্য আদর্শ মার্কআপ ভাষা। এটি CSS এবং JavaScript  এর মত...]]></description><link>https://blog.shikhun.net/requirements-for-learning-laravel-framework</link><guid isPermaLink="true">https://blog.shikhun.net/requirements-for-learning-laravel-framework</guid><category><![CDATA[লারাভেল]]></category><category><![CDATA[Requirements for Learning Laravel]]></category><dc:creator><![CDATA[Mohammad Ullah]]></dc:creator><pubDate>Sun, 15 Jan 2023 18:19:17 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1673715634799/556f8d4b-5571-4d37-83aa-994a71f2ae1c.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>লারাভেল শিখতে হলে আপনার যা জানা থাকা লাগবে:</p>
<p>HTML</p>
<p>CSS</p>
<p>JavaScript</p>
<p>SQL</p>
<p>PHP</p>
<p>PHP OOP</p>
<p>MVC</p>
<p>Composer</p>
<p>HTML:</p>
<p>অর্থ্যাৎ HyperText Markup Language. এইচটিএমএল হল ওয়েব ব্রাউজারে প্রদর্শনের জন্য স্ট্রাকচার করার জন্য আদর্শ মার্কআপ ভাষা। এটি CSS এবং JavaScript  এর মতো স্ক্রিপ্টিং ভাষা ।</p>
<p>CSS:</p>
<p>অর্থ্যাৎ Cascading Style Sheets. HTML দিয়ে মার্কাপ করা হয় আর সিএসএস দিয়ে ডিজাইন।</p>
<p>JavaScript:</p>
<p>জাভাস্ক্রিপ্ট কে সংক্ষেপে JS বলা হয়, এটি একটি প্রোগ্রামিং ল্যাঙ্গুয়েজ যা HTML এবং CSS এর পাশাপাশি ওয়ার্ল্ড ওয়াইড Web এর অন্যতম প্রধান টেকনোলজি। 2022 সালের হিসেবে, 98% ক্লায়েন্ট সাইডে JavaScript  ব্যবহার করা হয়েছে  এবং থার্ট পার্টি লাইব্রেরিগুলিকে অন্তর্ভুক্ত করে।</p>
<p>SQL:</p>
<p>Structured Query Language., সংক্ষেপে SQL বল হয়। এটি একটি কুয়ারি ল্যাঙ্গুয়েজ, সহজ ভাষায় বলা যায় ডেটা সংরক্ষন ও মেনেজমেন্ট করার জন্য আমরা যে ল্যাঙ্গুয়েজ ব্যবহার করি তাকে এসকিউএল বলে।</p>
<p>PHP:</p>
<p>পিএইচপি হল একটি সার্ভার স্ক্রিপ্টিং ল্যাঙ্গুয়েজ  এবং পাওয়ারফুল গতিশীল ডাইনামিক ওয়েব পেইজ তৈরির জন্য একটি শক্তিশালী টুল। এটি অপেন সোর্স বা সম্পূর্ণ ফ্রি।</p>
<p>OOP:</p>
<p>অর্থ্যাৎ Object-Oriented Programming. কোড লেখার ধরন সাধারনত দুইভাবে হয়, ১) Object-oriented programming. ২) Procedural programming.</p>
<p>Procedural programming –এর তুলনায় Object-oriented programming -এর বেশ কিছু সুবিধা রয়েছে।</p>
<p>MVC:</p>
<p>অর্থ্যাৎ Model–view–controller হল একটি সফ্টওয়্যার আর্কিটেকচারাল প্যাটার্ন যা সাধারণত user interface তৈরির জন্য ব্যবহৃত হয় যা প্রোগ্রামিং লজিকগুলোকে 3 টি সংযুক্ত উপাদানে ভাগ করে দেয়।</p>
<p>Composer:</p>
<p>অর্থ্যাৎ এটি পিএইচপির ডিপেনডেন্সি ম্যানেজার। যেটা ডেভেলপারের কাজ সহজ ও দ্রুতগতিতে করতে সহায়তা করে।</p>
<p><strong>ফাইনালি লারাভেল শুরু করার সময় যা যা লাগবে:</strong></p>
<p>PHP (আপডেট ভার্শন).</p>
<p>Local Server (Xampp, Wamp, Valit, Laragon).</p>
<p>Composer.</p>
<p>Text/Code Editor (VS Code, Notepad++, Brackets).</p>
<p>Web Browser.</p>
]]></content:encoded></item><item><title><![CDATA[ক্লাস নং-২০(পার্ট-১৫)-লারাভেল LMS Project Quiz section create crud operation and others]]></title><description><![CDATA[আজকের ক্লাসে আমরা মূলত আমাদের লারাভেল প্রজেক্টের যে বাকি কাজ গুলো ছিল কুইজের সেগুলো complete করব।এবং আমরা আরো অন্যান্য বিষয় গুলো দেখবো।
যেহেতু আমরা আগের ক্লাসেই আমাদের টাস্ক গুলো complete করেছি ওখান থেকেই আমরা আমাদের কুইজ গুলোকে ভিউ করিয়েছি ।এবং আজকে...]]></description><link>https://blog.shikhun.net/lms-project-quiz-section-create-crud-operation-and-others</link><guid isPermaLink="true">https://blog.shikhun.net/lms-project-quiz-section-create-crud-operation-and-others</guid><category><![CDATA[Laravel]]></category><dc:creator><![CDATA[Rakibul Islam]]></dc:creator><pubDate>Sun, 15 Jan 2023 13:51:42 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1673790517771/cf3f1acb-4788-4d5f-836c-4bcec1586dac.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>আজকের ক্লাসে আমরা মূলত আমাদের লারাভেল প্রজেক্টের যে বাকি কাজ গুলো ছিল কুইজের সেগুলো complete করব।এবং আমরা আরো অন্যান্য বিষয় গুলো দেখবো।</strong></p>
<p><strong>যেহেতু আমরা আগের ক্লাসেই আমাদের টাস্ক গুলো complete করেছি ওখান থেকেই আমরা আমাদের কুইজ গুলোকে ভিউ করিয়েছি ।এবং আজকে আমরা সেই কুইজ গুলোকে ইডিট করে সেখানে সঠিক উত্তর সেট করব।</strong></p>
<p><strong>তো এর জন্য আমরা আমাদের কুইজ ইডিট ফাইলে গিয়ে আমাদের কোডের সাথে মিল রেখে গিটহাবের কোড গুলো আপডেট করব এখানে হয়তো একটু মাথা গুলিয়ে যেতে পারে কারন অনেকেই অনেক কোড আপডেট করে সেগুলো কমিট করছে সুতরাং কোডের স্টাইলের পরিবর্তন হচ্ছে তাই আমি এখানে কোড দিলাম না। আগের কোড গুলো quize option থেকে মিলিয়ে নেবেন।</strong></p>
<p><strong>এবার আসি আমরা আমাদের কুইজে প্রশ্ন সেট করা এবং কুইজের উত্তর গুলো সঠিক কি না সেটা দেখানো।</strong></p>
<p><strong>আমরা প্রথমেই একটা রাউট তৈরি করি।</strong></p>
<pre><code class="lang-bash">Route::get(<span class="hljs-string">'/quiz-show/{id}'</span>, [QuizController::class, <span class="hljs-string">'quizShow'</span>])-&gt;name(<span class="hljs-string">'quiz-show'</span>);
</code></pre>
<p><strong>এখান থেকে আমাদের কুইজ গুলো আইডি অনুযায়ী বিভিন্ন কুইজ শো করবে।</strong></p>
<p><strong>এবং আমাদের QuizController এর মধ্যে শো function লিখব।</strong></p>
<pre><code class="lang-bash">public <span class="hljs-keyword">function</span> quizShow(<span class="hljs-variable">$id</span>) {
        <span class="hljs-variable">$quiz</span> = Quiz::findOrFail(<span class="hljs-variable">$id</span>);
        <span class="hljs-built_in">return</span> view(<span class="hljs-string">'quiz.quiz-show'</span>, [
            <span class="hljs-string">'quiz'</span> =&gt; <span class="hljs-variable">$quiz</span>,
        ]);
    }
</code></pre>
<p><strong>প্রথমেই আমাদের কুইজ show livewire component এ গিয়ে আমাদের কোড গুলো লিখে ফেলি।</strong></p>
<pre><code class="lang-bash">public <span class="hljs-variable">$quiz</span>;
    public <span class="hljs-variable">$answerOpitons</span> = [
       <span class="hljs-string">'answer_a'</span>,
       <span class="hljs-string">'answer_b'</span>,
       <span class="hljs-string">'answer_c'</span>,
       <span class="hljs-string">'answer_d'</span>,
    ];
    public <span class="hljs-variable">$answer</span>;
    public <span class="hljs-variable">$answer_id</span>;
    public <span class="hljs-variable">$count_correct_answer</span> = 0;
    public <span class="hljs-variable">$count_incorrect_answer</span> = 0;
    public <span class="hljs-variable">$correct_answers</span> = [];
    public <span class="hljs-keyword">function</span> <span class="hljs-function"><span class="hljs-title">render</span></span>()
    {

        <span class="hljs-built_in">return</span> view(<span class="hljs-string">'livewire.quiz-show'</span>);
    }
    public <span class="hljs-keyword">function</span> answerUpdate(<span class="hljs-variable">$id</span>){
        <span class="hljs-variable">$this</span>-&gt;answer_id = <span class="hljs-variable">$id</span>;
    }
    public <span class="hljs-keyword">function</span> <span class="hljs-function"><span class="hljs-title">result</span></span>(){
        <span class="hljs-variable">$question</span> = Question::select(<span class="hljs-string">'correct_answer'</span>)-&gt;findOrFail(<span class="hljs-variable">$this</span>-&gt;answer_id);
        <span class="hljs-keyword">if</span>(<span class="hljs-variable">$question</span>-&gt;correct_answer === <span class="hljs-variable">$this</span>-&gt;answer[<span class="hljs-variable">$this</span>-&gt;answer_id]){
            flash()-&gt;addSuccess(<span class="hljs-string">'Answer is correct'</span>);
            <span class="hljs-variable">$this</span>-&gt;correct_answers[<span class="hljs-variable">$this</span>-&gt;answer_id] = <span class="hljs-literal">true</span>;
            <span class="hljs-variable">$this</span>-&gt;count_correct_answer++;
        }<span class="hljs-keyword">else</span>{
            flash()-&gt;addWarning(<span class="hljs-string">'Answer is incorrect'</span>);
            <span class="hljs-variable">$this</span>-&gt;correct_answers[<span class="hljs-variable">$this</span>-&gt;answer_id] = <span class="hljs-literal">false</span>;
            <span class="hljs-variable">$this</span>-&gt;count_incorrect_answer++;

        }
    }
</code></pre>
<p><strong>এবং ভিউ ফাইলে সেগুলো কে শো করি।</strong></p>
<pre><code class="lang-bash">&lt;div&gt;
    &lt;h1 class=<span class="hljs-string">"text-center text-2xl py-2"</span>&gt;{{<span class="hljs-variable">$quiz</span>-&gt;name}}&lt;/h1&gt;
    @php
        <span class="hljs-variable">$i</span>=1
    @endphp
    &lt;div class=<span class="hljs-string">"flex items-center gap-4 py-4"</span>&gt;
        &lt;p class=<span class="hljs-string">"flex items-center gap-2"</span>&gt;Total &lt;span class=<span class="hljs-string">" text-sm radius-full text-white flex justify-center items-center w-8 h-8"</span>&gt;{{count(<span class="hljs-variable">$quiz</span>-&gt;questions)}}&lt;/span&gt;&lt;/p&gt;
        &lt;p class=<span class="hljs-string">"flex items-center gap-2"</span>&gt;Correct &lt;span class=<span class="hljs-string">" text-sm radius-full text-white flex justify-center items-center w-8 h-8"</span>&gt;{{<span class="hljs-variable">$count_correct_answer</span>}}&lt;/span&gt;&lt;/p&gt;
        &lt;p class=<span class="hljs-string">"flex items-center gap-2"</span>&gt;Wrong &lt;span class=<span class="hljs-string">" text-sm radius-full text-white flex justify-center items-center w-8 h-8"</span>&gt;{{<span class="hljs-variable">$count_incorrect_answer</span>}}&lt;/span&gt;&lt;/p&gt;
    &lt;/div&gt;
    @foreach(<span class="hljs-variable">$quiz</span>-&gt;questions as <span class="hljs-variable">$question</span>)
       &lt;div class=<span class="hljs-string">"border border-gray-300 mb-4 p-4  @if(array_key_exists(<span class="hljs-variable">$question</span>-&gt;id,<span class="hljs-variable">$correct_answers</span>)) {{<span class="hljs-variable">$correct_answers</span>[<span class="hljs-variable">$question</span>-&gt;id] ? 'bg-green-100': 'bg-red-100'}} @endif}}"</span>&gt;
           &lt;h3 class=<span class="hljs-string">"text-gray-600"</span>&gt; {{<span class="hljs-variable">$i</span>++}}.{{<span class="hljs-variable">$question</span>-&gt;name}}&lt;/h3&gt;
           &lt;div class=<span class="hljs-string">"flex gap-4"</span>&gt;
               @forEach(<span class="hljs-variable">$answerOpitons</span> as <span class="hljs-variable">$option</span>)
                   &lt;div class=<span class="hljs-string">"flex items-center pl-4  rounded"</span>&gt;
                       &lt;input wire:click=<span class="hljs-string">"answerUpdate({{<span class="hljs-variable">$question</span>-&gt;id}})"</span> @<span class="hljs-keyword">if</span>(array_key_exists(<span class="hljs-variable">$question</span>-&gt;id,<span class="hljs-variable">$correct_answers</span>)) disabled @endif wire:change=<span class="hljs-string">"result"</span> wire:model=<span class="hljs-string">"answer.{{<span class="hljs-variable">$question</span>-&gt;id}}"</span> id=<span class="hljs-string">"answer-{{<span class="hljs-variable">$option</span>}}-{{<span class="hljs-variable">$question</span>-&gt;id}}"</span>  <span class="hljs-built_in">type</span>=<span class="hljs-string">"radio"</span> value=<span class="hljs-string">"{{explode('_',<span class="hljs-variable">$option</span>)[1]}}"</span> class=<span class="hljs-string">"w-4 h-4 text-blue-600 bg-gray-100 border-gray-300 focus:ring-blue-500"</span>&gt;
                       &lt;label <span class="hljs-keyword">for</span>=<span class="hljs-string">"answer-{{<span class="hljs-variable">$option</span>}}-{{<span class="hljs-variable">$question</span>-&gt;id}}"</span> class=<span class="hljs-string">"w-full py-4 cursor-pointer ml-2 text-sm font-medium text-gray-900"</span>&gt;{{<span class="hljs-variable">$question</span>-&gt;<span class="hljs-variable">$option</span>}}&lt;/label&gt;
                   &lt;/div&gt;
               @endforeach
           &lt;/div&gt;
       &lt;/div&gt;
    @endforeach
&lt;/div&gt;
</code></pre>
<p><strong>এবার আমাদের কুইজ গুলো কে সুন্দর মত ভিউ করতে পারব।এবং আইডি অনুযায়ী সেটা করতে পারব। এখানে একটা বিষয় সেটা হলো যেহেতু এগুলোতে টাস্ক দেওয়া থাকছে সাথে ডিজাইন ও পরিবর্তন হচ্ছে তাই আগের ব্লগেও অনেক কিছু update code দেওয়া আছে যেগুলো ক্লাসে দেখানো হয়নাই ।আশা করি বুঝতে পারছেন।</strong></p>
<p><strong>আমাদের কোর্সের tutorial-20(part-16) এই ব্লগ part-15 এর মধ্যেই দেওয়া হয়েছে ১৬ নং পার্টে মূলত আমাদের যে কুইজ পেইজ আছে সেই পেইজের answer গুলো dynamic এবং style করা হয়েছিল এবং এটাকে সুন্দর ভাবে single page এ দেখানোর কথা বলেছিল যা আমরা আজকের এবং গত ব্লগেই কাভার করেছি।</strong></p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/Tlc5SFEArPg"></iframe>

<iframe width="560" height="315" src="https://www.youtube.com/embed/jjSk4eO8cYY"></iframe>

<p>discord link: <a target="_blank" href="https://discord.gg/9qWUUbQ3"><strong>https://discord.gg/9qWUUbQ3</strong></a></p>
<p>facebook group :<a target="_blank" href="https://web.facebook.com/groups/1661735757554627/"><strong>https://web.facebook.com/groups/1661735757554627/</strong></a></p>
<p>Happy Learning</p>
<p><strong><em>Rakibul Islam</em></strong></p>
]]></content:encoded></item><item><title><![CDATA[ক্লাস নং-২০(পার্ট-১৪)-লারাভেল LMS Project Quiz section create and functionality add]]></title><description><![CDATA[আজকের ক্লাসে আমরা মূলত আমাদের লারাভেল প্রজেক্টের কুইজ সেকশন নিয়ে কাজ করব।এবং এখানে teacher কুইজ তৈরি করে সেটার লিংক students এর সাথে share করতে পারবে।এবং students সেই লিংকে গিয়ে তাদের নিজের কোর্সের অবস্থা সম্পর্কে জানতে পারবে।
তো এর জন্য লাগবে প্রশ্ন...]]></description><link>https://blog.shikhun.net/lms-project-quiz-section-create-and-functionality-add</link><guid isPermaLink="true">https://blog.shikhun.net/lms-project-quiz-section-create-and-functionality-add</guid><category><![CDATA[Laravel]]></category><category><![CDATA[laravel lms]]></category><dc:creator><![CDATA[Rakibul Islam]]></dc:creator><pubDate>Sun, 15 Jan 2023 13:36:49 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1673789716225/e12fea76-3b1b-4df0-b642-6ea9c9c5da78.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>আজকের ক্লাসে আমরা মূলত আমাদের লারাভেল প্রজেক্টের কুইজ সেকশন নিয়ে কাজ করব।এবং এখানে teacher কুইজ তৈরি করে সেটার লিংক students এর সাথে share করতে পারবে।এবং students সেই লিংকে গিয়ে তাদের নিজের কোর্সের অবস্থা সম্পর্কে জানতে পারবে।</p>
<p>তো এর জন্য লাগবে প্রশ্ন যেটা থেকে শিক্ষক কুইজ তৈরি করবেন। তো প্রথমেই আমাদের question model make করব।এবং সেই সাথে migration and controller</p>
<pre><code class="lang-php">php artisan make:model Question -mc
</code></pre>
<p>এবং এর পর আমরা আমাদের quiz এর জন্য তৈরি করব।</p>
<pre><code class="lang-php"> php artisan make:model Quiz -mc
</code></pre>
<p>এবার আমাদের question এর migration টা ready করে ফেলি।</p>
<pre><code class="lang-php">            $table-&gt;id();
            $table-&gt;string(<span class="hljs-string">'name'</span>);
            $table-&gt;string(<span class="hljs-string">'answer_a'</span>);
            $table-&gt;string(<span class="hljs-string">'answer_b'</span>);
            $table-&gt;string(<span class="hljs-string">'answer_c'</span>);
            $table-&gt;string(<span class="hljs-string">'answer_d'</span>);
            $table-&gt;string(<span class="hljs-string">'correct_answer'</span>);
            $table-&gt;timestamps();
</code></pre>
<p>এবং আমাদের কুইজ migration এ মেইন টেবিল এ শুধুমাত্র নাম থাকবে ।এবং এর নিচে আমাদের পিভট টেবিল লাগবে সেখানে আমাদের question and quize থাকবে।</p>
<pre><code class="lang-php">Schema::create(<span class="hljs-string">'quizzes'</span>, <span class="hljs-function"><span class="hljs-keyword">function</span> (<span class="hljs-params">Blueprint $table</span>) </span>{
            $table-&gt;id();
            $table-&gt;string(<span class="hljs-string">'name'</span>);
            $table-&gt;timestamps();
        });

        Schema::create(<span class="hljs-string">'quiz_question'</span>, <span class="hljs-function"><span class="hljs-keyword">function</span> (<span class="hljs-params">Blueprint $table</span>) </span>{
            $table-&gt;id();
            $table-&gt;unsignedBigInteger(<span class="hljs-string">'quiz_id'</span>);
            $table-&gt;unsignedBigInteger(<span class="hljs-string">'question_id'</span>);
            $table-&gt;timestamps();

            $table-&gt;unique([<span class="hljs-string">'quiz_id'</span>, <span class="hljs-string">'question_id'</span>]);

            $table-&gt;foreign(<span class="hljs-string">'quiz_id'</span>)-&gt;references(<span class="hljs-string">'id'</span>)-&gt;on(<span class="hljs-string">'quizzes'</span>)-&gt;onDelete(<span class="hljs-string">'cascade'</span>);
            $table-&gt;foreign(<span class="hljs-string">'question_id'</span>)-&gt;references(<span class="hljs-string">'id'</span>)-&gt;on(<span class="hljs-string">'questions'</span>)-&gt;onDelete(<span class="hljs-string">'cascade'</span>);
        });
</code></pre>
<p>এবার আমরা আমাদের web.php file এ রাউট গুলো ডিফাইন করে দিব।</p>
<pre><code class="lang-php">    Route::resource(<span class="hljs-string">'question'</span>, QuestionController::class);
    Route::resource(<span class="hljs-string">'quiz'</span>, QuizController::class);
</code></pre>
<p>এবার আমরা আমাদের যে navigation file আছে সেখানে আমাদের দুইটা মেনু নিব।</p>
<pre><code class="lang-php">&lt;x-nav-link :href=<span class="hljs-string">"route('question.index')"</span> :active=<span class="hljs-string">"request()-&gt;routeIs('question.index')"</span>&gt;
                        {{ __(<span class="hljs-string">'Questions'</span>) }}
&lt;/x-nav-link&gt;

 &lt;x-nav-link :href=<span class="hljs-string">"route('quiz.index')"</span> :active=<span class="hljs-string">"request()-&gt;routeIs('quiz.index')"</span>&gt;
                        {{ __(<span class="hljs-string">'Quizes'</span>) }}
&lt;/x-nav-link&gt;
</code></pre>
<p>এবার আমাদের questions and quize dynamic করার জন্য আমরা livewire template make করব।</p>
<pre><code class="lang-php">php artisan livewire:make QuestionIndex
php artisan livewire:make QuestionCreate
php artisan livewire:make QuestionEdit
</code></pre>
<p>edit টা যেহেতু আমাদের টাস্ক দেওয়া থাকবে তাই আমরা এটাকে আগেই তৈরি করে নিয়েছি। এবার আমাদের যে course folder টা আছে সেটাকে কপি করব এবং এর মধ্যে যে curiculum folder টা আছে সেটাকে ডিলেট করে দিব। এবং আমাদের question index file টা কে এডিট করে নি।</p>
<p>এবং এবার আমাদের questionController এর মধ্যে আমাদের function গুলো লিখে ফেলি।</p>
<pre><code class="lang-php"> <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">index</span>(<span class="hljs-params"></span>)
    </span>{
        <span class="hljs-keyword">return</span> view(<span class="hljs-string">'question.index'</span>);
    }

    <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">create</span>(<span class="hljs-params"></span>)
    </span>{
        <span class="hljs-keyword">return</span> view(<span class="hljs-string">'question.create'</span>);
    }

    <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">edit</span>(<span class="hljs-params">$id</span>)
    </span>{
        <span class="hljs-keyword">return</span> view(<span class="hljs-string">"question.edit"</span>, [
            <span class="hljs-string">'question_id'</span> =&gt; $id
        ]);
    }
</code></pre>
<p>এবং এবার যদি আমরা ভিউ করি তাহলে আমরা সুন্দর ভাবে সব গুলো কে শো করাতে পারব। আমাদের ফাইল গুলো যেহেতু কপি করা তাই আমরা question related সেগুলো কে ঠিক করে নিব।এবং প্রথমেই আমরা create এ তৈরি করব। তো আমরা এবার livewire এর create file এ আমাদের form টা লিখব।</p>
<pre><code class="lang-php">&lt;form wire:submit.prevent=<span class="hljs-string">"formSubmit"</span>&gt;
    &lt;div <span class="hljs-class"><span class="hljs-keyword">class</span>="<span class="hljs-title">mb</span>-4"&gt;
        @<span class="hljs-title">include</span>('<span class="hljs-title">components</span>.<span class="hljs-title">form</span>-<span class="hljs-title">field</span>', [
        '<span class="hljs-title">name</span>' =&gt; '<span class="hljs-title">name</span>',
        '<span class="hljs-title">label</span>' =&gt; '<span class="hljs-title">Name</span>',
        '<span class="hljs-title">type</span>' =&gt; '<span class="hljs-title">text</span>',
        '<span class="hljs-title">placeholder</span>' =&gt; '<span class="hljs-title">Question</span> <span class="hljs-title">name</span>',
        '<span class="hljs-title">required</span>' =&gt; '<span class="hljs-title">required</span>',
        ])
    &lt;/<span class="hljs-title">div</span>&gt;

    @<span class="hljs-title">foreach</span>($<span class="hljs-title">answers</span> <span class="hljs-title">as</span> $<span class="hljs-title">answer</span>)
    &lt;<span class="hljs-title">div</span> <span class="hljs-title">class</span>="<span class="hljs-title">mb</span>-4"&gt;
        @<span class="hljs-title">include</span>('<span class="hljs-title">components</span>.<span class="hljs-title">form</span>-<span class="hljs-title">field</span>', [
        '<span class="hljs-title">name</span>' =&gt; '<span class="hljs-title">answer_</span>' . $<span class="hljs-title">answer</span>,
        '<span class="hljs-title">label</span>' =&gt; '<span class="hljs-title">Answer</span> '. <span class="hljs-title">ucfirst</span>($<span class="hljs-title">answer</span>),
        '<span class="hljs-title">type</span>' =&gt; '<span class="hljs-title">text</span>',
        '<span class="hljs-title">placeholder</span>' =&gt; '<span class="hljs-title">Type</span> <span class="hljs-title">answer</span> ' . <span class="hljs-title">ucfirst</span>($<span class="hljs-title">answer</span>),
        '<span class="hljs-title">required</span>' =&gt; '<span class="hljs-title">required</span>',
        ])
    &lt;/<span class="hljs-title">div</span>&gt;
    @<span class="hljs-title">endforeach</span>

    &lt;<span class="hljs-title">div</span> <span class="hljs-title">class</span>="<span class="hljs-title">mb</span>-4"&gt;
        &lt;<span class="hljs-title">label</span> <span class="hljs-title">class</span>="<span class="hljs-title">lms</span>-<span class="hljs-title">label</span>" <span class="hljs-title">for</span>="<span class="hljs-title">correct_answer</span>"&gt;<span class="hljs-title">Correct</span> <span class="hljs-title">answer</span>&lt;/<span class="hljs-title">label</span>&gt;
        &lt;<span class="hljs-title">select</span> <span class="hljs-title">class</span>="<span class="hljs-title">lms</span>-<span class="hljs-title">input</span>" <span class="hljs-title">wire</span>:<span class="hljs-title">model</span>.<span class="hljs-title">prevent</span>="<span class="hljs-title">correct_answer</span>" <span class="hljs-title">id</span>="<span class="hljs-title">correct_answer</span>"&gt;
            @<span class="hljs-title">foreach</span>($<span class="hljs-title">answers</span> <span class="hljs-title">as</span> $<span class="hljs-title">answer</span>)
            &lt;<span class="hljs-title">option</span> <span class="hljs-title">value</span>="</span>{{ $answer }}<span class="hljs-string">"&gt;{{ ucfirst(<span class="hljs-subst">$answer</span>) }}&lt;/option&gt;
            @endforeach
        &lt;/select&gt;
    &lt;/div&gt;

    @include('components.wire-loading-btn')
&lt;/form&gt;</span>
</code></pre>
<p>যেহেতু এই ফর্ম এর ফিল্ড গুলো একের অধিক যায়গায় লেগেছে তাই আমরা এগুলো কে dynamic করে নিয়েছি।এবং প্রয়োজন অনুযায়ী বসিয়ে দিয়েছি,।এবং আমাদের question এর answer গুলো কে আমরা dynamic ভাবে এখানে শো করাব এর জন্য আমাদের livewire এর যে questioncreate file আছে সেখানে গিয়ে আমরা আমাদের সেগুলো লিখে ফেলব।এছাড়াও আমাদের question make করব।</p>
<pre><code class="lang-php">
  <span class="hljs-keyword">public</span> $answers = [<span class="hljs-string">'a'</span>, <span class="hljs-string">'b'</span>, <span class="hljs-string">'c'</span>, <span class="hljs-string">'d'</span>];
    <span class="hljs-keyword">public</span> $name;
    <span class="hljs-keyword">public</span> $answer_a;
    <span class="hljs-keyword">public</span> $answer_b;
    <span class="hljs-keyword">public</span> $answer_c;
    <span class="hljs-keyword">public</span> $answer_d;
    <span class="hljs-keyword">public</span> $correct_answer = <span class="hljs-string">'a'</span>;

    <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">render</span>(<span class="hljs-params"></span>)
    </span>{
        <span class="hljs-keyword">return</span> view(<span class="hljs-string">'livewire.question-create'</span>);
    }

    <span class="hljs-keyword">protected</span> $rules = [
        <span class="hljs-string">'name'</span> =&gt; <span class="hljs-string">'required'</span>,
        <span class="hljs-string">'answer_a'</span> =&gt; <span class="hljs-string">'required'</span>,
        <span class="hljs-string">'answer_b'</span> =&gt; <span class="hljs-string">'required'</span>,
        <span class="hljs-string">'answer_c'</span> =&gt; <span class="hljs-string">'required'</span>,
        <span class="hljs-string">'answer_d'</span> =&gt; <span class="hljs-string">'required'</span>,
        <span class="hljs-string">'correct_answer'</span> =&gt; <span class="hljs-string">'required'</span>,
    ];

    <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">formSubmit</span>(<span class="hljs-params"></span>)
    </span>{
        <span class="hljs-keyword">$this</span>-&gt;validate();

        Question::create([
            <span class="hljs-string">'name'</span> =&gt; <span class="hljs-keyword">$this</span>-&gt;name,
            <span class="hljs-string">'answer_a'</span> =&gt; <span class="hljs-keyword">$this</span>-&gt;answer_a,
            <span class="hljs-string">'answer_b'</span> =&gt; <span class="hljs-keyword">$this</span>-&gt;answer_b,
            <span class="hljs-string">'answer_c'</span> =&gt; <span class="hljs-keyword">$this</span>-&gt;answer_c,
            <span class="hljs-string">'answer_d'</span> =&gt; <span class="hljs-keyword">$this</span>-&gt;answer_d,
            <span class="hljs-string">'correct_answer'</span> =&gt; <span class="hljs-keyword">$this</span>-&gt;correct_answer,
        ]);

        flash()-&gt;addSuccess(<span class="hljs-string">'Question created successfully!'</span>);

        <span class="hljs-keyword">return</span> redirect()-&gt;route(<span class="hljs-string">'question.index'</span>);
    }
</code></pre>
<p>এবার আমরা একবার migration চালাব ।এবং সেই সাথে আমরা question make করব।</p>
<p>এবং আমাদের index টা যেহেতু টাস্ক দেওয়া ছিল সেগুলো আমরা এখান থেকেই complete করব।এরজ্যন আমাদের livewire এর questionindex এ গিয়ে নিচের কোড গুলো লিখব।</p>
<pre><code class="lang-php">&lt;div&gt;
    &lt;table <span class="hljs-class"><span class="hljs-keyword">class</span>="<span class="hljs-title">w</span>-<span class="hljs-title">full</span> <span class="hljs-title">table</span>-<span class="hljs-title">auto</span>"&gt;
        &lt;<span class="hljs-title">tr</span>&gt;
            &lt;<span class="hljs-title">th</span> <span class="hljs-title">class</span>="<span class="hljs-title">border</span> <span class="hljs-title">px</span>-4 <span class="hljs-title">py</span>-2 <span class="hljs-title">text</span>-<span class="hljs-title">left</span>"&gt;<span class="hljs-title">SL</span>.&lt;/<span class="hljs-title">th</span>&gt;
            &lt;<span class="hljs-title">th</span> <span class="hljs-title">class</span>="<span class="hljs-title">border</span> <span class="hljs-title">px</span>-4 <span class="hljs-title">py</span>-2 <span class="hljs-title">text</span>-<span class="hljs-title">left</span>"&gt;<span class="hljs-title">Question</span>&lt;/<span class="hljs-title">th</span>&gt;
            &lt;<span class="hljs-title">th</span> <span class="hljs-title">class</span>="<span class="hljs-title">border</span> <span class="hljs-title">px</span>-4 <span class="hljs-title">py</span>-2 <span class="hljs-title">text</span>-<span class="hljs-title">left</span>"&gt;<span class="hljs-title">Answer</span> <span class="hljs-title">A</span>&lt;/<span class="hljs-title">th</span>&gt;
            &lt;<span class="hljs-title">th</span> <span class="hljs-title">class</span>="<span class="hljs-title">border</span> <span class="hljs-title">px</span>-4 <span class="hljs-title">py</span>-2 <span class="hljs-title">text</span>-<span class="hljs-title">left</span>"&gt;<span class="hljs-title">Answer</span> <span class="hljs-title">B</span>&lt;/<span class="hljs-title">th</span>&gt;
            &lt;<span class="hljs-title">th</span> <span class="hljs-title">class</span>="<span class="hljs-title">border</span> <span class="hljs-title">px</span>-4 <span class="hljs-title">py</span>-2 <span class="hljs-title">text</span>-<span class="hljs-title">left</span>"&gt;<span class="hljs-title">Answer</span> <span class="hljs-title">C</span>&lt;/<span class="hljs-title">th</span>&gt;
            &lt;<span class="hljs-title">th</span> <span class="hljs-title">class</span>="<span class="hljs-title">border</span> <span class="hljs-title">px</span>-4 <span class="hljs-title">py</span>-2 <span class="hljs-title">text</span>-<span class="hljs-title">left</span>"&gt;<span class="hljs-title">Answer</span> <span class="hljs-title">D</span>&lt;/<span class="hljs-title">th</span>&gt;
            &lt;<span class="hljs-title">th</span> <span class="hljs-title">class</span>="<span class="hljs-title">border</span> <span class="hljs-title">px</span>-4 <span class="hljs-title">py</span>-2 <span class="hljs-title">text</span>-<span class="hljs-title">left</span>"&gt;<span class="hljs-title">Correct</span> <span class="hljs-title">Answer</span>&lt;/<span class="hljs-title">th</span>&gt;
            &lt;<span class="hljs-title">th</span> <span class="hljs-title">class</span>="<span class="hljs-title">border</span> <span class="hljs-title">px</span>-4 <span class="hljs-title">py</span>-2"&gt;<span class="hljs-title">Actions</span>&lt;/<span class="hljs-title">th</span>&gt;
        &lt;/<span class="hljs-title">tr</span>&gt;
        @<span class="hljs-title">foreach</span>($<span class="hljs-title">questions</span> <span class="hljs-title">as</span> $<span class="hljs-title">question</span>)
        &lt;<span class="hljs-title">tr</span>&gt;
            &lt;<span class="hljs-title">td</span> <span class="hljs-title">class</span>="<span class="hljs-title">border</span> <span class="hljs-title">px</span>-4 <span class="hljs-title">py</span>-2"&gt;</span>{{$loop-&gt;iteration}}&lt;/td&gt;
            &lt;td <span class="hljs-class"><span class="hljs-keyword">class</span>="<span class="hljs-title">border</span> <span class="hljs-title">px</span>-4 <span class="hljs-title">py</span>-2"&gt;</span>{{$question-&gt;name}}&lt;/td&gt;
            &lt;td <span class="hljs-class"><span class="hljs-keyword">class</span>="<span class="hljs-title">border</span> <span class="hljs-title">px</span>-4 <span class="hljs-title">py</span>-2"&gt;</span>{{$question-&gt;answer_a}}&lt;/td&gt;
            &lt;td <span class="hljs-class"><span class="hljs-keyword">class</span>="<span class="hljs-title">border</span> <span class="hljs-title">px</span>-4 <span class="hljs-title">py</span>-2"&gt;</span>{{$question-&gt;answer_b}}&lt;/td&gt;
            &lt;td <span class="hljs-class"><span class="hljs-keyword">class</span>="<span class="hljs-title">border</span> <span class="hljs-title">px</span>-4 <span class="hljs-title">py</span>-2"&gt;</span>{{$question-&gt;answer_c}}&lt;/td&gt;
            &lt;td <span class="hljs-class"><span class="hljs-keyword">class</span>="<span class="hljs-title">border</span> <span class="hljs-title">px</span>-4 <span class="hljs-title">py</span>-2"&gt;</span>{{$question-&gt;answer_d}}&lt;/td&gt;
            &lt;td <span class="hljs-class"><span class="hljs-keyword">class</span>="<span class="hljs-title">border</span> <span class="hljs-title">px</span>-4 <span class="hljs-title">py</span>-2"&gt;</span>{{$question-&gt;correct_answer}}&lt;/td&gt;

            &lt;td <span class="hljs-class"><span class="hljs-keyword">class</span>="<span class="hljs-title">border</span> <span class="hljs-title">px</span>-4 <span class="hljs-title">py</span>-2 <span class="hljs-title">text</span>-<span class="hljs-title">center</span>"&gt;
                &lt;<span class="hljs-title">div</span> <span class="hljs-title">class</span>="<span class="hljs-title">flex</span> <span class="hljs-title">items</span>-<span class="hljs-title">center</span> <span class="hljs-title">justify</span>-<span class="hljs-title">center</span>"&gt;
                    &lt;<span class="hljs-title">a</span> <span class="hljs-title">class</span>="<span class="hljs-title">mr</span>-1" <span class="hljs-title">href</span>="</span>{{route(<span class="hljs-string">'question.edit'</span>, $question-&gt;id)}}<span class="hljs-string">"&gt;
                        @include('components.icons.edit')
                    &lt;/a&gt;

                    &lt;form class="</span>ml<span class="hljs-number">-1</span><span class="hljs-string">" onsubmit="</span><span class="hljs-keyword">return</span> confirm(<span class="hljs-string">'Are you sure?'</span>);<span class="hljs-string">"
                        wire:submit.prevent="</span>questionDelete({{$question-&gt;id}})<span class="hljs-string">"&gt;
                        &lt;button type="</span>submit<span class="hljs-string">"&gt;
                            @include('components.icons.trash')
                        &lt;/button&gt;
                    &lt;/form&gt;
                &lt;/div&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        @endforeach
    &lt;/table&gt;

    &lt;div class="</span>mt<span class="hljs-number">-4</span><span class="hljs-string">"&gt;
        {<span class="hljs-subst">{$questions-&gt;links()}</span>}
    &lt;/div&gt;
&lt;/div&gt;</span>
</code></pre>
<p>এবং আমাদের livewire component এর মাধ্যমে data পাঠাব।questionIndex থেকে।</p>
<pre><code class="lang-php"> <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">render</span>(<span class="hljs-params"></span>)
    </span>{
        $questions = Question::paginate(<span class="hljs-number">15</span>);

        <span class="hljs-keyword">return</span> view(<span class="hljs-string">'livewire.question-index'</span>, [
            <span class="hljs-string">'questions'</span> =&gt; $questions
        ]);
    }

    <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">questionDelete</span>(<span class="hljs-params">$id</span>)
    </span>{
        $question = Question::findOrFail($id);

        $question-&gt;delete();

        flash()-&gt;addSuccess(<span class="hljs-string">'Question deleted successfully!'</span>);
    }
</code></pre>
<p>এবার আমরা আমাদের qustion গুলো কে ভিউ করতে পারব।</p>
<p>এবার আসি questionedit এ এবং এখান থেকে আমরা dataগুলো database এ save করে update করে দেব।</p>
<pre><code class="lang-php"><span class="hljs-keyword">public</span> $question_id;
    <span class="hljs-keyword">public</span> $answers = [<span class="hljs-string">'a'</span>, <span class="hljs-string">'b'</span>, <span class="hljs-string">'c'</span>, <span class="hljs-string">'d'</span>];
    <span class="hljs-keyword">public</span> $name;
    <span class="hljs-keyword">public</span> $answer_a;
    <span class="hljs-keyword">public</span> $answer_b;
    <span class="hljs-keyword">public</span> $answer_c;
    <span class="hljs-keyword">public</span> $answer_d;
    <span class="hljs-keyword">public</span> $correct_answer;

    <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">mount</span>(<span class="hljs-params"></span>)
    </span>{
        $question = Question::where(<span class="hljs-string">'id'</span>, <span class="hljs-keyword">$this</span>-&gt;question_id)-&gt;first();
        <span class="hljs-keyword">$this</span>-&gt;name = $question-&gt;name;
        <span class="hljs-keyword">$this</span>-&gt;answer_a = $question-&gt;answer_a;
        <span class="hljs-keyword">$this</span>-&gt;answer_b = $question-&gt;answer_b;
        <span class="hljs-keyword">$this</span>-&gt;answer_c = $question-&gt;answer_c;
        <span class="hljs-keyword">$this</span>-&gt;answer_d = $question-&gt;answer_d;
        <span class="hljs-keyword">$this</span>-&gt;correct_answer = $question-&gt;correct_answer;
    }

    <span class="hljs-keyword">protected</span> $rules = [
        <span class="hljs-string">'name'</span> =&gt; <span class="hljs-string">'required'</span>,
        <span class="hljs-string">'answer_a'</span> =&gt; <span class="hljs-string">'required'</span>,
        <span class="hljs-string">'answer_b'</span> =&gt; <span class="hljs-string">'required'</span>,
        <span class="hljs-string">'answer_c'</span> =&gt; <span class="hljs-string">'required'</span>,
        <span class="hljs-string">'answer_d'</span> =&gt; <span class="hljs-string">'required'</span>,
        <span class="hljs-string">'correct_answer'</span> =&gt; <span class="hljs-string">'required'</span>,
    ];

    <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">render</span>(<span class="hljs-params"></span>)
    </span>{
        <span class="hljs-keyword">return</span> view(<span class="hljs-string">'livewire.question-edit'</span>, [
            <span class="hljs-string">'answers'</span> =&gt; <span class="hljs-keyword">$this</span>-&gt;answers
        ]);
    }

    <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">questionUpdate</span>(<span class="hljs-params"></span>)
    </span>{
        <span class="hljs-keyword">$this</span>-&gt;validate();

        $question = Question::where(<span class="hljs-string">'id'</span>, <span class="hljs-keyword">$this</span>-&gt;question_id)-&gt;first();

        $question-&gt;update([
            <span class="hljs-string">'name'</span> =&gt; <span class="hljs-keyword">$this</span>-&gt;name,
            <span class="hljs-string">'answer_a'</span> =&gt; <span class="hljs-keyword">$this</span>-&gt;answer_a,
            <span class="hljs-string">'answer_b'</span> =&gt; <span class="hljs-keyword">$this</span>-&gt;answer_b,
            <span class="hljs-string">'answer_c'</span> =&gt; <span class="hljs-keyword">$this</span>-&gt;answer_c,
            <span class="hljs-string">'answer_d'</span> =&gt; <span class="hljs-keyword">$this</span>-&gt;answer_d,
            <span class="hljs-string">'correct_answer'</span> =&gt; <span class="hljs-keyword">$this</span>-&gt;correct_answer,
        ]);

        flash()-&gt;addSuccess(<span class="hljs-string">'Question updated successfully!'</span>);

        <span class="hljs-keyword">return</span> redirect()-&gt;route(<span class="hljs-string">'question.index'</span>);
    }
</code></pre>
<p>এবং edit এর ভিউ তে গিয়ে আমরা নিচের কোড গুলো লিখব।</p>
<pre><code class="lang-php">&lt;form wire:submit.prevent=<span class="hljs-string">"questionUpdate"</span>&gt;
    &lt;div <span class="hljs-class"><span class="hljs-keyword">class</span>="<span class="hljs-title">mb</span>-4"&gt;
        @<span class="hljs-title">include</span>('<span class="hljs-title">components</span>.<span class="hljs-title">form</span>-<span class="hljs-title">field</span>', [
        '<span class="hljs-title">name</span>' =&gt; '<span class="hljs-title">name</span>',
        '<span class="hljs-title">label</span>' =&gt; '<span class="hljs-title">Name</span>',
        '<span class="hljs-title">type</span>' =&gt; '<span class="hljs-title">text</span>',
        '<span class="hljs-title">placeholder</span>' =&gt; '<span class="hljs-title">Question</span> <span class="hljs-title">name</span>',
        '<span class="hljs-title">required</span>' =&gt; '<span class="hljs-title">required</span>',
        ])
    &lt;/<span class="hljs-title">div</span>&gt;

    @<span class="hljs-title">foreach</span>($<span class="hljs-title">answers</span> <span class="hljs-title">as</span> $<span class="hljs-title">answer</span>)
    &lt;<span class="hljs-title">div</span> <span class="hljs-title">class</span>="<span class="hljs-title">mb</span>-4"&gt;
        @<span class="hljs-title">include</span>('<span class="hljs-title">components</span>.<span class="hljs-title">form</span>-<span class="hljs-title">field</span>', [
        '<span class="hljs-title">name</span>' =&gt; '<span class="hljs-title">answer_</span>' . $<span class="hljs-title">answer</span>,
        '<span class="hljs-title">label</span>' =&gt; '<span class="hljs-title">Answer</span> '. <span class="hljs-title">ucfirst</span>($<span class="hljs-title">answer</span>),
        '<span class="hljs-title">type</span>' =&gt; '<span class="hljs-title">text</span>',
        '<span class="hljs-title">placeholder</span>' =&gt; '<span class="hljs-title">Type</span> <span class="hljs-title">answer</span> ' . <span class="hljs-title">ucfirst</span>($<span class="hljs-title">answer</span>),
        '<span class="hljs-title">required</span>' =&gt; '<span class="hljs-title">required</span>',
        ])
    &lt;/<span class="hljs-title">div</span>&gt;
    @<span class="hljs-title">endforeach</span>

    &lt;<span class="hljs-title">div</span> <span class="hljs-title">class</span>="<span class="hljs-title">mb</span>-4"&gt;
        &lt;<span class="hljs-title">label</span> <span class="hljs-title">class</span>="<span class="hljs-title">lms</span>-<span class="hljs-title">label</span>" <span class="hljs-title">for</span>="<span class="hljs-title">correct_answer</span>"&gt;<span class="hljs-title">Correct</span> <span class="hljs-title">answer</span>&lt;/<span class="hljs-title">label</span>&gt;
        &lt;<span class="hljs-title">select</span> <span class="hljs-title">class</span>="<span class="hljs-title">lms</span>-<span class="hljs-title">input</span>" <span class="hljs-title">wire</span>:<span class="hljs-title">model</span>.<span class="hljs-title">prevent</span>="<span class="hljs-title">correct_answer</span>" <span class="hljs-title">id</span>="<span class="hljs-title">correct_answer</span>"&gt;
            @<span class="hljs-title">foreach</span>($<span class="hljs-title">answers</span> <span class="hljs-title">as</span> $<span class="hljs-title">answer</span>)
            &lt;<span class="hljs-title">option</span> <span class="hljs-title">value</span>="</span>{{ $answer }}<span class="hljs-string">"&gt;{{ ucfirst(<span class="hljs-subst">$answer</span>) }}&lt;/option&gt;
            @endforeach
        &lt;/select&gt;
    &lt;/div&gt;

    @include('components.wire-loading-btn')
&lt;/form&gt;</span>
</code></pre>
<p>এবং সেই সাথে আমাদের delete function টাও লিখেছি আমাদের questionindex এ সুতরাং আমাদের এটাও dynamic. তাহলে আমাদের question section complete</p>
<ul>
<li><p><strong>-question create</strong></p>
</li>
<li><p><strong>-question Index</strong></p>
</li>
<li><p><strong>-question edit</strong></p>
</li>
<li><p><strong>-question delete</strong></p>
</li>
</ul>
<h1 id="heading-quize-section"><strong>এবার আসি আমাদের quize section এ।</strong></h1>
<p>এবং আমাদের যে question folder টা আছে সেটাকে আমরা কপি করে সেটার নাম দেই quize এবং আমাদের question এর data গুলো কে এডিট করে আমরা সেটা কুইজের ডেটা গুলো দিয়ে দিব।এবং এখানে যেহেতু আমাদের create file টা লাগবে না তাই আমরা সেটাকে ডিলেট করে দিব।</p>
<p>index, edit, show এই ফাইলগুলো তে।আমাদের কুইজের ডেটা গুলো লিখবো।</p>
<p>এবার আসি index file এ।আমরা আমাদের create file এ যেহেতু livewire এর টা দিয়ে ডায়নামিক করছি না তাই আমরা এখানে normally করে সেটা livewire এর index এ পাঠিয়ে দিব।</p>
<pre><code class="lang-php">&lt;x-app-layout&gt;
    &lt;x-slot name=<span class="hljs-string">"header"</span>&gt;
        &lt;h2 <span class="hljs-class"><span class="hljs-keyword">class</span>="<span class="hljs-title">font</span>-<span class="hljs-title">semibold</span> <span class="hljs-title">text</span>-<span class="hljs-title">xl</span> <span class="hljs-title">text</span>-<span class="hljs-title">gray</span>-800 <span class="hljs-title">leading</span>-<span class="hljs-title">tight</span>"&gt;
            </span>{{ __(<span class="hljs-string">'Quiz'</span>) }}
        &lt;/h2&gt;
    &lt;/x-slot&gt;

    &lt;div <span class="hljs-class"><span class="hljs-keyword">class</span>="<span class="hljs-title">py</span>-12"&gt;
        &lt;<span class="hljs-title">div</span> <span class="hljs-title">class</span>="<span class="hljs-title">max</span>-<span class="hljs-title">w</span>-7<span class="hljs-title">xl</span> <span class="hljs-title">mx</span>-<span class="hljs-title">auto</span> <span class="hljs-title">sm</span>:<span class="hljs-title">px</span>-6 <span class="hljs-title">lg</span>:<span class="hljs-title">px</span>-8"&gt;
            &lt;<span class="hljs-title">div</span> <span class="hljs-title">class</span>="<span class="hljs-title">bg</span>-<span class="hljs-title">white</span> <span class="hljs-title">overflow</span>-<span class="hljs-title">hidden</span> <span class="hljs-title">shadow</span>-<span class="hljs-title">sm</span> <span class="hljs-title">sm</span>:<span class="hljs-title">rounded</span>-<span class="hljs-title">lg</span>"&gt;
                &lt;<span class="hljs-title">div</span> <span class="hljs-title">class</span>="<span class="hljs-title">p</span>-6 <span class="hljs-title">text</span>-<span class="hljs-title">gray</span>-900"&gt;
                    &lt;<span class="hljs-title">form</span> <span class="hljs-title">action</span>="</span>{{route(<span class="hljs-string">'quiz.store'</span>)}}<span class="hljs-string">" method="</span>post<span class="hljs-string">"&gt; @csrf
                        &lt;div class="</span>mb<span class="hljs-number">-4</span><span class="hljs-string">"&gt;
                            &lt;label for="</span>name<span class="hljs-string">" class="</span>lms-label<span class="hljs-string">"&gt;Name&lt;/label&gt;
                            &lt;input type="</span>text<span class="hljs-string">" name="</span>name<span class="hljs-string">" id="</span>name<span class="hljs-string">" class="</span>lms-input<span class="hljs-string">"&gt;
                        &lt;/div&gt;
                        &lt;button type="</span>submit<span class="hljs-string">" class="</span>lms-btn<span class="hljs-string">"&gt;Add a quiz&lt;/button&gt;

                    &lt;livewire:quiz-index  /&gt;
                    &lt;/form&gt;
                &lt;/div&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/x-app-layout&gt;</span>
</code></pre>
<p>এবং আমাদের quizecontroller এর মধ্যে আমাদের store function লাগবে ।তো এখানে আমাদের অন্যান্য function যেগুলো আমাদের কুইজের সাথে লাগবে সেগুলো এখানে দিয়ে দি।</p>
<pre><code class="lang-php"><span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">index</span>(<span class="hljs-params"></span>) </span>{
        <span class="hljs-keyword">return</span> view(<span class="hljs-string">'quiz.index'</span>);
    }

    <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">create</span>(<span class="hljs-params"></span>) </span>{
        <span class="hljs-keyword">return</span> view(<span class="hljs-string">'quiz.create'</span>);
    }

    <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">store</span>(<span class="hljs-params">Request $request</span>) </span>{
        $quiz = $request-&gt;validate([
            <span class="hljs-string">'name'</span> =&gt; <span class="hljs-string">'required'</span>,
        ]);


        $created = Quiz::create($quiz);

        flash()-&gt;addSuccess(<span class="hljs-string">'Quiz created successfully'</span>);


        <span class="hljs-keyword">return</span> redirect()-&gt;route(<span class="hljs-string">'quiz.index'</span>,$created-&gt;id);
    }

 <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">show</span>(<span class="hljs-params">Quiz $quiz</span>) </span>{
        <span class="hljs-keyword">return</span> view(<span class="hljs-string">'quiz.show'</span>, [
            <span class="hljs-string">'quiz'</span> =&gt; $quiz,
        ]);
    }

    <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">edit</span>(<span class="hljs-params">Quiz $quiz</span>)
    </span>{
        <span class="hljs-keyword">return</span> view(<span class="hljs-string">'quiz.edit'</span>, compact(<span class="hljs-string">'quiz'</span>));
    }


    <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">quizShow</span>(<span class="hljs-params">$id</span>) </span>{
        $quiz = Quiz::findOrFail($id);
        <span class="hljs-keyword">return</span> view(<span class="hljs-string">'quiz.quiz-show'</span>, [
            <span class="hljs-string">'quiz'</span> =&gt; $quiz,
        ]);
    }
</code></pre>
<p>এবং আমাদের quize model এ গিয়ে সেখানে fillable property দিয়ে দিব। এবং সেখানে একটা রিলেশন তৈরি করব যদি এটা আমাদের পরে করলেও হত।</p>
<pre><code class="lang-bash">
protected <span class="hljs-variable">$fillable</span> = [
        <span class="hljs-string">'name'</span>,
    ];

    public <span class="hljs-keyword">function</span> <span class="hljs-function"><span class="hljs-title">questions</span></span>() {
        <span class="hljs-built_in">return</span> <span class="hljs-variable">$this</span>-&gt;belongsToMany(Question::class, <span class="hljs-string">'quiz_question'</span>, <span class="hljs-string">'quiz_id'</span>, <span class="hljs-string">'question_id'</span>);
    }
</code></pre>
<p>এবার আমরা আমাদের livewire components গুলো make করতে পারি।</p>
<pre><code class="lang-bash">php artisan livewire:make QuizCreate
php artisan livewire:make QuizIndex
php artisan livewire:make QuizEdit
php artisan livewire:make QuizShow
</code></pre>
<p>এবার আমাদের কুইজ livewire-edit file এ আমাদের যে টাস্ক গুলো দেওয়া হয়েছে সেই অনুযায়ী করব এবং যেভাবে দেখেনো হয়েছে সেভাবে।</p>
<pre><code class="lang-bash">&lt;div&gt;
    &lt;form class=<span class="hljs-string">"p-4"</span> wire:submit.prevent=<span class="hljs-string">"editQuiz"</span>&gt;

        &lt;div class=<span class="hljs-string">"mb-4"</span>&gt;
            @include(<span class="hljs-string">'components.form-field'</span>, [
            <span class="hljs-string">'name'</span> =&gt; <span class="hljs-string">'name'</span>,
            <span class="hljs-string">'label'</span> =&gt; <span class="hljs-string">'Name'</span>,
            <span class="hljs-string">'type'</span> =&gt; <span class="hljs-string">'text'</span>,
            <span class="hljs-string">'placeholder'</span> =&gt; <span class="hljs-string">'Question name'</span>,
            <span class="hljs-string">'required'</span> =&gt; <span class="hljs-string">'required'</span>,
            ])
        &lt;/div&gt;
        &lt;button <span class="hljs-built_in">type</span>=<span class="hljs-string">"submit"</span> class=<span class="hljs-string">"lms-btn"</span>&gt;Submit &lt;/button&gt;


    &lt;/form&gt;

    @<span class="hljs-keyword">if</span> (count(<span class="hljs-variable">$questions</span>)&gt;0)
    &lt;form class=<span class="hljs-string">"p-4"</span> wire:submit.prevent=<span class="hljs-string">"addQuestion"</span>&gt;
        &lt;div class=<span class="hljs-string">"min-w-max ml-3"</span>&gt;
            &lt;label <span class="hljs-keyword">for</span>=<span class="hljs-string">"question"</span> &gt;Add Question&lt;/label&gt;
            &lt;select wire:model=<span class="hljs-string">"question"</span> id=<span class="hljs-string">"question"</span> class= <span class="hljs-string">"mb-4"</span>&gt;
                @foreach(<span class="hljs-variable">$questions</span> as <span class="hljs-variable">$question</span>)
                    &lt;option value=<span class="hljs-string">"{{<span class="hljs-variable">$question</span>-&gt;id}}"</span>&gt;{{<span class="hljs-variable">$question</span>-&gt;name}}&lt;/option&gt;
                @endforeach
            &lt;/select&gt;
            @error(<span class="hljs-string">'correct_answer'</span>)
            &lt;p class=<span class="hljs-string">"mt-2 text-sm text-red-600 dark:text-red-500"</span>&gt;{{<span class="hljs-variable">$message</span>}}&lt;/p&gt;
            @enderror
        &lt;/div&gt;
        &lt;button <span class="hljs-built_in">type</span>=<span class="hljs-string">"submit"</span> class=<span class="hljs-string">"lms-btn"</span>&gt;Add &lt;/button&gt;
    &lt;/form&gt;

    @<span class="hljs-keyword">else</span>
        &lt;h3 class=<span class="hljs-string">"my-4 text-gray-600 text-lg p-4 ml-3"</span>&gt;Add Question&lt;/h3&gt;
        &lt;p class=<span class="hljs-string">"text-red-500 px-4 ml-3"</span>&gt;Not Found Any Question!&lt;/p&gt;
    @endif
   &lt;div class=<span class="hljs-string">"p-4"</span>&gt;
       &lt;h3 class=<span class="hljs-string">"my-4 text-gray-600 text-lg ml-3"</span>&gt;Question List&lt;/h3&gt;
       &lt;div class=<span class="hljs-string">"table w-full p-2"</span>&gt;
           &lt;table class=<span class="hljs-string">"w-full border"</span>&gt;
               &lt;thead&gt;
               &lt;tr class=<span class="hljs-string">"bg-gray-50 border-b"</span>&gt;
                   &lt;th class=<span class="hljs-string">"p-2 border-r cursor-pointer text-sm font-thin"</span>&gt;
                       &lt;div class=<span class="hljs-string">"flex items-center justify-center"</span>&gt; Name&lt;/div&gt;
                   &lt;/th&gt;
                   &lt;th class=<span class="hljs-string">"p-2 border-r cursor-pointer text-sm font-thin"</span>&gt;
                       &lt;div class=<span class="hljs-string">"flex items-center justify-center"</span>&gt;Action&lt;/div&gt;
                   &lt;/th&gt;
               &lt;/tr&gt;
               &lt;/thead&gt;
               &lt;tbody&gt;
               @foreach(<span class="hljs-variable">$quiz</span>-&gt;questions as <span class="hljs-variable">$question</span>)
                   &lt;tr class=<span class="hljs-string">"bg-gray-100 text-center border-b text-sm text-gray-600"</span>&gt;
                       &lt;td class=<span class="hljs-string">"p-2 border-r text-left px-4"</span>&gt;{{<span class="hljs-variable">$question</span>-&gt;name}}&lt;/td&gt;
                       &lt;td class=<span class="hljs-string">"flex items-center justify-center"</span>&gt;
                           &lt;form wire:submit.prevent=<span class="hljs-string">"removeQuiz({{<span class="hljs-variable">$question</span>-&gt;id}})"</span> class=<span class="hljs-string">"bg-red-500 p-2 inline-block text-white hover:shadow-lg text-xs font-thin"</span>&gt;
                               &lt;button onclick=<span class="hljs-string">"return confirm('Are you Sure')"</span> <span class="hljs-built_in">type</span>=<span class="hljs-string">"submit"</span>&gt;Remove&lt;/button&gt;
                           &lt;/form&gt;
                       &lt;/td&gt;
                   &lt;/tr&gt;
               @endforeach
               &lt;/tbody&gt;
           &lt;/table&gt;
       &lt;/div&gt;
   &lt;/div&gt;
&lt;/div&gt;
</code></pre>
<p>এবং livewire এর quizedit এ আমরা নিচের কোড গুলো লিখবো,।</p>
<pre><code class="lang-bash"> public <span class="hljs-variable">$quiz</span>;
    public <span class="hljs-variable">$name</span>;
    public <span class="hljs-variable">$question</span>;
    public <span class="hljs-variable">$questions</span>;

    protected <span class="hljs-variable">$rules</span> = [
        <span class="hljs-string">'name'</span> =&gt; <span class="hljs-string">'required'</span>,
    ];
    public <span class="hljs-keyword">function</span> <span class="hljs-function"><span class="hljs-title">mount</span></span>(){
        <span class="hljs-variable">$this</span>-&gt;name = <span class="hljs-variable">$this</span>-&gt;quiz-&gt;name;
        <span class="hljs-variable">$alreadyAddQuestion</span> = <span class="hljs-variable">$this</span>-&gt;quiz-&gt;questions-&gt;pluck(<span class="hljs-string">'id'</span>)-&gt;toArray();
        <span class="hljs-variable">$this</span>-&gt;questions = Question::select([<span class="hljs-string">'id'</span>, <span class="hljs-string">'name'</span>])-&gt;whereNotIn(<span class="hljs-string">'id'</span>,<span class="hljs-variable">$alreadyAddQuestion</span>)-&gt;get();
        <span class="hljs-keyword">if</span> (count(<span class="hljs-variable">$this</span>-&gt;questions)&gt;0){
            <span class="hljs-variable">$this</span>-&gt;question =<span class="hljs-variable">$this</span>-&gt;questions[0]-&gt;id;
        }
    }
    public <span class="hljs-keyword">function</span> <span class="hljs-function"><span class="hljs-title">render</span></span>(){

        <span class="hljs-built_in">return</span> view(<span class="hljs-string">'livewire.quiz-edit'</span>);
    }


    public <span class="hljs-keyword">function</span> <span class="hljs-function"><span class="hljs-title">addQuestion</span></span>(){
        <span class="hljs-variable">$this</span>-&gt;validate([
            <span class="hljs-string">'question'</span> =&gt; <span class="hljs-string">'required'</span>,
        ]);
        <span class="hljs-variable">$quiz</span> = Quiz::findOrFail(<span class="hljs-variable">$this</span>-&gt;quiz-&gt;id);
        <span class="hljs-variable">$quiz</span>-&gt;questions()-&gt;attach(<span class="hljs-variable">$this</span>-&gt;question);

        flash()-&gt;addSuccess(<span class="hljs-string">'Question added successfully'</span>);

        <span class="hljs-built_in">return</span> redirect()-&gt;route(<span class="hljs-string">'quiz.edit'</span>,<span class="hljs-variable">$this</span>-&gt;quiz-&gt;id);
    }


    public <span class="hljs-keyword">function</span> <span class="hljs-function"><span class="hljs-title">editQuiz</span></span>(){
            <span class="hljs-variable">$this</span>-&gt;validate();
            <span class="hljs-variable">$quiz</span> = Quiz::findOrFail(<span class="hljs-variable">$this</span>-&gt;quiz-&gt;id);

            <span class="hljs-variable">$quiz</span>-&gt;name = <span class="hljs-variable">$this</span>-&gt;name;
            <span class="hljs-variable">$quiz</span>-&gt;save();

            flash()-&gt;addSuccess(<span class="hljs-string">'Quiz edit successfully'</span>);
    }
</code></pre>
<p>এবং এই quize গুলো show করানোর জন্য আমরা আমাদের index file create করব।</p>
<h3 id="heading-quizeindex-component"><strong>quizeIndex component</strong></h3>
<pre><code class="lang-bash"> public <span class="hljs-keyword">function</span> <span class="hljs-function"><span class="hljs-title">render</span></span>() {
        <span class="hljs-variable">$quizzes</span> = Quiz::paginate(10);
        <span class="hljs-built_in">return</span> view(<span class="hljs-string">'livewire.quiz-index'</span>,[
            <span class="hljs-string">'quizzes'</span> =&gt; <span class="hljs-variable">$quizzes</span>]);
    }
</code></pre>
<p>এবং ভিউ ফাইলে।</p>
<pre><code class="lang-bash">&lt;div&gt;
    &lt;div class=<span class="hljs-string">"table w-full p-2"</span>&gt;
        &lt;table class=<span class="hljs-string">"w-full border"</span>&gt;
            &lt;thead&gt;
            &lt;tr class=<span class="hljs-string">"bg-gray-50 border-b"</span>&gt;
                &lt;th class=<span class="hljs-string">"p-2 border-r cursor-pointer"</span> &gt; Name&lt;/div&gt;
                &lt;/th&gt;
                &lt;th class=<span class="hljs-string">"p-2 border-r cursor-pointer "</span>&gt;
                    &lt;div class=<span class="hljs-string">"flex items-center justify-center"</span>&gt; Action&lt;/div&gt;
                &lt;/th&gt;
            &lt;/tr&gt;
            &lt;/thead&gt;

            &lt;tbody&gt;
            @foreach(<span class="hljs-variable">$quizzes</span> as <span class="hljs-variable">$quiz</span>)
                &lt;tr class=<span class="hljs-string">"bg-gray-100 text-center border-b "</span>&gt;
                    &lt;td class=<span class="hljs-string">"p-2 border-r text-left px-4"</span>&gt;{{<span class="hljs-variable">$quiz</span>-&gt;name}}&lt;/td&gt;
                    &lt;td class=<span class="hljs-string">"flex items-center justify-center"</span>&gt;
                        &lt;a href=<span class="hljs-string">"{{route('quiz.edit',<span class="hljs-variable">$quiz</span>-&gt;id)}}"</span> class=<span class="hljs-string">"ml-2 pt-2"</span>&gt;@include(<span class="hljs-string">'components.icons.edit'</span>)&lt;/a&gt;
                        &lt;a href=<span class="hljs-string">"{{route('quiz.show',<span class="hljs-variable">$quiz</span>-&gt;id)}}"</span> class=<span class="hljs-string">"ml-2 pt-2"</span>&gt;@include(<span class="hljs-string">'components.icons.eye'</span>)&lt;/a&gt;
                        &lt;form class=<span class="hljs-string">"ml-2  pt-3"</span> wire:submit.prevent=<span class="hljs-string">"deleteQuiz({{<span class="hljs-variable">$quiz</span>-&gt;id}})"</span> &gt;&lt;button onclick=<span class="hljs-string">"return confirm('Are you sure?');"</span> <span class="hljs-built_in">type</span>=<span class="hljs-string">"submit"</span> &gt; @include(<span class="hljs-string">'components.icons.trash'</span>)
                        &lt;/button&gt;
                        &lt;/form&gt;

                    &lt;/td&gt;
                &lt;/tr&gt;
            @endforeach
            &lt;/tbody&gt;
        &lt;/table&gt;
        &lt;div class=<span class="hljs-string">"mt-4"</span>&gt;
            {{<span class="hljs-variable">$quizzes</span>-&gt;links()}}
        &lt;/div&gt;
    &lt;/div&gt;
</code></pre>
<p>আমরা কুইজ টা কে ভিউ করতে চাইলে আমাদের প্রথমে livewire component QuizShow file এ কোড গুলো লিখে ফেলি।</p>
<pre><code class="lang-bash">   public <span class="hljs-variable">$quiz</span>;
    public <span class="hljs-variable">$answerOpitons</span> = [
       <span class="hljs-string">'answer_a'</span>,
       <span class="hljs-string">'answer_b'</span>,
       <span class="hljs-string">'answer_c'</span>,
       <span class="hljs-string">'answer_d'</span>,
    ];
    public <span class="hljs-variable">$answer</span>;
    public <span class="hljs-variable">$answer_id</span>;
    public <span class="hljs-variable">$count_correct_answer</span> = 0;
    public <span class="hljs-variable">$count_incorrect_answer</span> = 0;
    public <span class="hljs-variable">$correct_answers</span> = [];
    public <span class="hljs-keyword">function</span> <span class="hljs-function"><span class="hljs-title">render</span></span>()
    {

        <span class="hljs-built_in">return</span> view(<span class="hljs-string">'livewire.quiz-show'</span>);
    }
    public <span class="hljs-keyword">function</span> answerUpdate(<span class="hljs-variable">$id</span>){
        <span class="hljs-variable">$this</span>-&gt;answer_id = <span class="hljs-variable">$id</span>;
    }
    public <span class="hljs-keyword">function</span> <span class="hljs-function"><span class="hljs-title">result</span></span>(){
        <span class="hljs-variable">$question</span> = Question::select(<span class="hljs-string">'correct_answer'</span>)-&gt;findOrFail(<span class="hljs-variable">$this</span>-&gt;answer_id);
        <span class="hljs-keyword">if</span>(<span class="hljs-variable">$question</span>-&gt;correct_answer === <span class="hljs-variable">$this</span>-&gt;answer[<span class="hljs-variable">$this</span>-&gt;answer_id]){
            flash()-&gt;addSuccess(<span class="hljs-string">'Answer is correct'</span>);
            <span class="hljs-variable">$this</span>-&gt;correct_answers[<span class="hljs-variable">$this</span>-&gt;answer_id] = <span class="hljs-literal">true</span>;
            <span class="hljs-variable">$this</span>-&gt;count_correct_answer++;
        }<span class="hljs-keyword">else</span>{
            flash()-&gt;addWarning(<span class="hljs-string">'Answer is incorrect'</span>);
            <span class="hljs-variable">$this</span>-&gt;correct_answers[<span class="hljs-variable">$this</span>-&gt;answer_id] = <span class="hljs-literal">false</span>;
            <span class="hljs-variable">$this</span>-&gt;count_incorrect_answer++;

        }
    }
</code></pre>
<p>এবং আমাদের livewire এর blade file এ।</p>
<pre><code class="lang-bash">&lt;div&gt;
    &lt;h1 class=<span class="hljs-string">"text-center text-2xl py-2"</span>&gt;{{<span class="hljs-variable">$quiz</span>-&gt;name}}&lt;/h1&gt;
    @php
        <span class="hljs-variable">$i</span>=1
    @endphp
    &lt;div class=<span class="hljs-string">"flex items-center gap-4 py-4"</span>&gt;
        &lt;p class=<span class="hljs-string">"flex items-center gap-2"</span>&gt;Total &lt;span class=<span class="hljs-string">" text-sm radius-full text-white flex justify-center items-center w-8 h-8"</span>&gt;{{count(<span class="hljs-variable">$quiz</span>-&gt;questions)}}&lt;/span&gt;&lt;/p&gt;
        &lt;p class=<span class="hljs-string">"flex items-center gap-2"</span>&gt;Correct &lt;span class=<span class="hljs-string">" text-sm radius-full text-white flex justify-center items-center w-8 h-8"</span>&gt;{{<span class="hljs-variable">$count_correct_answer</span>}}&lt;/span&gt;&lt;/p&gt;
        &lt;p class=<span class="hljs-string">"flex items-center gap-2"</span>&gt;Wrong &lt;span class=<span class="hljs-string">" text-sm radius-full text-white flex justify-center items-center w-8 h-8"</span>&gt;{{<span class="hljs-variable">$count_incorrect_answer</span>}}&lt;/span&gt;&lt;/p&gt;
    &lt;/div&gt;
    @foreach(<span class="hljs-variable">$quiz</span>-&gt;questions as <span class="hljs-variable">$question</span>)
       &lt;div class=<span class="hljs-string">"border border-gray-300 mb-4 p-4  @if(array_key_exists(<span class="hljs-variable">$question</span>-&gt;id,<span class="hljs-variable">$correct_answers</span>)) {{<span class="hljs-variable">$correct_answers</span>[<span class="hljs-variable">$question</span>-&gt;id] ? 'bg-green-100': 'bg-red-100'}} @endif}}"</span>&gt;
           &lt;h3 class=<span class="hljs-string">"text-gray-600"</span>&gt; {{<span class="hljs-variable">$i</span>++}}.{{<span class="hljs-variable">$question</span>-&gt;name}}&lt;/h3&gt;
           &lt;div class=<span class="hljs-string">"flex gap-4"</span>&gt;
               @forEach(<span class="hljs-variable">$answerOpitons</span> as <span class="hljs-variable">$option</span>)
                   &lt;div class=<span class="hljs-string">"flex items-center pl-4  rounded"</span>&gt;
                       &lt;input wire:click=<span class="hljs-string">"answerUpdate({{<span class="hljs-variable">$question</span>-&gt;id}})"</span> @<span class="hljs-keyword">if</span>(array_key_exists(<span class="hljs-variable">$question</span>-&gt;id,<span class="hljs-variable">$correct_answers</span>)) disabled @endif wire:change=<span class="hljs-string">"result"</span> wire:model=<span class="hljs-string">"answer.{{<span class="hljs-variable">$question</span>-&gt;id}}"</span> id=<span class="hljs-string">"answer-{{<span class="hljs-variable">$option</span>}}-{{<span class="hljs-variable">$question</span>-&gt;id}}"</span>  <span class="hljs-built_in">type</span>=<span class="hljs-string">"radio"</span> value=<span class="hljs-string">"{{explode('_',<span class="hljs-variable">$option</span>)[1]}}"</span> class=<span class="hljs-string">"w-4 h-4 text-blue-600 bg-gray-100 border-gray-300 focus:ring-blue-500"</span>&gt;
                       &lt;label <span class="hljs-keyword">for</span>=<span class="hljs-string">"answer-{{<span class="hljs-variable">$option</span>}}-{{<span class="hljs-variable">$question</span>-&gt;id}}"</span> class=<span class="hljs-string">"w-full py-4 cursor-pointer ml-2 text-sm font-medium text-gray-900"</span>&gt;{{<span class="hljs-variable">$question</span>-&gt;<span class="hljs-variable">$option</span>}}&lt;/label&gt;
                   &lt;/div&gt;
               @endforeach
           &lt;/div&gt;
       &lt;/div&gt;
    @endforeach
&lt;/div&gt;
</code></pre>
<p>আপাতত আমাদের quize section রেডি এর কাজ গুলো আমরা বাকি টিউটোরিয়ালে complete করব।</p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/bChwn1eHILs"></iframe>

<p>discord link: <a target="_blank" href="http://discord.gg/9qWUUbQ3"><strong>discord.gg/9qWUUbQ3</strong></a></p>
<p>facebook group :<a target="_blank" href="http://web.facebook.com/groups/1661735757554627"><strong>web.facebook.com/groups/1661735757554627</strong></a></p>
<p>Happy Learning</p>
<p><strong><em>Rakibul Islam</em></strong></p>
]]></content:encoded></item><item><title><![CDATA[লারাভেলের ভবিষ্যৎ কী?]]></title><description><![CDATA[লারাভেলের ভবিষ্যৎ সেটা নিয়ে আলোচনা করতে গেলে প্রথমে পিএইচপি নিয়ে কিছু কথা বলতে হবে।
পৃথীবিতে এমন কিছু টেকনোলজি আছে যা আগেও জনপ্রীয় ছিল এখনও আছে এবং ভবিষ্যতেও জনপ্রীয় থাকবে (ইনশাআল্লাহ্), যার প্রয়োজনীয়তা সহজেই শেষ হবেনা, সেরকম একটি টেকনোলজি হচ্ছে পিএ...]]></description><link>https://blog.shikhun.net/laravel-future</link><guid isPermaLink="true">https://blog.shikhun.net/laravel-future</guid><category><![CDATA[লারাভেলের ভবিষ্যৎ কী?]]></category><category><![CDATA[পিএইচপি ফ্রেমওয়ার্ক]]></category><dc:creator><![CDATA[Mohammad Ullah]]></dc:creator><pubDate>Fri, 13 Jan 2023 18:18:35 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1673633339067/81285a6a-0fb3-4cde-a6e3-106104cb45c2.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>লারাভেলের ভবিষ্যৎ সেটা নিয়ে আলোচনা করতে গেলে প্রথমে পিএইচপি নিয়ে কিছু কথা বলতে হবে।</p>
<p>পৃথীবিতে এমন কিছু টেকনোলজি আছে যা আগেও জনপ্রীয় ছিল এখনও আছে এবং ভবিষ্যতেও জনপ্রীয় থাকবে (ইনশাআল্লাহ্), যার প্রয়োজনীয়তা সহজেই শেষ হবেনা, সেরকম একটি টেকনোলজি হচ্ছে পিএইচপি।</p>
<p>১৯৯৫ সালে পিএইচপি এসেছে এখন ২০২৩ সাল, জন্ম লগ্ন থেকেই পিএইচপি রাজত্ব করে আসছে এখনও রাজত্ব করছে যত দিন যাচ্ছে তার ব্যবহার ও জনপ্রীয় বাড়ছে। ৬৮% এর চেয়েও বেশি ওয়েবসাইট পিএইচপি দিয়ে বানানো।</p>
<p>শুধু র পিএইচপি দিয়ে কোয়ালিটিফুল বড় ওয়েবসাইট/এ্যাপ্লিকেশন বানানো অসম্ভব প্রায়, এজন্য প্রয়োজন হয় লাইব্রেরী ও ফ্রেমওয়ার্কের।</p>
<p>লারাভেল কী?</p>
<p>লারাভেল হলো পিএইচপির একটি ফ্রেমওয়ার্ক, র পিএইচপি দিয়ে একটি ওয়েবসাইট/এ্যাপ্লিকেশন বানানোর চেয়ে লারাভেল দিয়ে বানালে সেটা অনেক বেশি সিকিউর হবে, কোয়ালিটি সম্পন্ন হবে এবং অনেক অনেক ভালো হবে। পিএচপির অনেক ফ্রেমওয়ার্ক আছে তার মধ্যে লারাভেল সবার সেরা।</p>
<p>লারাভেল এসেছে ২০১১ সালে এখন ২০২৩ সাল, শুরু থেকে নিয়ে এখন পর্যন্ত তার জনপ্রীয়তা ধরে রেখেছে বরং জনপ্রীয়তা দিন দিন আরো বাড়ছে।</p>
<p>সুতরাং আপনি যদি লারাভেল শিখতে চান বা শিখছেন তাহলে নিশ্চিন্তে শিখুন/শিখতে থাকুন।</p>
<p>অনেকের মধ্যে একটা ভূল ধারণা কাজ করে যে লারাভে প্রতি নিয়ত আপডেট হয় এখন লারাভেল-৯ শিখলে আবার কদিন পর লারাভেল-১০, ১১, ১২ …..। আসল কথা হচ্ছে আপনি যদি লারাভেলের যেকোন ভার্সন শিখেন তাহলে পরবর্তি যেই ভার্সন আসুক না কেন আপনি পারবেন এতে কোন সন্দেহ নেই।</p>
]]></content:encoded></item></channel></rss>