[ad_1]
J’essaie de récupérer des informations de la base de données sur tous les examens passés par les étudiants et d’exporter les données au format CSV, mais j’obtiens cette erreur,
<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Notice: Trying to get property 'num_rows' of non-object in C:\wamp64\www\online-exam-portal\code\manage-exam\_export-to-csv.php on line 85</th></tr>
voici le code que j’ai écrit, export-to-csv.php pour récupérer les données,
1 <?php 2 require_once '../connect.php'; 3 require_once '../session.php'; 4 5 ini_set('display_errors', 1); 6 ini_set('display_startup_errors', 1); 7 error_reporting(E_ALL); 8 9 // Check if the user is logged in 10 //(!isset($_SESSION['user_id'])) { 11 //Redirect or handle unauthorized access 12 //header('Location: ../session.php') 13 //exit(); 14 //} 15 16 // Set the content-type to CSV and specify the filename for download 17 header("Content-type: application/csv"); 18 header("Content-Disposition: attachment; filename=user_responses.csv"); 19 header("Pragma: no-cache"); 20 header("Expires: 0"); 21 22 // Get the user ID from the session 23 $userID = $_SESSION['userID']; 24 $examID = $_POST['examID']; 25 26 //echo "<pre>" . $userID . "<pre/>"; 27 //exit(); 28 29 // Fetch user responses to questions 30 $sql = "SELECT 31 'Multi-choice' AS exam_type, 32 mcq.question AS question_text, 33 mcq.correct_answer AS correct_answer, 34 mcqr.response AS chosen_option, 35 mcqr.score AS marks 36 FROM 37 multi_choice_question mcq 38 INNER JOIN multi_choice_response mcqr ON mcq.exam_id = mcqr.exam_id 39 AND mcq.question_no = mcqr.question_no 40 WHERE 41 mcqr.assignee_id = '$userID' 42 AND mcq.exam_id = $examID 43 44 UNION 45 46 SELECT 47 'Fill in the blank' AS exam_type, 48 fiq.question AS question_text, 49 fir.response AS chosen_option, 50 fir.score AS marks 51 FROM 52 fill_in_question fiq 53 INNER JOIN fill_in_response fir ON fiq.exam_id = fir.exam_id 54 AND fiq.question_no = fir.question_no 55 WHERE 56 fir.assignee_id = '$userID' 57 AND fiq.exam_id = $examID 58 59 UNION 60 61 SELECT 62 'Theory' AS exam_type, 63 tq.question AS question_text, 64 tr.response AS chosen_option, 65 tr.score AS marks 66 FROM 67 theory_question tq 68 INNER JOIN theory_response tr ON tq.exam_id = tr.exam_id 69 AND tq.question_no = tr.question_no 70 WHERE 71 tr.assignee_id = '$userID' 72 AND tq.exam_id = $examID"; 73 74 $result = mysqli_query($conn, $sql); 75 //echo "<pre>" . $result . "<pre/>"; 76 //exit(); 77 78 // Create the output file (without saving it) 79 80 $dataFile = fopen('php://output', 'w'); 81 82 83 84 85 if ($result->num_rows > 0) { 86 87 //if ($result) { 88 // if ($result ->num_rows > 0) { 89 90 91 // Get the total possible mark 92 $markResult = $conn->query("SELECT total_mark FROM exam WHERE exam_id = $examID"); 93 $totalMark = $markResult->fetch_assoc()['total_mark']; 94 95 // Output the data 96 while ($row = $result->fetch_assoc()) { 97 fputcsv($dataFile, $row); 98 // } 99 } 100 101 // Output the header 102 fputcsv($dataFile, array("QUESTION TYPE", "QUESTION", "CORRECT ANSWER", "CHOSEN OPTION", "SCORE(out of $totalMarks)")); 103 104 } 105 else { 106 echo "0 results"; 107 } 108 109 // Close the file handle 110 fclose($dataFile); 111 112 // Close the database connection 113 mysqli_close($conn); 114 ?>
Ce que j’ai essayé :
essayer d’obtenir la propriété ‘num_rows’ du non-objet dans C:\wamp64
Solution 1
Le problème est que $result
ne contient rien. Il est fort probable que l’appel SQL à la ligne 74 ait échoué, mais vous avez oublié de le vérifier.
Solution 2
Votre erreur se produit très probablement parce que l’exécution de votre requête ‘mysqli_query($conn, $sql)’ échoue et, par conséquent, ‘$result’ n’est pas un objet avec votre propriété ‘num_rows’. Vous devez vérifier si l’exécution de votre requête réussit, ajouter une gestion des erreurs pour vérifier ce qui ne va pas. Assurez-vous que votre objet ‘$conn’ est valide et connecté à la base de données –
$result = mysqli_query($conn, $sql); if (!$result) { die('Error : ' . mysqli_error($conn)); }
Solution 3
Merci à tous pour vos réponses rapides, mais je pense que j’aurais dû clarifier ma question dès le début. eh bien, je vais partager le dump DB et le code que j’avais créé pour récupérer les informations. ce que j’essaie de faire, c’est d’obtenir toutes les informations sur l’examen. J’ai besoin du numéro de la question, de la question, des options de réponse, de la réponse de l’étudiant, du nom et de l’identifiant de l’étudiant et je l’exporte au format Csv ou Pdf si possible. Voici le vidage de la base de données ;
-- phpMyAdmin SQL Dump -- version 4.9.1 -- https://www.phpmyadmin.net/ -- -- Host: 127.0.0.1 -- Generation Time: Jan 22, 2023 at 05:22 PM -- Server version: 10.4.8-MariaDB -- PHP Version: 7.3.11 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET AUTOCOMMIT = 0; START TRANSACTION; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8mb4 */; -- -- Database: `exam_portal` -- -- -------------------------------------------------------- -- -- Table structure for table `assignment_status` -- CREATE TABLE `assignment_status` ( `status_id` int(11) NOT NULL, `value` varchar(45) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -- Dumping data for table `assignment_status` -- INSERT INTO `assignment_status` (`status_id`, `value`) VALUES (1, 'Awaiting approval'), (2, 'Declined'), (6, 'Graded'), (4, 'In progress'), (3, 'Ready'), (5, 'Turned in'); -- -------------------------------------------------------- -- -- Table structure for table `course` -- CREATE TABLE `course` ( `course_code` varchar(8) NOT NULL, `course_name` varchar(256) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -- Dumping data for table `course` -- INSERT INTO `course` (`course_code`, `course_name`) VALUES ('CSC307', 'Computer Architecture and Organization'), ('GST301', 'Entrepreneurial Studies II'), ('CSC334', 'Numerical Analysis'), ('CSC303', 'Object Oriented Programming'), ('CSC305', 'Operating Systems II'), ('CSC309', 'Sytem Analysis and Design'), ('CSC313', 'Web Programming'); -- -------------------------------------------------------- -- -- Table structure for table `exam` -- CREATE TABLE `exam` ( `exam_id` int(11) NOT NULL, `instructor_id` varchar(16) NOT NULL, `course_code` varchar(8) NOT NULL, `title` varchar(45) NOT NULL, `type_id` int(11) NOT NULL, `no_of_questions` int(11) NOT NULL, `status_id` int(11) NOT NULL DEFAULT 1, `invite_prefix` varchar(5) NOT NULL, `total_mark` float NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -- Dumping data for table `exam` -- INSERT INTO `exam` (`exam_id`, `instructor_id`, `course_code`, `title`, `type_id`, `no_of_questions`, `status_id`, `invite_prefix`, `total_mark`) VALUES (32, '171103026', 'CSC313', 'Quiz', 2, 1, 2, 'zmB1s', 150), (34, '171103018', 'CSC313', 'Quiz II', 1, 1, 1, 'EnXAS', 0), -- -------------------------------------------------------- -- -- Table structure for table `exam_assignment` -- CREATE TABLE `exam_assignment` ( `exam_id` int(11) NOT NULL, `assignee_id` varchar(16) NOT NULL, `total_score` float DEFAULT NULL, `status_id` int(11) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -- Dumping data for table `exam_assignment` -- INSERT INTO `exam_assignment` (`exam_id`, `assignee_id`, `total_score`, `status_id`) VALUES (32, '171103007', NULL, 5), (32, '171103010', 100, 6), (32, '171103018', 98, 2), -- -------------------------------------------------------- -- -- Table structure for table `exam_status` -- CREATE TABLE `exam_status` ( `status_id` int(11) NOT NULL, `value` varchar(45) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -- Dumping data for table `exam_status` -- INSERT INTO `exam_status` (`status_id`, `value`) VALUES (2, 'Closed'), (1, 'Open'); -- -------------------------------------------------------- -- -- Table structure for table `exam_type` -- CREATE TABLE `exam_type` ( `type_id` int(11) NOT NULL, `value` varchar(45) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -- Dumping data for table `exam_type` -- INSERT INTO `exam_type` (`type_id`, `value`) VALUES (2, 'Fill in the blank'), (1, 'Multi-choice'), (3, 'Theory'); -- -------------------------------------------------------- -- -- Table structure for table `fill_in_question` -- CREATE TABLE `fill_in_question` ( `exam_id` int(11) NOT NULL, `question_no` int(11) NOT NULL, `question` varchar(256) NOT NULL, `mark` float NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -- Dumping data for table `fill_in_question` -- INSERT INTO `fill_in_question` (`exam_id`, `question_no`, `question`, `mark`) VALUES (32, 1, 'PHP stands for ___', 15), (36, 1, 'What\'s SSTF? ___', 100), -- -------------------------------------------------------- -- -- Table structure for table `fill_in_response` -- CREATE TABLE `fill_in_response` ( `exam_id` int(11) NOT NULL, `question_no` int(11) NOT NULL, `assignee_id` varchar(16) NOT NULL, `response` varchar(45) DEFAULT NULL, `score` float DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -- Dumping data for table `fill_in_response` -- INSERT INTO `fill_in_response` (`exam_id`, `question_no`, `assignee_id`, `response`, `score`) VALUES (32, 1, '171103018', 'Personal Home Page', 7.5), (41, 1, '171103018', 'false', NULL), -- -------------------------------------------------------- -- -- Table structure for table `level` -- CREATE TABLE `level` ( `level_id` int(11) NOT NULL, `value` varchar(45) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -- Dumping data for table `level` -- INSERT INTO `level` (`level_id`, `value`) VALUES (1, '100'), (2, '200'), (3, '300'), (4, '400'), (5, '500'); -- -------------------------------------------------------- -- -- Table structure for table `multi_choice_question` -- CREATE TABLE `multi_choice_question` ( `exam_id` int(11) NOT NULL, `question_no` int(11) NOT NULL, `question` varchar(256) NOT NULL, `correct_answer` varchar(1) NOT NULL, `a` varchar(256) NOT NULL, `b` varchar(256) NOT NULL, `c` varchar(256) NOT NULL, `d` varchar(256) NOT NULL, `mark` float NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -- Dumping data for table `multi_choice_question` -- INSERT INTO `multi_choice_question` (`exam_id`, `question_no`, `question`, `correct_answer`, `a`, `b`, `c`, `d`, `mark`) VALUES (34, 1, 'What\'s HTML?', 'B', 'Hypertext\'s markdown language', 'Hypertext markup language', 'Hyperthreaded machine link', 'Hyperthreaded motor link', 10), (38, 3, 'What was the last thing we did in class?', 'A', 'Presentation', 'Revision', 'Normal class', 'Lab class', 35), -- -------------------------------------------------------- -- -- Table structure for table `multi_choice_response` -- CREATE TABLE `multi_choice_response` ( `exam_id` int(11) NOT NULL, `question_no` int(11) NOT NULL, `assignee_id` varchar(16) NOT NULL, `response` varchar(1) DEFAULT NULL, `score` float DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -- Dumping data for table `multi_choice_response` -- INSERT INTO `multi_choice_response` (`exam_id`, `question_no`, `assignee_id`, `response`, `score`) VALUES (39, 1, '171103026', 'a', 20), (39, 2, '171103026', 'c', 0), -- -------------------------------------------------------- -- -- Table structure for table `notification` -- CREATE TABLE `notification` ( `notification_id` int(10) UNSIGNED NOT NULL, `recipient_id` varchar(16) NOT NULL, `status_id` int(11) UNSIGNED NOT NULL DEFAULT 1, `type_id` int(11) UNSIGNED NOT NULL, `sender_id` varchar(16) NOT NULL, `exam_id` int(11) NOT NULL, `time_stamp` timestamp NOT NULL DEFAULT current_timestamp() ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -- Dumping data for table `notification` -- INSERT INTO `notification` (`notification_id`, `recipient_id`, `status_id`, `type_id`, `sender_id`, `exam_id`, `time_stamp`) VALUES (19, '171103018', 2, 2, '171103026', 47, '2020-01-05 00:39:59'), (20, '171103018', 2, 3, '171103026', 41, '2020-01-05 00:48:14'), -- -------------------------------------------------------- -- -- Table structure for table `notification_status` -- CREATE TABLE `notification_status` ( `status_id` int(10) UNSIGNED NOT NULL, `value` varchar(45) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -- Dumping data for table `notification_status` -- INSERT INTO `notification_status` (`status_id`, `value`) VALUES (1, 'Unviewed'), (2, 'Viewed'); -- -------------------------------------------------------- -- -- Table structure for table `notification_type` -- CREATE TABLE `notification_type` ( `type_id` int(10) UNSIGNED NOT NULL, `value` varchar(45) NOT NULL, `msg_template` varchar(64) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -- Dumping data for table `notification_type` -- INSERT INTO `notification_type` (`type_id`, `value`, `msg_template`) VALUES (1, 'Invite', '[User] has invited you to take [Exam]'), (2, 'Accepted invite', '[User] has accepted your invite to take [Exam]'), (3, 'Declined invite', '[User] has declined your invite to take [Exam]'), (4, 'Joined by code', '[User] has joined [Exam] by invite code'), (5, 'Started exam', '[User] has started [Exam]'), (6, 'Completed exam', '[User] has completed [Exam]'), (7, 'Graded exam', '[User] has graded [Exam]'), (8, 'Closed exam', '[User] has closed [Exam]'); -- -------------------------------------------------------- -- -- Table structure for table `theory_question` -- CREATE TABLE `theory_question` ( `exam_id` int(11) NOT NULL, `question_no` int(11) NOT NULL, `question` varchar(256) NOT NULL, `mark` float NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -- Dumping data for table `theory_question` -- INSERT INTO `theory_question` (`exam_id`, `question_no`, `question`, `mark`) VALUES (40, 1, 'What is your name?', 20), (40, 2, 'What is my surname?', 30), (47, 1, 'What is numerical analysis?', 50), (55, 1, 'What is structure?', 15), (55, 2, 'What is function?', 15); -- -------------------------------------------------------- -- -- Table structure for table `theory_response` -- CREATE TABLE `theory_response` ( `exam_id` int(11) NOT NULL, `question_no` int(11) NOT NULL, `assignee_id` varchar(16) NOT NULL, `response` varchar(256) DEFAULT NULL, `score` float DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -- Dumping data for table `theory_response` -- INSERT INTO `theory_response` (`exam_id`, `question_no`, `assignee_id`, `response`, `score`) VALUES (47, 1, '171103026', 'A mathematical course', 7), (55, 1, '171103018', 'organization and interconnection of pc components', 10), (55, 1, 'mubaraqwahab', 'Struct', 0), (55, 2, '171103018', 'what the components do as part of structure', 12), (55, 2, 'mubaraqwahab', 'A user defined function', 0); -- -------------------------------------------------------- -- -- Table structure for table `user` -- CREATE TABLE `user` ( `user_id` varchar(16) NOT NULL, `first_name` varchar(45) NOT NULL, `last_name` varchar(45) NOT NULL, `email` varchar(45) NOT NULL, `password` varchar(45) NOT NULL, `level_id` int(11) DEFAULT NULL, `profile_picture` varchar(45) DEFAULT NULL, `recovery_key` varchar(8) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -- Dumping data for table `user` -- INSERT INTO `user` (`user_id`, `first_name`, `last_name`, `email`, `password`, `level_id`, `profile_picture`, `recovery_key`) VALUES ('171103007', 'Isa', 'Elleman', 'isaelleman@gmail.com', 'IsahE123', 3, NULL, NULL), ('171103010', 'Isiaq', 'Ibrahim', 'isiaq@yahoo.com', 'qwerty123', 3, NULL, NULL), ('171103018', 'Mustapha', 'Ibrahim', 'mikabu38@gmail.com', 'f4b37afc59e0792a3ea73192c96eb554', 3, '6bb000002217edf20324947d1d8eb5b1.jpg', NULL), -- -- Indexes for dumped tables -- -- -- Indexes for table `assignment_status` -- ALTER TABLE `assignment_status` ADD PRIMARY KEY (`status_id`), ADD UNIQUE KEY `assignment_status_value_UNIQUE` (`value`); -- -- Indexes for table `course` -- ALTER TABLE `course` ADD PRIMARY KEY (`course_code`), ADD UNIQUE KEY `course_name_UNIQUE` (`course_name`); -- -- Indexes for table `exam` -- ALTER TABLE `exam` ADD PRIMARY KEY (`exam_id`), ADD KEY `exam_course_code_idx` (`course_code`), ADD KEY `exam_type_id_idx` (`type_id`), ADD KEY `exam_instructor_id_idx` (`instructor_id`), ADD KEY `exam_status_id` (`status_id`); -- -- Indexes for table `exam_assignment` -- ALTER TABLE `exam_assignment` ADD PRIMARY KEY (`exam_id`,`assignee_id`), ADD KEY `assignment_assignee_id_idx` (`assignee_id`), ADD KEY `assignment_status_id_idx` (`status_id`); -- -- Indexes for table `exam_status` -- ALTER TABLE `exam_status` ADD PRIMARY KEY (`status_id`), ADD UNIQUE KEY `exam_status_value_UNIQUE` (`value`); -- -- Indexes for table `exam_type` -- ALTER TABLE `exam_type` ADD PRIMARY KEY (`type_id`), ADD UNIQUE KEY `exam_type_value_UNIQUE` (`value`); -- -- Indexes for table `fill_in_question` -- ALTER TABLE `fill_in_question` ADD PRIMARY KEY (`exam_id`,`question_no`); -- -- Indexes for table `fill_in_response` -- ALTER TABLE `fill_in_response` ADD PRIMARY KEY (`exam_id`,`question_no`,`assignee_id`), ADD KEY `fill_in_response_assignee_id_idx` (`assignee_id`); -- -- Indexes for table `level` -- ALTER TABLE `level` ADD PRIMARY KEY (`level_id`), ADD UNIQUE KEY `level_value_UNIQUE` (`value`); -- -- Indexes for table `multi_choice_question` -- ALTER TABLE `multi_choice_question` ADD PRIMARY KEY (`exam_id`,`question_no`); -- -- Indexes for table `multi_choice_response` -- ALTER TABLE `multi_choice_response` ADD PRIMARY KEY (`exam_id`,`question_no`,`assignee_id`), ADD KEY `multi_choice_response_assignee_id_idx` (`assignee_id`); -- -- Indexes for table `notification` -- ALTER TABLE `notification` ADD PRIMARY KEY (`notification_id`), ADD KEY `notification_status_id` (`status_id`), ADD KEY `notification_sender_id` (`sender_id`), ADD KEY `notification_type_id` (`type_id`), ADD KEY `notification_recipient_id` (`recipient_id`), ADD KEY `exam_id` (`exam_id`); -- -- Indexes for table `notification_status` -- ALTER TABLE `notification_status` ADD PRIMARY KEY (`status_id`); -- -- Indexes for table `notification_type` -- ALTER TABLE `notification_type` ADD PRIMARY KEY (`type_id`), ADD UNIQUE KEY `msg_template_UNIQUE` (`msg_template`); -- -- Indexes for table `theory_question` -- ALTER TABLE `theory_question` ADD PRIMARY KEY (`exam_id`,`question_no`); -- -- Indexes for table `theory_response` -- ALTER TABLE `theory_response` ADD PRIMARY KEY (`exam_id`,`question_no`,`assignee_id`), ADD KEY `theory_response_assignee_id_idx` (`assignee_id`); -- -- Indexes for table `user` -- ALTER TABLE `user` ADD PRIMARY KEY (`user_id`), ADD UNIQUE KEY `email_UNIQUE` (`email`) USING BTREE, ADD KEY `user_level_id_idx` (`level_id`); -- -- AUTO_INCREMENT for dumped tables -- -- -- AUTO_INCREMENT for table `assignment_status` -- ALTER TABLE `assignment_status` MODIFY `status_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7; -- -- AUTO_INCREMENT for table `exam` -- ALTER TABLE `exam` MODIFY `exam_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=56; -- -- AUTO_INCREMENT for table `exam_status` -- ALTER TABLE `exam_status` MODIFY `status_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3; -- -- AUTO_INCREMENT for table `exam_type` -- ALTER TABLE `exam_type` MODIFY `type_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4; -- -- AUTO_INCREMENT for table `level` -- ALTER TABLE `level` MODIFY `level_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6; -- -- AUTO_INCREMENT for table `notification` -- ALTER TABLE `notification` MODIFY `notification_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=103; -- -- AUTO_INCREMENT for table `notification_status` -- ALTER TABLE `notification_status` MODIFY `status_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4; -- -- AUTO_INCREMENT for table `notification_type` -- ALTER TABLE `notification_type` MODIFY `type_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=9; -- -- Constraints for dumped tables -- -- -- Constraints for table `exam` -- ALTER TABLE `exam` ADD CONSTRAINT `exam_course_code` FOREIGN KEY (`course_code`) REFERENCES `course` (`course_code`) ON DELETE CASCADE ON UPDATE CASCADE, ADD CONSTRAINT `exam_instructor_id` FOREIGN KEY (`instructor_id`) REFERENCES `user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE, ADD CONSTRAINT `exam_status_id` FOREIGN KEY (`status_id`) REFERENCES `exam_status` (`status_id`) ON DELETE CASCADE ON UPDATE CASCADE, ADD CONSTRAINT `exam_type_id` FOREIGN KEY (`type_id`) REFERENCES `exam_type` (`type_id`) ON DELETE CASCADE ON UPDATE CASCADE; -- -- Constraints for table `exam_assignment` -- ALTER TABLE `exam_assignment` ADD CONSTRAINT `assignment_assignee_id` FOREIGN KEY (`assignee_id`) REFERENCES `user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE, ADD CONSTRAINT `assignment_exam_id` FOREIGN KEY (`exam_id`) REFERENCES `exam` (`exam_id`) ON DELETE CASCADE ON UPDATE CASCADE, ADD CONSTRAINT `assignment_status_id` FOREIGN KEY (`status_id`) REFERENCES `assignment_status` (`status_id`) ON UPDATE CASCADE; -- -- Constraints for table `fill_in_question` -- ALTER TABLE `fill_in_question` ADD CONSTRAINT `fill_in_question_exam_id` FOREIGN KEY (`exam_id`) REFERENCES `exam` (`exam_id`) ON DELETE CASCADE ON UPDATE CASCADE; -- -- Constraints for table `fill_in_response` -- ALTER TABLE `fill_in_response` ADD CONSTRAINT `fill_in_response_assignee_id` FOREIGN KEY (`assignee_id`) REFERENCES `user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE, ADD CONSTRAINT `fill_in_response_id` FOREIGN KEY (`exam_id`,`question_no`) REFERENCES `fill_in_question` (`exam_id`, `question_no`) ON DELETE CASCADE; -- -- Constraints for table `multi_choice_question` -- ALTER TABLE `multi_choice_question` ADD CONSTRAINT `multi_choice_question_exam_id` FOREIGN KEY (`exam_id`) REFERENCES `exam` (`exam_id`) ON DELETE CASCADE ON UPDATE CASCADE; -- -- Constraints for table `multi_choice_response` -- ALTER TABLE `multi_choice_response` ADD CONSTRAINT `multi_choice_response_assignee_id` FOREIGN KEY (`assignee_id`) REFERENCES `user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE, ADD CONSTRAINT `multi_choice_response_id` FOREIGN KEY (`exam_id`,`question_no`) REFERENCES `multi_choice_question` (`exam_id`, `question_no`) ON DELETE CASCADE; -- -- Constraints for table `notification` -- ALTER TABLE `notification` ADD CONSTRAINT `notification_ibfk_1` FOREIGN KEY (`exam_id`) REFERENCES `exam` (`exam_id`) ON DELETE CASCADE ON UPDATE CASCADE, ADD CONSTRAINT `notification_recipient_id` FOREIGN KEY (`recipient_id`) REFERENCES `user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE, ADD CONSTRAINT `notification_sender_id` FOREIGN KEY (`sender_id`) REFERENCES `user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE, ADD CONSTRAINT `notification_status_id` FOREIGN KEY (`status_id`) REFERENCES `notification_status` (`status_id`), ADD CONSTRAINT `notification_type_id` FOREIGN KEY (`type_id`) REFERENCES `notification_type` (`type_id`) ON DELETE CASCADE ON UPDATE CASCADE; -- -- Constraints for table `theory_question` -- ALTER TABLE `theory_question` ADD CONSTRAINT `theory_question_exam_id` FOREIGN KEY (`exam_id`) REFERENCES `exam` (`exam_id`) ON DELETE CASCADE ON UPDATE CASCADE; -- -- Constraints for table `theory_response` -- ALTER TABLE `theory_response` ADD CONSTRAINT `theory_response_assignee_id` FOREIGN KEY (`assignee_id`) REFERENCES `user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE, ADD CONSTRAINT `theory_response_id` FOREIGN KEY (`exam_id`,`question_no`) REFERENCES `theory_question` (`exam_id`, `question_no`) ON DELETE CASCADE; -- -- Constraints for table `user` -- ALTER TABLE `user` ADD CONSTRAINT `user_level_id` FOREIGN KEY (`level_id`) REFERENCES `level` (`level_id`) ON DELETE CASCADE ON UPDATE SET NULL; COMMIT; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; and this is my code; <pre><!--?php require_once '../connect.php'; require_once '../session.php'; ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL); // Check if the user is logged in //(!isset($_SESSION['user_id'])) { //Redirect or handle unauthorized access // header('Location: ../session.php') //exit(); //} // Set the content-type to CSV and specify the filename for download header("Content-type: application/csv"); header("Content-Disposition: attachment; filename=user_responses.csv"); header("Pragma: no-cache"); header("Expires: 0"); // Get the user ID from the session $userID = $_SESSION['userID']; $examID = $_POST['examID']; //echo "<pre-->" . $userID . "<pre>"; //exit(); // Fetch user responses to questions $sql = "SELECT 'Multi-choice' AS exam_type, mcq.question AS question_text, mcq.correct_answer AS correct_answer, mcqr.response AS chosen_option, mcqr.score AS marks FROM multi_choice_question mcq INNER JOIN multi_choice_response mcqr ON mcq.exam_id = mcqr.exam_id AND mcq.question_no = mcqr.question_no WHERE mcqr.assignee_id = '$userID' AND mcq.exam_id = $examID UNION SELECT 'Fill in the blank' AS exam_type, fiq.question AS question_text, fir.response AS chosen_option, fir.score AS marks FROM fill_in_question fiq INNER JOIN fill_in_response fir ON fiq.exam_id = fir.exam_id AND fiq.question_no = fir.question_no WHERE fir.assignee_id = '$userID' AND fiq.exam_id = $examID UNION SELECT 'Theory' AS exam_type, tq.question AS question_text, tr.response AS chosen_option, tr.score AS marks FROM theory_question tq INNER JOIN theory_response tr ON tq.exam_id = tr.exam_id AND tq.question_no = tr.question_no WHERE tr.assignee_id = '$userID' AND tq.exam_id = $examID"; $result = mysqli_query($conn, $sql); if (!$result) { echo mysqli_error($conn); exit(); } //echo "<pre>" . $result . "<pre>"; //exit(); // Create the output file (without saving it) $dataFile = fopen('php://output', 'w'); if ($result->num_rows > 0) { //if ($result) { // if ($result ->num_rows > 0) { // Output the header fputcsv($dataFile, array("QUESTION TYPE", "QUESTION", "CORRECT ANSWER", "CHOSEN OPTION", "SCORE(out of $totalMarks)")); } // Get the total possible mark $markResult = $conn->query("SELECT total_mark FROM exam WHERE exam_id = $examID"); $totalMark = $markResult->fetch_assoc()['total_mark']; // Output the data while($row = $result->fetch_assoc()) { fputcsv($dataFile, $row); } else { echo "0 results"; } // Close the file handle fclose($dataFile); // Close the database connection mysqli_close($conn); ?> and this is the error that i am getting; Parse error: syntax error, unexpected 'else' (T_ELSE), expecting end of file in C:\wamp64\www\online-exam-portal\code\manage-exam\_export-to-csv.php on line 109
[ad_2]
コメント