বেসিক পি.এইচ.পি : পি.এইচ.পি এইচ.টি.এম.এল কোড
পিএইচপি (PHP) এবং এইচটিএমএল (HTML) একে অপরের পরিপূরক। পিএইচপি মূলত সার্ভার-সাইডে ডেটা প্রসেস করে, আর এইচটিএমএল সেই ডেটা ব্রাউজারে সুন্দরভাবে উপস্থাপন করে।
নিচে পিএইচপি এবং এইচটিএমএল কীভাবে একত্রে কাজ করে তার একটি সহজ গাইড দেওয়া হলো:
১. এইচটিএমএল-এর ভেতরে পিএইচপি লিখবেন কীভাবে?
এইচটিএমএল ফাইলের যেকোনো জায়গায় আপনি পিএইচপি ব্লক ব্যবহার করতে পারেন। তবে মনে রাখবেন, ফাইলটির এক্সটেনশন অবশ্যই .php হতে হবে (যেমন: index.php)।
PHP
<!DOCTYPE html>
<html>
<head>
<title>PHP and HTML</title>
</head>
<body>
<h1>আমার প্রথম পিএইচপি পেজ</h1>
<?php
echo "<p>এই লেখাটি পিএইচপি থেকে আসছে!</p>";
?>
</body>
</html>
২. পিএইচপি কেন ব্যবহার করবেন? (ডায়নামিক কন্টেন্ট)
এইচটিএমএল স্থির
(Static), কিন্তু পিএইচপি ব্যবহার করে আপনি কন্ডিশন বা ভ্যারিয়েবলের ওপর ভিত্তি করে কন্টেন্ট পরিবর্তন করতে পারেন।
উদাহরণ (ভ্যারিয়েবল ব্যবহার):
PHP
<?php
$user_name = "আরিফ";
?>
<h1>স্বাগতম, <?php echo $user_name; ?>!</h1>
৩. কন্ডিশনাল এইচটিএমএল (Logic
with HTML)
লজিকের ওপর ভিত্তি করে আপনি এইচটিএমএল কোড দেখাতে বা লুকাতে পারেন। এটি পিএইচপির অন্যতম শক্তিশালী দিক।
PHP
<?php $is_logged_in = true; ?>
<?php if ($is_logged_in): ?>
<button>প্রোফাইল দেখুন</button>
<?php else: ?>
<button>লগ-ইন করুন</button>
<?php endif; ?>
৪. লুপ এবং টেবিল (Data
representation)
পিএইচপি দিয়ে আপনি ডাটাবেজ থেকে আসা তথ্য খুব সহজে এইচটিএমএল টেবিলে সাজাতে পারেন।
|
আইটেম |
দাম |
|
আপেল |
১০০ টাকা |
|
কমলা |
১২০ টাকা |
Export to Sheets
কোড উদাহরণ:
PHP
<ul>
<?php
$fruits = ["আপেল", "কমলা", "কলা"];
foreach ($fruits as $fruit) {
echo "<li>$fruit</li>";
}
?>
</ul>
গুরুত্বপূর্ণ টিপস:
- ইকো (echo): এইচটিএমএল ট্যাগগুলো পিএইচপির ভেতর echo বা print দিয়ে প্রিন্ট করা যায়।
- ক্লিন কোড: এইচটিএমএল-এর মাঝে খুব বেশি পিএইচপি লজিক না লিখে আলাদা ফাইলে রাখলে কোড বুঝতে সুবিধা হয়।
- ব্রাউজার ভিউ: ব্রাউজারে যখন আপনি
"View Page Source" করবেন, তখন আপনি শুধু এইচটিএমএল দেখবেন, পিএইচপি কোড নয়। কারণ পিএইচপি সার্ভারে রান হয়ে এইচটিএমএল এ কনভার্ট হয়ে যায়।
একটি সাধারণ কন্টাক্ট ফর্ম তৈরি করতে আমাদের দুটি অংশ লাগবে: ১. HTML
অংশ: যেখানে ব্যবহারকারী তার নাম এবং মেসেজ লিখবেন। ২. PHP অংশ: যা ফর্মের ডাটা রিসিভ করবে এবং প্রসেস করবে।
নিচে একটি পূর্ণাঙ্গ উদাহরণ দেওয়া হলো যা আপনি একটি সিঙ্গেল ফাইলে (যেমন: contact.php) সেভ করে রান করতে পারবেন:
সিম্পল কন্টাক্ট ফর্ম (PHP
& HTML)
PHP
<!DOCTYPE html>
<html lang="bn">
<head>
<meta charset="UTF-8">
<title>যোগাযোগ ফর্ম</title>
<style>
body { font-family: Arial, sans-serif;
margin: 50px; line-height: 1.6; }
.container { max-width: 400px;
background: #f4f4f4; padding: 20px; border-radius: 8px; }
input, textarea { width: 100%; padding:
10px; margin: 10px 0; border: 1px solid #ccc; }
button { background: #28a745; color: white;
padding: 10px 15px; border: none; cursor: pointer; }
.success { color: green; font-weight:
bold; }
</style>
</head>
<body>
<div class="container">
<h2>আমাদের মেসেজ পাঠান</h2>
<?php
// ফর্ম সাবমিট হয়েছে কি না চেক করা
if ($_SERVER["REQUEST_METHOD"] ==
"POST") {
$name = htmlspecialchars($_POST['name']);
$email = htmlspecialchars($_POST['email']);
$message = htmlspecialchars($_POST['message']);
if (!empty($name) && !empty($email))
{
echo "<p
class='success'>ধন্যবাদ $name! আপনার মেসেজটি আমরা পেয়েছি।</p>";
} else {
echo "<p
style='color:red;'>অনুগ্রহ করে সব ঘর পূরণ করুন।</p>";
}
}
?>
<form method="post" action="<?php
echo $_SERVER['PHP_SELF']; ?>">
<label>আপনার নাম:</label>
<input type="text" name="name"
placeholder="আপনার নাম লিখুন" required>
<label>ইমেইল:</label>
<input type="email" name="email"
placeholder="আপনার ইমেইল" required>
<label>মেসেজ:</label>
<textarea name="message"
rows="4" placeholder="আপনার কথা লিখুন"></textarea>
<button type="submit">সাবমিট করুন</button>
</form>
</div>
</body>
</html>
এই কোডটি কীভাবে কাজ করছে?
- method="post": এটি ফর্মের ডাটাগুলোকে গোপনে সার্ভারে পাঠায়
(URL-এ দেখায় না)।
- $_POST['name']: এটি পিএইচপি-র একটি সুপার গ্লোবাল ভ্যারিয়েবল যা এইচটিএমএল ইনপুট ফিল্ডের name অ্যাট্রিবিউট থেকে ডাটা সংগ্রহ করে।
- htmlspecialchars(): এটি একটি সিকিউরিটি ফাংশন। এটি ব্যবহারকারী যাতে কোনো ক্ষতিকর স্ক্রিপ্ট ইনজেক্ট করতে না পারে তা নিশ্চিত করে।
- $_SERVER['PHP_SELF']: এই কোডটির মাধ্যমে ফর্ম সাবমিট করার পর পেজটি রিফ্রেশ হয়ে একই পেজেই রেজাল্ট দেখাবে।
নিচে MySQL ডাটাবেজে কন্টাক্ট ফর্মের ডাটা সেভ করার একটি কমপ্লিট উদাহরণ দেওয়া হলো:
১. প্রথমে ডাটাবেজ তৈরি করুন
আপনার phpMyAdmin বা MySQL টার্মিনালে গিয়ে নিচের কোডটি রান করে একটি টেবিল তৈরি করে নিন:
SQL
CREATE DATABASE contact_db;
USE contact_db;
CREATE TABLE messages (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) NOT NULL,
message TEXT,
submitted_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
২. পিএইচপি কোড
(Database Connection & Logic)
এই ফাইলটির নাম দিন process_contact.php। এখানে আমি ডাটাবেজ কানেকশন এবং ডাটা ইনসার্ট করার লজিক লিখেছি।
PHP
<?php
// ডাটাবেজ কানেকশন সেটিংস
$servername = "localhost";
$username = "root"; // আপনার ডাটাবেজ ইউজারনেম
$password = ""; // আপনার ডাটাবেজ পাসওয়ার্ড
$dbname = "contact_db";
// কানেকশন তৈরি করা
$conn = new mysqli($servername, $username,
$password, $dbname);
// কানেকশন চেক করা
if ($conn->connect_error) {
die("কানেকশন ব্যর্থ হয়েছে: " . $conn->connect_error);
}
// ফর্ম সাবমিট হয়েছে কি না চেক করা
if ($_SERVER["REQUEST_METHOD"]
== "POST") {
$user_name = $conn->real_escape_string($_POST['name']);
$user_email = $conn->real_escape_string($_POST['email']);
$user_msg = $conn->real_escape_string($_POST['message']);
// SQL কুয়েরি লিখে ডাটা সেভ করা
$sql = "INSERT INTO messages (name,
email, message) VALUES ('$user_name', '$user_email', '$user_msg')";
if ($conn->query($sql) === TRUE) {
echo "<h3>সফলভাবে ডাটাবেজে সেভ হয়েছে!</h3>";
} else {
echo "ভুল হয়েছে: " . $sql . "<br>"
. $conn->error;
}
}
$conn->close();
?>
৩. এইচটিএমএল ফর্ম
(Frontend)
আপনার মূল ফাইলে এই ফর্মটি থাকবে যা ডাটাগুলো process_contact.php ফাইলে পাঠিয়ে দেবে:
HTML
<form action="process_contact.php"
method="POST">
<label>আপনার নাম:</label><br>
<input type="text" name="name"
required><br><br>
<label>আপনার ইমেইল:</label><br>
<input type="email" name="email"
required><br><br>
<label>মেসেজ:</label><br>
<textarea name="message" rows="4"></textarea><br><br>
<button type="submit">ডাটা সেভ করুন</button>
</form>
গুরুত্বপূর্ণ কিছু টিপস:
- Security: আমি এখানে real_escape_string() ব্যবহার করেছি যাতে কেউ হ্যাকিং অ্যাটাক
(SQL Injection) না করতে পারে।
- Local Server: এটি রান করতে আপনার পিসিতে XAMPP
বা WAMP
সার্ভার ইনস্টল থাকতে হবে।
- Validation: প্রোফেশনাল কাজের জন্য সবসময় ইমেইল ফরমেট ঠিক আছে কি না তা চেক করে নেওয়া ভালো।
একটি কমপ্লিট পিএইচপি কোড দেওয়া হলো যা আপনার contact_db ডাটাবেজ থেকে তথ্য নিয়ে আসবে এবং টেবিল আকারে দেখাবে:
ডাটাবেজ থেকে ডাটা দেখানোর কোড (view_messages.php)
PHP
<?php
// ডাটাবেজ কানেকশন
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "contact_db";
$conn = new mysqli($servername, $username,
$password, $dbname);
if ($conn->connect_error) {
die("কানেকশন ব্যর্থ: " . $conn->connect_error);
}
// ডাটাবেজ থেকে তথ্য সিলেক্ট করা (সবশেষে যে মেসেজ এসেছে তা আগে দেখাবে)
$sql = "SELECT id, name,
email, message, submitted_at FROM messages ORDER BY id DESC";
$result = $conn->query($sql);
?>
<!DOCTYPE html>
<html lang="bn">
<head>
<meta charset="UTF-8">
<title>মেসেজ লিস্ট</title>
<style>
body { font-family: Arial, sans-serif;
margin: 40px; }
table { width: 100%; border-collapse:
collapse; margin-top: 20px; }
th, td { border: 1px solid #ddd; padding:
12px; text-align: left; }
th { background-color: #007bff; color:
white; }
tr:nth-child(even) { background-color: #f2f2f2;
}
tr:hover { background-color: #ddd; }
h2 { color: #333; }
</style>
</head>
<body>
<h2>📩 ইউজারদের পাঠানো মেসেজ তালিকা</h2>
<?php if ($result->num_rows > 0): ?>
<table>
<tr>
<th>আইডি</th>
<th>নাম</th>
<th>ইমেইল</th>
<th>মেসেজ</th>
<th>তারিখ ও সময়</th>
</tr>
<?php while($row = $result->fetch_assoc()):
?>
<tr>
<td><?php echo $row["id"];
?></td>
<td><?php echo $row["name"];
?></td>
<td><?php echo $row["email"];
?></td>
<td><?php echo
nl2br($row["message"]); ?></td>
<td><?php echo $row["submitted_at"];
?></td>
</tr>
<?php endwhile; ?>
</table>
<?php else: ?>
<p>এখনও কোনো মেসেজ জমা পড়েনি।</p>
<?php endif; ?>
<?php $conn->close(); ?>
</body>
</html>
এই কোডটি কীভাবে কাজ করছে?
- SELECT Query: এই কুয়েরিটি ডাটাবেজ থেকে আপনার সব তথ্য তুলে আনছে। ORDER
BY id DESC ব্যবহারের ফলে একদম নতুন মেসেজগুলো টেবিলের সবার উপরে দেখা যাবে।
- fetch_assoc(): এটি একটি লুপের মাধ্যমে ডাটাবেজের প্রতিটি সারিকে
(Row) একে একে রিড করে এবং টেবিলে বসায়।
- nl2br(): যদি কেউ মেসেজে এন্টার দিয়ে নতুন লাইন লিখে, এই ফাংশনটি ব্রাউজারে সেই নতুন লাইনগুলো
(Line breaks) সঠিকভাবে দেখাবে।

0 Comments