Add New Student
🏛️ Punjab State Open School, Hoshiarpur - Student Registration Form
Format: Roll No = Year + Class + 0001 | Reg No = PSOS-Year-Class-00001
query($columns_query);
$existing_columns = [];
while($col = $columns_result->fetch_assoc()) {
$existing_columns[] = $col['Field'];
}
// Fetch classes from database
$classes_query = "SELECT * FROM classes ORDER BY id ASC";
$classes_result = $conn->query($classes_query);
$classes_list = [];
if ($classes_result && $classes_result->num_rows > 0) {
while($class_row = $classes_result->fetch_assoc()) {
$classes_list[] = $class_row;
}
}
$page_title = 'Add New Student';
$page_subtitle = 'Punjab State Open School - Student Registration';
// Generate next roll number automatically
// Format: YEAR + CLASS + 4-digit number (e.g., 2026100001 for Class 10, Year 2026)
function generateRollNumber($conn, $class, $admission_year) {
$prefix = $admission_year . $class; // e.g., 202610
$query = "SELECT roll_no FROM students
WHERE roll_no LIKE '$prefix%'
ORDER BY id DESC LIMIT 1";
$result = $conn->query($query);
if ($result && $result->num_rows > 0) {
$row = $result->fetch_assoc();
$last_num = intval(substr($row['roll_no'], -4));
$new_num = $last_num + 1;
} else {
$new_num = 1;
}
return $prefix . str_pad($new_num, 4, '0', STR_PAD_LEFT);
}
// Generate registration number automatically
// Format: PSOS-YEAR-CLASS-5-digit number (e.g., PSOS-2026-10-00001)
function generateRegistrationNumber($conn, $class, $admission_year) {
$prefix = "PSOS-$admission_year-$class-";
$query = "SELECT reg_no FROM students
WHERE reg_no LIKE '$prefix%'
ORDER BY id DESC LIMIT 1";
$result = $conn->query($query);
if ($result && $result->num_rows > 0) {
$row = $result->fetch_assoc();
$last_num = intval(substr($row['reg_no'], -5));
$new_num = $last_num + 1;
} else {
$new_num = 1;
}
return $prefix . str_pad($new_num, 5, '0', STR_PAD_LEFT);
}
// Handle form submission
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$columns = [];
$values = [];
// Required fields
$student_name = mysqli_real_escape_string($conn, $_POST['student_name']);
$columns[] = "student_name";
$values[] = "'$student_name'";
if (in_array('student_name_pb', $existing_columns) && !empty($_POST['student_name_pb'])) {
$student_name_pb = mysqli_real_escape_string($conn, $_POST['student_name_pb']);
$columns[] = "student_name_pb";
$values[] = "'$student_name_pb'";
}
$father_name = mysqli_real_escape_string($conn, $_POST['father_name']);
$columns[] = "father_name";
$values[] = "'$father_name'";
if (in_array('mother_name', $existing_columns) && !empty($_POST['mother_name'])) {
$mother_name = mysqli_real_escape_string($conn, $_POST['mother_name']);
$columns[] = "mother_name";
$values[] = "'$mother_name'";
}
// Get class from database (class_id se class_name fetch karo)
$class_id = mysqli_real_escape_string($conn, $_POST['class_id']);
// Get class name from classes table
$class_name = '';
$class_query = $conn->query("SELECT class_name FROM classes WHERE id = '$class_id'");
if ($class_row = $class_query->fetch_assoc()) {
$class_name = $class_row['class_name'];
}
$columns[] = "class";
$values[] = "'$class_name'";
// Get admission year from admission date
$admission_date = !empty($_POST['admission_date']) ? $_POST['admission_date'] : date('Y-m-d');
$admission_year = date('Y', strtotime($admission_date));
// Auto-generate roll number: YEAR + CLASS + XXXX
$roll_no = generateRollNumber($conn, $class_name, $admission_year);
$columns[] = "roll_no";
$values[] = "'$roll_no'";
// Auto-generate registration number: PSOS-YEAR-CLASS-XXXXX
if (in_array('reg_no', $existing_columns)) {
$reg_no = generateRegistrationNumber($conn, $class_name, $admission_year);
$columns[] = "reg_no";
$values[] = "'$reg_no'";
}
if (in_array('dob', $existing_columns) && !empty($_POST['dob'])) {
$dob = mysqli_real_escape_string($conn, $_POST['dob']);
$columns[] = "dob";
$values[] = "'$dob'";
}
if (in_array('gender', $existing_columns) && !empty($_POST['gender'])) {
$gender = mysqli_real_escape_string($conn, $_POST['gender']);
$columns[] = "gender";
$values[] = "'$gender'";
}
if (in_array('category', $existing_columns) && !empty($_POST['category'])) {
$category = mysqli_real_escape_string($conn, $_POST['category']);
$columns[] = "category";
$values[] = "'$category'";
}
if (in_array('mobile', $existing_columns) && !empty($_POST['mobile'])) {
$mobile = mysqli_real_escape_string($conn, $_POST['mobile']);
$columns[] = "mobile";
$values[] = "'$mobile'";
}
if (in_array('email', $existing_columns) && !empty($_POST['email'])) {
$email = mysqli_real_escape_string($conn, $_POST['email']);
$columns[] = "email";
$values[] = "'$email'";
}
if (in_array('address', $existing_columns) && !empty($_POST['address'])) {
$address = mysqli_real_escape_string($conn, $_POST['address']);
$columns[] = "address";
$values[] = "'$address'";
}
if (in_array('city', $existing_columns) && !empty($_POST['city'])) {
$city = mysqli_real_escape_string($conn, $_POST['city']);
$columns[] = "city";
$values[] = "'$city'";
}
if (in_array('district', $existing_columns) && !empty($_POST['district'])) {
$district = mysqli_real_escape_string($conn, $_POST['district']);
$columns[] = "district";
$values[] = "'$district'";
}
if (in_array('state', $existing_columns) && !empty($_POST['state'])) {
$state = mysqli_real_escape_string($conn, $_POST['state']);
$columns[] = "state";
$values[] = "'$state'";
}
if (in_array('pincode', $existing_columns) && !empty($_POST['pincode'])) {
$pincode = mysqli_real_escape_string($conn, $_POST['pincode']);
$columns[] = "pincode";
$values[] = "'$pincode'";
}
if (in_array('admission_date', $existing_columns)) {
$columns[] = "admission_date";
$values[] = "'$admission_date'";
}
if (in_array('session', $existing_columns) && !empty($_POST['session'])) {
$session = mysqli_real_escape_string($conn, $_POST['session']);
$columns[] = "session";
$values[] = "'$session'";
}
if (in_array('medium', $existing_columns) && !empty($_POST['medium'])) {
$medium = mysqli_real_escape_string($conn, $_POST['medium']);
$columns[] = "medium";
$values[] = "'$medium'";
}
if (in_array('aadhar_no', $existing_columns) && !empty($_POST['aadhar_no'])) {
$aadhar_no = mysqli_real_escape_string($conn, $_POST['aadhar_no']);
$columns[] = "aadhar_no";
$values[] = "'$aadhar_no'";
}
// Handle photo upload
if (in_array('photo', $existing_columns) && isset($_FILES['photo']) && $_FILES['photo']['error'] == 0) {
$upload_dir = 'uploads/students/';
if (!is_dir($upload_dir)) {
mkdir($upload_dir, 0777, true);
}
$file_ext = pathinfo($_FILES['photo']['name'], PATHINFO_EXTENSION);
$photo_path = $upload_dir . 'STU_' . time() . '_' . $roll_no . '.' . $file_ext;
if (move_uploaded_file($_FILES['photo']['tmp_name'], $photo_path)) {
$columns[] = "photo";
$values[] = "'$photo_path'";
}
}
// Build and execute insert query
$insert_query = "INSERT INTO students (" . implode(', ', $columns) . ") VALUES (" . implode(', ', $values) . ")";
if ($conn->query($insert_query)) {
$student_id = $conn->insert_id;
$reg_no_param = isset($reg_no) ? "®=$reg_no" : "";
header("Location: students-list.php?msg=added&roll=$roll_no$reg_no_param");
exit();
} else {
$error_message = "Database Error: " . $conn->error . "
Query: " . $insert_query;
}
}
include 'includes/header.php';
include 'includes/sidebar.php';
?>
🏛️ Punjab State Open School, Hoshiarpur - Student Registration Form