ডেটাবেস থেকে ডেটা তুলে এনে ওয়েবসাইটে দেখানো (SELECT Query)

 


ডেটাবেস থেকে ডেটা তুলে এনে ওয়েবসাইটে দেখানো (SELECT Query)

ডেটাবেস থেকে তথ্য (Data) তুলে এনে ওয়েবসাইটে দেখানোর প্রক্রিয়াটি মূলত একটি Workflow বা পর্যায়ক্রমিক ধাপের মাধ্যমে সম্পন্ন হয় আপনার প্রশ্নের মূল জায়গা হলো SQL SELECT Query, তবে এটি কাজ করার জন্য একটি ব্যাক-এন্ড ল্যাঙ্গুয়েজ (যেমন: PHP, Python, বা Node.js) প্রয়োজন হয়

নিচে সহজভাবে এর ধাপগুলো আলোচনা করা হলো:


. ডেটাবেস কানেকশন (The Bridge)

প্রথমে আপনার কোডকে ডেটাবেসের সাথে সংযুক্ত করতে হয়। ধরুন আমরা PHP ব্যবহার করছি, তাহলে কোডটি অনেকটা এরকম হবে:

PHP

$conn = mysqli_connect("localhost", "username", "password", "database_name");

. সিলেক্ট কুয়েরি চালানো (The Request)

এখন আমরা SQL-এর মাধ্যমে ডেটাবেসকে বলবো আমরা কী চাই

  • সব ডেটা আনতে: SELECT * FROM users;
  • নির্দিষ্ট কোনো ডেটা আনতে: SELECT name, email FROM users WHERE id = 1;

. ডেটা প্রসেস করা (Fetching)

ডেটাবেস থেকে যখন তথ্য আসে, তখন সেটি সরাসরি ব্যবহার করা যায় না। একে একটি লুপের (Loop) মাধ্যমে আলাদা করতে হয় যাতে আমরা প্রতিটি সারি (Row) আলাদাভাবে দেখতে পারি

. এইচটিএমএল (HTML) প্রদর্শন

সবশেষে, লুপ চালিয়ে আমরা ডেটাগুলোকে সুন্দর একটি টেবিলে বা লিস্টে সাজিয়ে দেখাই


একটি বাস্তব উদাহরণ (PHP MySQL দিয়ে)

নিচে একটি সহজ কোড দেওয়া হলো যা একটি users টেবিল থেকে নাম এবং ইমেইল তুলে আনবে:

PHP

// . কানেকশন তৈরি

$conn = new mysqli("localhost", "root", "", "my_db");

 

// . কুয়েরি লেখা

$sql = "SELECT id, name, email FROM users";

$result = $conn->query($sql);

 

// . চেক করা ডেটা আছে কি না এবং লুপ চালানো

if ($result->num_rows > 0) {

    echo "<table><tr><th>ID</th><th>Name</th><th>Email</th></tr>";

   

    // . প্রতি সারি ডেটা প্রিন্ট করা

    while($row = $result->fetch_assoc()) {

        echo "<tr><td>" . $row["id"]. "</td><td>" . $row["name"]. "</td><td>" . $row["email"]. "</td></tr>";

    }

    echo "</table>";

} else {

    echo "কোনো তথ্য পাওয়া যায়নি।";

}

 

$conn->close();


প্রধান কিছু বিষয় মনে রাখা জরুরি:

Security: সরাসরি ইউজার ইনপুট কুয়েরিতে বসাবেন না, এতে SQL Injection এর ঝুঁকি থাকে। সবসময় Prepared Statements ব্যবহার করার চেষ্টা করবেন

Performance: যদি হাজার হাজার ডেটা থাকে, তবে একবারে সব না তুলে LIMIT ব্যবহার করে অল্প অল্প করে ডেটা লোড করা ভালো (যাকে Pagination বলে)

Node.js- ডেটাবেস থেকে ডেটা তুলে আনতে আমরা সাধারণত mysql2 প্যাকেজ এবং EJS (বা সরাসরি JSON) ব্যবহার করি


Node.js Express দিয়ে ডেটা দেখানোর ধাপসমূহ

. প্রয়োজনীয় প্যাকেজ ইনস্টল করা

প্রথমে আপনার প্রোজেক্টে নিচের কমান্ডটি দিয়ে প্যাকেজগুলো নিয়ে নিন:

Bash

npm install express mysql2 ejs

. মূল কোড (app.js)

নিচের কোডটি লক্ষ্য করুন যেখানে আমরা একটি রাউট তৈরি করেছি যা ডেটাবেস থেকে তথ্য নিয়ে আসবে

JavaScript

const express = require('express');
const mysql = require('mysql2');
const app = express();
 
// . ডেটাবেস কানেকশন সেটআপ
const db = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '',
    database: 'my_test_db'
});
 
db.connect((err) => {
    if (err) throw err;
    console.log('Connected to MySQL Database!');
});
 
// . ভিউ ইঞ্জিন সেটআপ (HTML দেখানোর জন্য)
app.set('view engine', 'ejs');
 
// . SELECT Query চালিয়ে ডেটা আনা
app.get('/users', (req, res) => {
    const sql = "SELECT * FROM users";
    
    db.query(sql, (err, results) => {
        if (err) throw err;
        // ফলাফলগুলো ওয়েব পেজে পাঠানো
        res.render('users', { users: results });
    });
});
 
app.listen(3000, () => {
    console.log('Server is running on port 3000');
});

. ফ্রন্ট-এন্ডে দেখানো (views/users.ejs)

এখন একটি HTML ফাইল তৈরি করুন যেখানে লুপ চালিয়ে ডেটাগুলো দেখানো হবে:

HTML

<!DOCTYPE html>
<html>
<head>
    <title>User List</title>
</head>
<body>
    <h2>Our Users</h2>
    <ul>
        <% users.forEach(function(user) { %>
            <li><%= user.name %> - <%= user.email %></li>
        <% }); %>
    </ul>
</body>
</html>

এই প্রক্রিয়ার সারসংক্ষেপ:

. Database Connection: ব্যাক-এন্ড থেকে ডেটাবেসে লগইন করা হয়। . The Query: SELECT কমান্ড পাঠিয়ে ডেটা চাওয়া হয়। . The Result: ডেটাবেস থেকে তথ্যগুলো একটি Array of Objects হিসেবে আসে। . Rendering: সেই অ্যারেটিকে লুপ চালিয়ে লুপ চালিয়ে ব্রাউজারে সুন্দরভাবে সাজিয়ে দেওয়া হয়

 

 






Post a Comment

0 Comments