මොඩියුලය 4

නිෂ්පාදන කළමනාකරණය (Product Management - CRUD)


1 CRUD මෙහෙයුම් යනු මොනවාද?

CRUD යනු දත්ත සමුදායක් සමඟ වැඩ කිරීමේදී සිදුකරන මූලික මෙහෙයුම් හතර සඳහා කෙටි යෙදුමකි. ඕනෑම දත්ත-පාදක යෙදුමක (data-driven application) හදවත මෙයයි.

  • Create (නිර්මාණය කිරීම): දත්ත සමුදායට නව දත්ත ඇතුළත් කිරීම. (උදා: නව නිෂ්පාදනයක් එකතු කිරීම).
  • Read (කියවීම): දත්ත සමුදායෙන් දත්ත ලබාගෙන ප්‍රදර්ශනය කිරීම. (උදා: සියලුම නිෂ්පාදන ලැයිස්තුවක් පෙන්වීම).
  • Update (යාවත්කාලීන කිරීම): දැනටමත් පවතින දත්ත වෙනස් කිරීම. (උදා: නිෂ්පාදනයක මිල වෙනස් කිරීම).
  • Delete (මකා දැමීම): දත්ත සමුදායෙන් දත්ත ඉවත් කිරීම. (උදා: නිෂ්පාදනයක් පද්ධතියෙන් ඉවත් කිරීම).
2 නිෂ්පාදන පින්තූර සඳහා ගොනු උඩුගත කිරීම (File Upload)

නිෂ්පාදන සඳහා පින්තූර එකතු කිරීමට, පරිශීලකයාට තම පරිගණකයෙන් ගොනු තෝරා සර්වර් එකට යැවීමට සැලැස්විය යුතුය. මේ සඳහා කරුණු කිහිපයක් වැදගත් වේ.

HTML ෆෝරමය:

ෆෝරම ටැගය තුළ `enctype="multipart/form-data"` යන attribute එක අනිවාර්යයෙන්ම තිබිය යුතුය.

<form action="upload.php" method="post" enctype="multipart/form-data">
PHP මගින් හැසිරවීම:

උඩුගත කළ ගොනුව පිළිබඳ සියලු තොරතුරු PHP හි `$_FILES` global විචල්‍යය තුළ අඩංගු වේ. `move_uploaded_file()` ශ්‍රිතය (function) භාවිතයෙන් එම ගොනුව සර්වර් එකේ අපට අවශ්‍ය ස්ථානයකට ගෙන යා හැක.

<?php $target_dir = "uploads/"; $target_file = $target_dir . basename($_FILES["productImage"]["name"]); move_uploaded_file($_FILES["productImage"]["tmp_name"], $target_file); ?>

සැලකිය යුතුයි: `supermarket` ෆෝල්ඩරය තුළ `uploads` නමින් නව ෆෝල්ඩරයක් සාදන්න. මෙම ෆෝල්ඩරයට ගොනු ලිවීමට අවශ්‍ය අවසර (write permissions) සර්වර් එකට තිබිය යුතුය.

⭐ ප්‍රායෝගික පැවරුම: "නිෂ්පාදන කළමනාකරණය" පිටුව ගොඩනැගීම

මෙම කාර්යය සඳහා අපි ගොනු කිහිපයක් සාදන්නෙමු. සියලුම පිටු සඳහා, පරිශීලකයා ලොග් වී ඇත්දැයි පරීක්ෂා කිරීමට මොඩියුල 3 හි `dashboard.php` හි මෙන් session පරීක්ෂාව යොදන්න.

පියවර 1: නිෂ්පාදන ලැයිස්තුව පෙන්වන පිටුව (`products.php`)

මෙමගින් `products` වගුවේ ඇති සියලුම නිෂ්පාදන Bootstrap table එකක පෙන්වයි. "Add New" බොත්තමක් සහ එක් එක් නිෂ්පාදනය සඳහා "Edit" සහ "Delete" ලින්ක් අඩංගු වේ.

<!-- products.php --> <?php session_start(); if (!isset($_SESSION["loggedin"]) || $_SESSION["loggedin"] !== true) { header("location: login.php"); exit; } include 'includes/db_connect.php'; $sql = "SELECT p.id, p.name, c.name AS category, p.price, p.quantity FROM products p JOIN categories c ON p.category_id = c.id"; $result = mysqli_query($conn, $sql); ?> <!DOCTYPE html> <html> <head><title>Manage Products</title> <!-- Bootstrap CSS --> </head> <body> <div class="container"> <h1>Manage Products</h1> <a href="product_add.php" class="btn btn-success mb-3">Add New Product</a> <table class="table table-bordered"> <thead> <tr><th>ID</th><th>Name</th><th>Category</th><th>Price</th><th>Quantity</th><th>Actions</th></tr> </thead> <tbody> <?php while($row = mysqli_fetch_assoc($result)): ?> <tr> <td><?php echo $row['id']; ?></td> <td><?php echo $row['name']; ?></td> <td><?php echo $row['category']; ?></td> <td><?php echo $row['price']; ?></td> <td><?php echo $row['quantity']; ?></td> <td> <a href="product_edit.php?id=<?php echo $row['id']; ?>" class="btn btn-primary btn-sm">Edit</a> <a href="product_delete.php?id=<?php echo $row['id']; ?>" class="btn btn-danger btn-sm" onclick="return confirm('Are you sure?')">Delete</a> </td> </tr> <?php endwhile; ?> </tbody> </table> </div> </body> </html>

පියවර 2: නිෂ්පාදන එකතු කිරීමේ ෆෝරමය (`product_add.php`)

නව නිෂ්පාදන තොරතුරු ඇතුළත් කිරීමට අවශ්‍ය HTML ෆෝරමය. ප්‍රවර්ග (Categories) දත්ත සමුදායෙන් ගෙන dropdown මෙනුවක් ලෙස පෙන්විය යුතුය.

<!-- product_add.php --> <!-- HTML form with fields: name, category_id (dropdown), price, quantity, image --> <!-- Form action should be "product_handle_add.php" with method="POST" and enctype="multipart/form-data" -->

පියවර 3: නිෂ්පාදන එකතු කිරීම හැසිරවීම (`product_handle_add.php`)

`product_add.php` ෆෝරමයෙන් ලැබෙන දත්ත සහ පින්තූරය ලබාගෙන, දත්ත සමුදායේ `products` වගුවට ඇතුළත් කරන PHP කේතය.

<?php // product_handle_add.php // 1. Check if form is submitted // 2. Get form data (name, price, etc.) // 3. Handle file upload (check for errors, move file to 'uploads/') // 4. Get the file path to store in DB // 5. Prepare SQL INSERT statement // 6. Bind parameters and execute // 7. Redirect back to products.php with a success message ?>

පියවර 4: නිෂ්පාදන සංස්කරණය (`product_edit.php` සහ `product_handle_edit.php`)

`product_edit.php` පිටුව, `product_add.php` පිටුවට බොහෝ සෙයින් සමාන වේ, නමුත් මෙහිදී අදාළ නිෂ්පාදනයේ ID එක (`?id=...` ලෙස URL එකෙන් ලබාගෙන) දත්ත සමුදායෙන් එහි පවතින තොරතුරු ලබාගෙන ෆෝරමය පුරවා පෙන්විය යුතුය. ඉන්පසු `product_handle_edit.php` මගින් `UPDATE` SQL විධානය භාවිතයෙන් දත්ත යාවත්කාලීන කරයි.

පියවර 5: නිෂ්පාදන ඉවත් කිරීම (`product_delete.php`)

මෙම ගොනුව URL එකෙන් (`?id=...`) නිෂ්පාදන ID එක ලබාගෙන, `DELETE FROM products WHERE id = ?` යන SQL විධානය ක්‍රියාත්මක කර අදාළ නිෂ්පාදනය දත්ත සමුදායෙන් ඉවත් කරයි. ඉන්පසු නැවත `products.php` පිටුවට යොමු කරයි.

මෙම සියලුම ගොනු නිර්මාණය කර එකිනෙක සම්බන්ධ කළ පසු, ඔබට නිෂ්පාදන එකතු කිරීමට, බැලීමට, සංස්කරණය කිරීමට සහ ඉවත් කිරීමට හැකි සම්පූර්ණ කළමනාකරණ පද්ධතියක් ලැබෙනු ඇත. මෙය මෙම පාඨමාලාවේ ඉතා වැදගත් සන්ධිස්ථානයකි!

‹‹ පෙර මොඩියුලය (Module 3) ඊළඟ මොඩියුලය (Module 5) ››