How to develop Projects(OSMS) Using PHP and Mysql Part 9

Rashmi Mishra
2 minute read
0

 


How to develop Projects(OSMS) Using PHP and Mysql   
Part 9

7️ Online Service Management System

Module 1: Add Technician Details

Purpose: Allows admins to add and manage technician details.

Project Structure:

│── /technicians/               

   ├── add_technician.php         # Add technician 

   ├── edit_technician.php        # Edit technician details 

   ├── delete_technician.php      # Delete technician 

   ├── technician_list.php        # List all technicians 

Database Table:

CREATE TABLE technicians (

    id INT AUTO_INCREMENT PRIMARY KEY,

    name VARCHAR(255) NOT NULL,

    email VARCHAR(255) UNIQUE NOT NULL,

    specialization VARCHAR(255),

    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP

);

add_technician.php (Add Technician)

<?php

// Include database connection

include('../config/db.php');

 

if ($_SERVER["REQUEST_METHOD"] == "POST") {

    $name = trim($_POST['name']);

    $email = trim($_POST['email']);

    $specialization = trim($_POST['specialization']);

 

    if (!empty($name) && !empty($email)) {

        $sql = "INSERT INTO technicians (name, email, specialization) VALUES ('$name', '$email', '$specialization')";

        if (mysqli_query($conn, $sql)) {

            echo "<script>alert('Technician added successfully!'); window.location.href='technician_list.php';</script>";

        } else {

            echo "Error: " . mysqli_error($conn);

        }

    } else {

        echo "Name and Email are required!";

    }

}

mysqli_close($conn);

?>

 

<!DOCTYPE html>

<html>

<head>

    <title>Add Technician</title>

</head>

<body>

    <h2>Add Technician</h2>

    <form method="POST">

        <label>Name:</label>

        <input type="text" name="name" required><br><br>

 

        <label>Email:</label>

        <input type="email" name="email" required><br><br>

 

        <label>Specialization:</label>

        <input type="text" name="specialization"><br><br>

 

        <input type="submit" value="Add Technician">

    </form>

</body>

</html>


edit_technician.php (Edit Technician)

<?php

include('../config/db.php');

 

$id = $_GET['id'] ?? null;

if (!$id || !is_numeric($id)) {

    die("Invalid technician ID!");

}

 

$sql = "SELECT * FROM technicians WHERE id = $id";

$result = mysqli_query($conn, $sql);

 

if (mysqli_num_rows($result) !== 1) {

    die("Technician not found!");

}

 

$technician = mysqli_fetch_assoc($result);

 

if ($_SERVER["REQUEST_METHOD"] == "POST") {

    $name = trim($_POST['name']);

    $email = trim($_POST['email']);

    $specialization = trim($_POST['specialization']);

 

    if (!empty($name) && !empty($email)) {

        $sql = "UPDATE technicians SET name='$name', email='$email', specialization='$specialization' WHERE id=$id";

        if (mysqli_query($conn, $sql)) {

            echo "<script>alert('Technician updated successfully!'); window.location.href='technician_list.php';</script>";

        } else {

            echo "Error: " . mysqli_error($conn);

        }

    } else {

        echo "Name and Email are required!";

    }

}

 

mysqli_close($conn);

?>

 

<!DOCTYPE html>

<html>

<head>

    <title>Edit Technician</title>

</head>

<body>

    <h2>Edit Technician</h2>

    <form method="POST">

        <label>Name:</label>

        <input type="text" name="name" value="<?= htmlspecialchars($technician['name']) ?>" required><br><br>

 

        <label>Email:</label>

        <input type="email" name="email" value="<?= htmlspecialchars($technician['email']) ?>" required><br><br>

 

        <label>Specialization:</label>

        <input type="text" name="specialization" value="<?= htmlspecialchars($technician['specialization']) ?>"><br><br>

 

        <input type="submit" value="Update Technician">

    </form>

</body>

</html>


delete_technician.php (Delete Technician)

<?php

include('../config/db.php');

 

$id = $_GET['id'] ?? null;

if (!$id || !is_numeric($id)) {

    die("Invalid technician ID!");

}

 

$sql = "DELETE FROM technicians WHERE id = $id";

if (mysqli_query($conn, $sql)) {

    echo "<script>alert('Technician deleted successfully!'); window.location.href='technician_list.php';</script>";

} else {

    echo "Error: " . mysqli_error($conn);

}

 

mysqli_close($conn);

?>


technician_list.php (Technician List)

<?php

include('../config/db.php');

 

$sql = "SELECT * FROM technicians ORDER BY id DESC";

$result = mysqli_query($conn, $sql);

?>

 

<!DOCTYPE html>

<html>

<head>

    <title>Technician List</title>

    <style>

        table {

            width: 100%;

            border-collapse: collapse;

        }

        table, th, td {

            border: 1px solid black;

        }

        th, td {

            padding: 10px;

            text-align: left;

        }

        th {

            background-color: #f2f2f2;

        }

        .action-links a {

            margin-right: 10px;

            text-decoration: none;

            color: blue;

        }

    </style>

</head>

<body>

    <h2>Technician List</h2>

    <table>

        <tr>

            <th>ID</th>

            <th>Name</th>

            <th>Email</th>

            <th>Specialization</th>

            <th>Created At</th>

            <th>Actions</th>

        </tr>

 

        <?php if (mysqli_num_rows($result) > 0): ?>

            <?php while ($row = mysqli_fetch_assoc($result)): ?>

                <tr>

                    <td><?= $row['id'] ?></td>

                    <td><?= htmlspecialchars($row['name']) ?></td>

                    <td><?= htmlspecialchars($row['email']) ?></td>

                    <td><?= htmlspecialchars($row['specialization']) ?></td>

                    <td><?= $row['created_at'] ?></td>

                    <td class='action-links'>

                        <a href='edit_technician.php?id=<?= $row['id'] ?>'>Edit</a>

                        <a href='delete_technician.php?id=<?= $row['id'] ?>' onclick='return confirm("Are you sure?")'>Delete</a>

                    </td>

                </tr>

            <?php endwhile; ?>

        <?php else: ?>

            <tr><td colspan='6'>No technicians found</td></tr>

        <?php endif; ?>

 

        <?php mysqli_close($conn); ?>

    </table>

    <br>

    <a href="add_technician.php">Add New Technician</a>

</body>

</html>


🔹 Improvements Made:

1.   Pure mysqli_query() method: No prepared statements are used.

2.   Security:

o    Used htmlspecialchars() to prevent XSS.

o    Checked if id is numeric before SQL queries.

3.   Better Redirects:

o    Used JavaScript window.location.href for navigation.

4.   Optimized SQL Queries:

o    ORDER BY id DESC in listing for the latest records first.

o    mysqli_num_rows() properly used before fetching data.

5.   Error Handling:

o    Used mysqli_error() for debugging.

 

Post a Comment

0Comments

Post a Comment (0)