How to develop Projects (BMS) Using PHP and Mysql Part 11

Rashmi Mishra
0


How to develop Projects (BMS) 

Using PHP and Mysql   Part 11

 Module 3: Blood Request and Donation Management

🎯 Purpose:

Allow requesters to request blood and match available donors; allow donors to view and respond to requests.


 Functionalities to Implement:

For Requesters:

  • 🩸 Submit a blood request (blood group, quantity, urgency, location, etc.)
  • 📋 View status of blood requests (Pending, Approved, Fulfilled, Cancelled)
  •  Cancel a blood request (if no longer needed)

For Donors:

  • 👀 View nearby blood requests (based on blood group and location)
  •  Accept a blood request (mark themselves available)
  • 🛑 Decline or ignore requests

📁 Suggested File/Folder Structure:

/blood_requests/

── request_form.php         # Blood request form

── request_list.php         # List of all requests (admin/requester view)

── my_requests.php          # View own requests (requester)

── available_requests.php   # View requests (for matching donors)

── respond_request.php      # Donor responds to a request


🧮 Suggested Database Tables:

1. blood_requests

CREATE TABLE blood_requests (

    id INT AUTO_INCREMENT PRIMARY KEY,

    requester_id INT NOT NULL,

    blood_group VARCHAR(10) NOT NULL,

    quantity INT NOT NULL,

    urgency ENUM('Low', 'Medium', 'High') DEFAULT 'Medium',

    location VARCHAR(255) NOT NULL,

    status ENUM('Pending', 'Approved', 'Fulfilled', 'Cancelled') DEFAULT 'Pending',

    requested_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,

    FOREIGN KEY (requester_id) REFERENCES users(id)

);

2. donor_responses

CREATE TABLE donor_responses (

    id INT AUTO_INCREMENT PRIMARY KEY,

    request_id INT NOT NULL,

    donor_id INT NOT NULL,

    response ENUM('Accepted', 'Declined') DEFAULT 'Accepted',

    response_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,

    FOREIGN KEY (request_id) REFERENCES blood_requests(id),

    FOREIGN KEY (donor_id) REFERENCES users(id)

);

💾 request_form.php (Requesters submit blood requests)

<?php

include '../db_connect.php'; // database connection

 

if (isset($_POST['submit'])) {

    $requester_id = 1;  // Example user ID, replace with $_SESSION['user_id']

    $blood_group = $_POST['blood_group'];

    $quantity = $_POST['quantity'];

    $urgency = $_POST['urgency'];

    $location = $_POST['location'];

 

    $sql = "INSERT INTO blood_requests (requester_id, blood_group, quantity, urgency, location)

            VALUES ('$requester_id', '$blood_group', '$quantity', '$urgency', '$location')";

    if ($conn->query($sql) === TRUE) {

        echo "Blood request submitted successfully!";

    } else {

        echo "Error: " . $conn->error;

    }

}

?>

 

<form method="POST">

    Blood Group: <input type="text" name="blood_group" required><br>

    Quantity: <input type="number" name="quantity" required><br>

    Urgency:

    <select name="urgency">

        <option value="Low">Low</option>

        <option value="Medium">Medium</option>

        <option value="High">High</option>

    </select><br>

    Location: <input type="text" name="location" required><br>

    <button type="submit" name="submit">Submit Request</button>

</form>


📋 request_list.php (Admin/Requester view all requests)

<?php

include '../db_connect.php'; 

$result = $conn->query("SELECT * FROM blood_requests");

echo "<h3>All Blood Requests</h3>";

echo "<table border='1'><tr><th>ID</th><th>Blood Group</th><th>Quantity</th><th>Urgency</th><th>Status</th></tr>"; 

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

    echo "<tr>

            <td>{$row['id']}</td>

            <td>{$row['blood_group']}</td>

            <td>{$row['quantity']}</td>

            <td>{$row['urgency']}</td>

            <td>{$row['status']}</td>

          </tr>";

}

echo "</table>";

?>


👤 my_requests.php (Requester views their requests)

<?php

include '../db_connect.php';

$requester_id = 1;  // Replace with logged-in user id 

$result = $conn->query("SELECT * FROM blood_requests WHERE requester_id = '$requester_id'"); 

echo "<h3>My Blood Requests</h3>";

echo "<table border='1'><tr><th>ID</th><th>Blood Group</th><th>Status</th><th>Action</th></tr>"; 

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

    echo "<tr>

            <td>{$row['id']}</td>

            <td>{$row['blood_group']}</td>

            <td>{$row['status']}</td>

            <td>

                <a href='cancel_request.php?id={$row['id']}'>Cancel</a>

            </td>

          </tr>";

}

echo "</table>";

?>


💡 available_requests.php (Donors view available requests)

<?php

include '../db_connect.php';

$donor_blood_group = 'A+'; // Replace with actual donor's blood group

$location = 'CityName';    // Replace with actual donor's location 

$result = $conn->query("SELECT * FROM blood_requests

                        WHERE blood_group = '$donor_blood_group'

                        AND location = '$location'

                        AND status = 'Pending'"); 

echo "<h3>Available Blood Requests</h3>";

echo "<table border='1'><tr><th>ID</th><th>Quantity</th><th>Urgency</th><th>Action</th></tr>"; 

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

    echo "<tr>

            <td>{$row['id']}</td>

            <td>{$row['quantity']}</td>

            <td>{$row['urgency']}</td>

            <td>

                <a href='respond_request.php?id={$row['id']}&response=Accepted'>Accept</a> |

                <a href='respond_request.php?id={$row['id']}&response=Declined'>Decline</a>

            </td>

          </tr>";

}

echo "</table>";

?>


🔁 respond_request.php (Donor responds to a request)

<?php

include '../db_connect.php';

 

if (isset($_GET['id']) && isset($_GET['response'])) {

    $request_id = $_GET['id'];

    $donor_id = 2;  // Replace with actual logged-in donor ID

    $response = $_GET['response']; 

    $sql = "INSERT INTO donor_responses (request_id, donor_id, response)

            VALUES ('$request_id', '$donor_id', '$response')"; 

    if ($conn->query($sql) === TRUE) {

        if ($response == 'Accepted') {

            $conn->query("UPDATE blood_requests SET status='Approved' WHERE id='$request_id'");

        }

        echo "Response recorded!";

    } else {

        echo "Error: " . $conn->error;

    }

}

?>


⚙️ Extra: cancel_request.php (Cancel blood request)

<?php

include '../db_connect.php'; 

if (isset($_GET['id'])) {

    $request_id = $_GET['id'];

    $conn->query("UPDATE blood_requests SET status='Cancelled' WHERE id='$request_id'");

    echo "Request cancelled!";

}

?> 

Post a Comment

0Comments

Post a Comment (0)