මොඩියුලය 5

ප්‍රවර්ග (Category) සහ සැපයුම්කරුවන් (Supplier) කළමනාකරණය


1 ප්‍රවර්ග සහ සැපයුම්කරුවන් වෙනම කළමනාකරණය කළ යුත්තේ ඇයි?

දත්ත සමුදා සැලසුම්කරණයේදී "සාමාන්‍යකරණය" (Normalization) යනු ඉතා වැදගත් සංකල්පයකි. මෙහිදී දත්ත නැවත නැවත යෙදීම (data redundancy) සහ නොගැලපීම් (inconsistencies) අවම කරනු ලැබේ.

උදාහරණයක් ලෙස, සෑම නිෂ්පාදනයක් සඳහාම ප්‍රවර්ගයේ නම ටයිප් කරනවා වෙනුවට (`products` වගුවේම), අපි `categories` නමින් වෙනම වගුවක් සාදා එහි ID එක පමණක් `products` වගුවේ ගබඩා කරමු.

ප්‍රධාන වාසි:
  • දත්තවල ඒකාග්‍රතාවය (Data Integrity): "Beverages" සහ "beverage" ලෙස වැරදීමකින් ඇතුළත් වීම වැළකේ. සියලුම නිෂ්පාදන එකම ප්‍රවර්ග ID එකකට සම්බන්ධ වේ.
  • කළමනාකරණයේ පහසුව: ප්‍රවර්ගයක නම වෙනස් කිරීමට අවශ්‍ය වුවහොත්, එය `categories` වගුවේ එක් තැනක පමණක් වෙනස් කළ විට, එම ප්‍රවර්ගයට අදාළ සියලුම නිෂ්පාදන සඳහා එය ස්වයංක්‍රීයව යාවත්කාලීන වේ.
  • කාර්යක්ෂමතාව: දත්ත සමුදාය කුඩා වන අතර සෙවුම් (queries) වේගවත් වේ.
2 නිෂ්පාදන ෆෝරමයට ගතික ඩ්‍රොප්ඩවුන් (Dynamic Dropdown) එක් කිරීම

මොඩියුල 4 හි අප සෑදූ නිෂ්පාදන එකතු කිරීමේ (`product_add.php`) ෆෝරමයේ, ප්‍රවර්ග තෝරාගැනීම සඳහා වන ඩ්‍රොප්ඩවුන් මෙනුව දැන් දත්ත සමුදායෙන් ගෙන පෙන්විය යුතුය. ඒ සඳහා, ෆෝරමය පූරණය (load) වන විට, `categories` වගුවෙන් සියලුම ප්‍රවර්ග ලබාගෙන ඒවා `

<select name="category_id" class="form-control" required> <option value="">-- Select Category --</option> <?php // Fetch categories from the database $sql = "SELECT id, name FROM categories ORDER BY name ASC"; $result = mysqli_query($conn, $sql); while ($row = mysqli_fetch_assoc($result)) { echo "<option value='" . $row['id'] . "'>" . htmlspecialchars($row['name']) . "</option>"; } ?> </select>

මෙම කේත කොටස `product_add.php` සහ `product_edit.php` යන ගොනු දෙකේම ප්‍රවර්ග ඩ්‍රොප්ඩවුන් මෙනුව සඳහා යෙදිය යුතුය.

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

අපි ප්‍රවර්ග බැලීම, එකතු කිරීම, සහ සංස්කරණය කිරීම සඳහා සරල, තනි පිටුවක CRUD පද්ධතියක් ගොඩනගමු. මෙය මොඩියුල 4 ට වඩා වෙනස්, කාර්යක්ෂම ක්‍රමයකි.

පියවර 1: `categories.php` ගොනුව නිර්මාණය කිරීම

මෙම තනි ගොනුව තුළ ප්‍රවර්ග ලැයිස්තුවක්, නව ප්‍රවර්ගයක් එක් කිරීමට ෆෝරමයක් සහ Edit/Delete බොත්තම් අඩංගු වේ.

<?php // categories.php session_start(); // ... (Check if user is logged in and is an admin) ... include 'includes/db_connect.php'; // Handle Form Submission for Add/Edit if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['cat_name'])) { $cat_name = $_POST['cat_name']; // Logic to either INSERT a new category or UPDATE an existing one // ... header("location: categories.php"); exit; } // Handle Delete if (isset($_GET['delete'])) { $id_to_delete = $_GET['delete']; // Logic to DELETE category // ... header("location: categories.php"); exit; } // Fetch all categories to display $categories_result = mysqli_query($conn, "SELECT * FROM categories"); ?> <!DOCTYPE html> <html> <head><title>Manage Categories</title> <!-- Bootstrap CSS --> </head> <body> <div class="container"> <div class="row"> <!-- Add/Edit Form Column --> <div class="col-md-4"> <h3>Add New Category</h3> <form action="categories.php" method="POST"> <div class="mb-3"> <label for="cat_name">Category Name</label> <input type="text" name="cat_name" class="form-control" required> </div> <button type="submit" class="btn btn-primary">Save Category</button> </form> </div> <!-- Category List Column --> <div class="col-md-8"> <h3>Category List</h3> <table class="table table-bordered"> <!-- Table headers --> <tbody> <?php while($row = mysqli_fetch_assoc($categories_result)): ?> <tr> <td><?php echo $row['id']; ?></td> <td><?php echo htmlspecialchars($row['name']); ?></td> <td> <a href="#" class="btn btn-sm btn-primary">Edit</a> <!-- Edit functionality can be added with JavaScript or a separate page --> <a href="categories.php?delete=<?php echo $row['id']; ?>" class="btn btn-sm btn-danger" onclick="return confirm('Are you sure?')">Delete</a> </td> </tr> <?php endwhile; ?> </tbody> </table> </div> </div> </div> </body> </html>

පියවර 2: `product_add.php` සහ `product_edit.php` යාවත්කාලීන කිරීම

ඉහත "ගතික ඩ්‍රොප්ඩවුන්" කොටසේ පෙන්වා ඇති PHP කේතය ඔබගේ නිෂ්පාදන ෆෝරමවලට ඇතුළත් කරන්න. දැන් ඔබට නව ප්‍රවර්ගයක් `categories.php` පිටුවෙන් එකතු කළ විට, එය ස්වයංක්‍රීයව නිෂ්පාදන එකතු කිරීමේ ෆෝරමයේ ඩ්‍රොප්ඩවුන් මෙනුවේ දිස්වනු ඇත.

අමතර අභියෝගය: සැපයුම්කරුවන් කළමනාකරණය (Supplier Management)

ප්‍රවර්ග සඳහා අප සෑදූ CRUD පද්ධතිය ආදර්ශයට ගෙන, සැපයුම්කරුවන් සඳහා ද එවැනිම කළමනාකරණ පද්ධතියක් ඔබම නිර්මාණය කිරීමට උත්සාහ කරන්න. මේ සඳහා `suppliers` නමින් නව වගුවක් (`id`, `name`, `contact_number` වැනි තීරු සහිතව) සහ `suppliers.php` නමින් ගොනුවක් අවශ්‍ය වනු ඇත.

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