36693-vm/donor_register.php
Flatlogic Bot 28d92aa376 ODMS2
2025-12-05 19:54:09 +00:00

175 lines
8.3 KiB
PHP

<?php
require_once 'db/config.php';
$success_message = '';
$error_message = '';
try {
$pdo = db();
// Idempotent table creation
$pdo->exec("CREATE TABLE IF NOT EXISTS donors (
id INT AUTO_INCREMENT PRIMARY KEY,
full_name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL UNIQUE,
phone VARCHAR(50),
blood_type VARCHAR(10),
organs_to_donate TEXT,
registration_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
status VARCHAR(50) DEFAULT 'pending_verification'
)");
} catch (PDOException $e) {
$error_message = "Database error: " . $e->getMessage();
}
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$full_name = trim($_POST['full_name']);
$email = trim($_POST['email']);
$phone = trim($_POST['phone']);
$blood_type = $_POST['blood_type'];
$organs = isset($_POST['organs']) ? implode(', ', $_POST['organs']) : '';
if (empty($full_name) || empty($email) || empty($blood_type) || empty($organs)) {
$error_message = "Please fill all required fields.";
} elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$error_message = "Invalid email format.";
} else {
try {
$stmt = $pdo->prepare("INSERT INTO donors (full_name, email, phone, blood_type, organs_to_donate) VALUES (?, ?, ?, ?, ?)");
$stmt->execute([$full_name, $email, $phone, $blood_type, $organs]);
$success_message = "Thank you for registering as a donor! Your registration is pending verification.";
} catch (PDOException $e) {
if ($e->getCode() == 23000) { // Integrity constraint violation (e.g., duplicate email)
$error_message = "This email address is already registered.";
} else {
$error_message = "There was an error with your registration. Please try again.";
}
}
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Donor Registration - Organ Donation Management</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" href="assets/css/custom.css?v=<?php echo time(); ?>">
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<div class="container">
<a class="navbar-brand" href="index.php">OrganDonation</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav ms-auto">
<li class="nav-item">
<a class="nav-link" href="index.php">Home</a>
</li>
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="donor_register.php">Become a Donor</a>
</li>
<li class="nav-item">
<a class="nav-link" href="hospital_register.php">Hospital Registration</a>
</li>
<li class="nav-item">
<a class="nav-link" href="hospital_login.php">Hospital Login</a>
</li>
<li class="nav-item">
<a class="nav-link" href="admin_login.php">Admin Login</a>
</li>
</ul>
</div>
</div>
</nav>
<div class="container my-5">
<div class="row justify-content-center">
<div class="col-lg-8">
<h2 class="mb-4 text-center">Become a Life Saver: Register as a Donor</h2>
<?php if ($success_message): ?>
<div class="alert alert-success"><?php echo $success_message; ?></div>
<?php endif; ?>
<?php if ($error_message): ?>
<div class="alert alert-danger"><?php echo $error_message; ?></div>
<?php endif; ?>
<?php if (!$success_message): ?>
<form action="donor_register.php" method="POST">
<div class="card">
<div class="card-body">
<div class="mb-3">
<label for="full_name" class="form-label">Full Name</label>
<input type="text" class="form-control" id="full_name" name="full_name" required>
</div>
<div class="mb-3">
<label for="email" class="form-label">Email Address</label>
<input type="email" class="form-control" id="email" name="email" required>
</div>
<div class="mb-3">
<label for="phone" class="form-label">Phone Number</label>
<input type="tel" class="form-control" id="phone" name="phone">
</div>
<div class="mb-3">
<label for="blood_type" class="form-label">Blood Type</label>
<select class="form-select" id="blood_type" name="blood_type" required>
<option value="" selected disabled>Select your blood type</option>
<option value="A+">A+</option>
<option value="A-">A-</option>
<option value="B+">B+</option>
<option value="B-">B-</option>
<option value="AB+">AB+</option>
<option value="AB-">AB-</option>
<option value="O+">O+</option>
<option value="O-">O-</option>
</select>
</div>
<div class="mb-3">
<label class="form-label">Which organs would you like to donate?</label>
<div class="form-check">
<input class="form-check-input" type="checkbox" value="Heart" id="organ_heart" name="organs[]">
<label class="form-check-label" for="organ_heart">Heart</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" value="Lungs" id="organ_lungs" name="organs[]">
<label class="form-check-label" for="organ_lungs">Lungs</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" value="Kidneys" id="organ_kidneys" name="organs[]">
<label class="form-check-label" for="organ_kidneys">Kidneys</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" value="Liver" id="organ_liver" name="organs[]">
<label class="form-check-label" for="organ_liver">Liver</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" value="Pancreas" id="organ_pancreas" name="organs[]">
<label class="form-check-label" for="organ_pancreas">Pancreas</label>
</div>
</div>
<div class="d-grid">
<button type="submit" class="btn btn-primary btn-lg">Register Now</button>
</div>
</div>
</div>
</form>
<?php endif; ?>
</div>
</div>
</div>
<footer class="footer text-center">
<div class="container">
<p class="mb-0">&copy; <?php echo date("Y"); ?> Organ Donation Management System. All Rights Reserved.</p>
</div>
</footer>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
<script src="assets/js/main.js?v=<?php echo time(); ?>"></script>
</body>
</html>