ස්ථිතික (Static) වෙබ් පිටු වලින් ඔබ්බට ගොස්, දත්ත සමුදායක් සමඟ ගනුදෙනු කරන ගතික (Dynamic) වෙබ් යෙදුමක් නිර්මාණය කිරීමට ඉගෙන ගනිමු.
ඔබ HTML සහ PHP වල මූලික කරුණු ඉගෙන ගෙන ඇත්නම්, ඔබගේ මීළඟ සහ වඩාත්ම වැදගත් පියවර වන්නේ වෙබ් යෙදුමක් දත්ත සමුදායක් (Database) සමඟ සම්බන්ධ කරන ආකාරය ඉගෙන ගැනීමයි. ලෝකයේ ඇති සෑම ගතික වෙබ් යෙදුමක්ම පාහේ (Facebook, Google, E-commerce අඩවි) මෙම මූලධර්මය මත ක්රියාත්මක වේ. දත්ත සමුදායක් සමඟ ගනුදෙනු කිරීමේදී අප සිදු කරන මූලිකම මෙහෙයුම් හතර **CRUD** ලෙස හැඳින්වේ.
CRUD යනු දත්ත සමුදායක දත්ත කළමනාකරණය කිරීමේදී සිදු කරන මූලික මෙහෙයුම් හතරේ Anfangsbuchstaben වේ.
මෙම නිබන්ධනයෙන්, අපි මෙම CRUD මෙහෙයුම් හතරම ක්රියාත්මක වන සරල **"ශිෂ්ය කළමනාකරණ පද්ධතියක්" (Student Management System)** මුල සිටම PHP සහ MySQL භාවිතා කර නිර්මාණය කරමු. මෙම පාඩම අවසානයේදී, ඔබට ඕනෑම දත්ත-පදනම් වූ වෙබ් යෙදුමක අත්තිවාරම ස්වාධීනව ගොඩනැගීමට අවශ්ය දැනුම සහ විශ්වාසය ලැබෙනු ඇත.
පූර්ව අවශ්යතා: HTML forms සහ PHP variables පිළිබඳ මූලික දැනුම. ඔබගේ පරිගණකයේ XAMPP හෝ WAMP වැනි local server environment එකක් ස්ථාපනය කර තිබීම.
කේත ලිවීමට පෙර, අපගේ දත්ත ගබඩා කිරීමට අවශ්ය දත්ත සමුදාය සහ ව්යාපෘති ගොනු ව්යුහය සකසා ගනිමු.
CREATE TABLE students (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
grade VARCHAR(50) NOT NULL
);
මෙහි `id` යනු සෑම ශිෂ්යයෙකුටම හිමිවන, ස්වයංක්රීයව වැඩිවන, අනන්ය හඳුනාගැනීමේ අංකයයි (Primary Key).
අපගේ සියලුම PHP ගොනු වලට දත්ත සමුදාය සමඟ සම්බන්ධ වීමට අවශ්ය වේ. එම සම්බන්ධතා කේතය නැවත නැවත ලිවීම වෙනුවට, එය එක් ගොනුවක ලියා, අවශ්ය සෑම තැනකදීම එය `include` කර ගැනීම හොඳ පුරුද්දකි.
<?php
// Database connection parameters
$hostname = "localhost";
$username = "root";
$password = ""; // XAMPP හි සාමාන්යයෙන් password එකක් නොමැත
$database = "crud_app";
// Create a database connection
$connection = mysqli_connect($hostname, $username, $password, $database);
// Check if the connection was successful
if (!$connection) {
die("Database connection failed: " . mysqli_connect_error());
}
?>
මෙම ගොනුව, අපගේ යෙදුම සහ MySQL දත්ත සමුදාය අතර පාලමක් ලෙස ක්රියා කරයි.
අපගේ CRUD යෙදුමේ පළමු සහ මූලිකම කොටස වන්නේ, දත්ත සමුදායේ ඇති සියලුම ශිෂ්යයන්ගේ තොරතුරු වගුවක පෙන්වීමයි. මේ සඳහා අපි `index.php` ගොනුව නිර්මාණය කරමු.
`php-crud` ෆෝල්ඩරය තුළ, `index.php` නමින් නව ගොනුවක් සාදා පහත කේතය ඇතුළත් කරන්න.
<?php include 'db.php'; ?>
<!DOCTYPE html>
<html>
<head>
<title>Student Management System</title>
</head>
<body>
<h1>Student List</h1>
<a href="create.php">Add New Student</a>
<br><br>
<table border="1">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Grade</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
<?php
// SQL query to fetch all students
$sql = "SELECT * FROM students";
$result = mysqli_query($connection, $sql);
if (mysqli_num_rows($result) > 0) {
// Loop through each row of data
while ($row = mysqli_fetch_assoc($result)) {
echo "<tr>";
echo "<td>" . $row['id'] . "</td>";
echo "<td>" . $row['name'] . "</td>";
echo "<td>" . $row['grade'] . "</td>";
echo "<td>";
echo "<a href='edit.php?id=" . $row['id'] . "'>Edit</a> | ";
echo "<a href='delete.php?id=" . $row['id'] . "' onclick=\"return confirm('Are you sure you want to delete this record?');\">Delete</a>";
echo "</td>";
echo "</tr>";
}
} else {
echo "<tr><td colspan='4'>No students found</td></tr>";
}
?>
</tbody>
</table>
</body>
</html>
<?php mysqli_close($connection); ?>
දැන් අපි පරිශීලකයාට නව ශිෂ්යයෙකුගේ තොරතුරු ඇතුළත් කිරීමට HTML form එකක් සහ එම දත්ත දත්ත සමුදායට යවන PHP කේතයක් ලියමු. `create.php` නමින් නව ගොනුවක් සාදන්න.
<?php
include 'db.php';
// Check if the form is submitted
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// Get form data and sanitize it to prevent SQL injection
$name = mysqli_real_escape_string($connection, $_POST['name']);
$grade = mysqli_real_escape_string($connection, $_POST['grade']);
// SQL query to insert data
$sql = "INSERT INTO students (name, grade) VALUES ('$name', '$grade')";
if (mysqli_query($connection, $sql)) {
// Redirect to the main page after successful insertion
header("Location: index.php");
exit();
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($connection);
}
}
mysqli_close($connection);
?>
<!DOCTYPE html>
<html>
<head>
<title>Add New Student</title>
</head>
<body>
<h1>Add New Student</h1>
<form method="POST" action="create.php">
Name: <input type="text" name="name" required><br><br>
Grade: <input type="text" name="grade" required><br><br>
<input type="submit" value="Add Student">
</form>
<br>
<a href="index.php">Back to Student List</a>
</body>
</html>
දත්ත සංස්කරණය කිරීම පියවර දෙකක ක්රියාවලියකි: (1) තෝරාගත් ශිෂ්යයාගේ දැනට පවතින දත්ත form එකක පෙන්වීම, (2) පරිශීලකයා කරන වෙනස්කම් submit කළ පසු, දත්ත සමුදාය යාවත්කාලීන කිරීම. `edit.php` නමින් නව ගොනුවක් සාදන්න.
<?php
include 'db.php';
// Handle the POST request for updating the record
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$id = $_POST['id'];
$name = mysqli_real_escape_string($connection, $_POST['name']);
$grade = mysqli_real_escape_string($connection, $_POST['grade']);
$sql = "UPDATE students SET name='$name', grade='$grade' WHERE id=$id";
if (mysqli_query($connection, $sql)) {
header("Location: index.php");
exit();
} else {
echo "Error updating record: " . mysqli_error($connection);
}
}
// Get the student's current data to show in the form
$id = $_GET['id'];
$sql = "SELECT * FROM students WHERE id=$id";
$result = mysqli_query($connection, $sql);
$row = mysqli_fetch_assoc($result);
?>
<!DOCTYPE html>
<html>
<head>
<title>Edit Student</title>
</head>
<body>
<h1>Edit Student Record</h1>
<form method="POST" action="edit.php">
<input type="hidden" name="id" value="<?php echo $row['id']; ?>">
Name: <input type="text" name="name" value="<?php echo $row['name']; ?>" required><br><br>
Grade: <input type="text" name="grade" value="<?php echo $row['grade']; ?>" required><br><br>
<input type="submit" value="Update Record">
</form>
<br>
<a href="index.php">Back to Student List</a>
</body>
</html>
මෙය CRUD මෙහෙයුම් වලින් සරලම එකකි. `delete.php` නමින් නව ගොනුවක් සාදන්න.
<?php
include 'db.php';
// Get the ID from the URL
if (isset($_GET['id'])) {
$id = $_GET['id'];
// SQL query to delete a record
$sql = "DELETE FROM students WHERE id=$id";
if (mysqli_query($connection, $sql)) {
// Redirect back to the main page
header("Location: index.php");
exit();
} else {
echo "Error deleting record: " . mysqli_error($connection);
}
}
mysqli_close($connection);
?>
පරිශීලකයෙක් `index.php` හි ඇති Delete link එකක් ක්ලික් කළ විට, මෙම `delete.php` ගොනුව ක්රියාත්මක වී, URL එකෙන් අදාළ `id` එක ලබාගෙන, එම වාර්තාව දත්ත සමුදායෙන් ඉවත් කර, නැවත ප්රධාන පිටුවට යොමු කරයි. `index.php` හි ඇති JavaScript `confirm()` ශ්රිතය, වැරදීමකින් වාර්තා මැකී යාම වැළැක්වීමට උපකාරී වේ.
සුබ පැතුම්! ඔබ PHP සහ MySQL භාවිතා කර, සම්පූර්ණ CRUD ක්රියාකාරීත්වයෙන් යුත්, දත්ත-පදනම් වූ වෙබ් යෙදුමක් සාර්ථකව නිර්මාණය කර අවසන්. මෙය වෙබ් සංවර්ධනයේ ඉතාම මූලික සහ අත්යවශ්ය කුසලතාවයකි. ඔබ දැන් දන්නවා:
මෙම ව්යාපෘතිය ඔබගේ අනාගත, වඩාත් සංකීර්ණ වෙබ් යෙදුම් සඳහා ශක්තිමත් අත්තිවාරමක් වනු ඇත. ඔබට මෙයට CSS එකතු කර අලංකාර කිරීමට, වලංගුකරණ (validation) නීති එකතු කිරීමට, සහ සෙවුම් (search) ක්රියාකාරීත්වයක් එක් කිරීමට උත්සාහ කළ හැක.
ඊළඟට කුමක්ද? Server-side rendering වලින් ඔබ්බට ගොස්, ඉතා වේගවත්, අන්තර්ක්රියාකාරී, නවීන පරිශීලක අතුරුමුහුණත් (User Interfaces) නිර්මාණය කිරීමට භාවිතා කරන, JavaScript library එකක් වන **React** පිළිබඳව අපගේ මීළඟ නිබන්ධනයෙන් ඉගෙන ගනිමු!