query($tableCheckQuery)->num_rows > 0; if ($tableExists) { // Get student data structure to find the ID field $columnsQuery = "SHOW COLUMNS FROM students_info"; $columnsResult = $conn->query($columnsQuery); $studentIdField = null; $studentNameFields = []; // Find student ID and name fields while ($column = $columnsResult->fetch_assoc()) { if (preg_match('/(student|stud|roll)[\s_-]?(id|number|no)/i', $column['Field'])) { $studentIdField = $column['Field']; } if (preg_match('/(student|stud)[\s_-]?(name)/i', $column['Field']) || preg_match('/(first|last|full)[\s_-]?(name)/i', $column['Field'])) { $studentNameFields[] = $column['Field']; } } if ($studentIdField) { // Fetch student data $studentQuery = "SELECT * FROM students_info WHERE $studentIdField = ?"; $stmt = $conn->prepare($studentQuery); $stmt->bind_param('s', $studentId); $stmt->execute(); $result = $stmt->get_result(); if ($result && $result->num_rows > 0) { $studentData = $result->fetch_assoc(); // Find project field in student data $projectIdField = null; $domainIdField = null; foreach ($studentData as $field => $value) { if (preg_match('/(project)[\s_-]?(id)/i', $field)) { $projectIdField = $field; } if (preg_match('/(domain)[\s_-]?(id)/i', $field)) { $domainIdField = $field; } } // If specific project field found, get project details if ($projectIdField && !empty($studentData[$projectIdField])) { $projectId = $studentData[$projectIdField]; // If domain field is found, use it to find the right domain table if ($domainIdField && !empty($studentData[$domainIdField])) { $domainId = $studentData[$domainIdField]; // Extract domain number if format is like 'D-1' if (preg_match('/D-(\d+)/', $domainId, $matches)) { $domainNumber = $matches[1]; $domainTable = "domain_" . $domainNumber; // Check if table exists $tableCheckQuery = "SHOW TABLES LIKE '$domainTable'"; if ($conn->query($tableCheckQuery)->num_rows > 0) { // Get project name field for this domain $projectNameField = getProjectNameField($conn, $domainTable); // Fetch project details $projectQuery = "SELECT *, '$domainNumber' as domain_number FROM $domainTable WHERE Project_ID = ?"; $stmt = $conn->prepare($projectQuery); $stmt->bind_param('i', $projectId); $stmt->execute(); $projectResult = $stmt->get_result(); if ($projectResult && $projectResult->num_rows > 0) { $project = $projectResult->fetch_assoc(); $project['project_name_field'] = $projectNameField; $studentProjects[] = $project; } } } } else { // If no domain field, search all domain tables $domainTables = getDomainTables($conn); foreach ($domainTables as $domainTable) { $domainNumber = str_replace('domain_', '', $domainTable); // Get project name field for this domain $projectNameField = getProjectNameField($conn, $domainTable); // Check for project in this domain $projectQuery = "SELECT *, '$domainNumber' as domain_number FROM $domainTable WHERE Project_ID = ?"; $stmt = $conn->prepare($projectQuery); $stmt->bind_param('i', $projectId); $stmt->execute(); $projectResult = $stmt->get_result(); if ($projectResult && $projectResult->num_rows > 0) { $project = $projectResult->fetch_assoc(); $project['project_name_field'] = $projectNameField; $studentProjects[] = $project; break; // Found the project, no need to search other tables } } } } else { // If no specific project field or project ID is empty, // try to find projects by searching for the student ID in all domain tables $domainTables = getDomainTables($conn); foreach ($domainTables as $domainTable) { $domainNumber = str_replace('domain_', '', $domainTable); // Get columns of the domain table $columnsQuery = "SHOW COLUMNS FROM $domainTable"; $columnsResult = $conn->query($columnsQuery); $studentColumns = []; // Find columns that might contain student IDs while ($column = $columnsResult->fetch_assoc()) { if (preg_match('/(student|stud|member)[\s_-]?(id|ids|no|number)/i', $column['Field'])) { $studentColumns[] = $column['Field']; } } // Get project name field for this domain $projectNameField = getProjectNameField($conn, $domainTable); // Check each potential student column foreach ($studentColumns as $studentColumn) { // Try exact match $projectQuery = "SELECT *, '$domainNumber' as domain_number FROM $domainTable WHERE $studentColumn = ?"; $stmt = $conn->prepare($projectQuery); $stmt->bind_param('s', $studentId); $stmt->execute(); $projectResult = $stmt->get_result(); if ($projectResult && $projectResult->num_rows > 0) { while ($project = $projectResult->fetch_assoc()) { $project['project_name_field'] = $projectNameField; $studentProjects[] = $project; } } // Try LIKE match (if the column might contain multiple IDs) $projectQuery = "SELECT *, '$domainNumber' as domain_number FROM $domainTable WHERE $studentColumn LIKE ?"; $likeParam = "%$studentId%"; $stmt = $conn->prepare($projectQuery); $stmt->bind_param('s', $likeParam); $stmt->execute(); $projectResult = $stmt->get_result(); if ($projectResult && $projectResult->num_rows > 0) { while ($project = $projectResult->fetch_assoc()) { // Check if this project is already added $duplicate = false; foreach ($studentProjects as $existingProject) { if ($existingProject['Project_ID'] == $project['Project_ID'] && $existingProject['domain_number'] == $project['domain_number']) { $duplicate = true; break; } } if (!$duplicate) { $project['project_name_field'] = $projectNameField; $studentProjects[] = $project; } } } } } } } else { $error = "Student with ID '$studentId' not found."; } } else { $error = "Could not determine student ID field in the database."; } } else { $error = "Student information table not found in the database."; } // Get domain descriptions for displaying domain names $domainDescriptions = getDomainDescriptions($conn); // Include header include 'includes/header.php'; // Determine student name to display $studentName = "Student"; if ($studentData) { foreach ($studentNameFields as $field) { if (!empty($studentData[$field])) { $studentName = $studentData[$field]; break; } } } ?>
| Project ID | Project Name | Type | Domain | Actions |
|---|---|---|---|---|
| Not specified | Domain : | Details |