query("SELECT s.id as submission_id, s.name as submitter_name, s.email as submitter_email, s.created_at as submission_date, sv.title as survey_title, q.question_text, a.answer_text FROM feedback_submissions s JOIN surveys sv ON s.survey_id = sv.id LEFT JOIN survey_answers a ON s.id = a.submission_id LEFT JOIN survey_questions q ON a.question_id = q.id ORDER BY s.created_at DESC, q.created_at ASC"); $results = $stmt->fetchAll(PDO::FETCH_ASSOC); // Set headers for CSV download header('Content-Type: text/csv; charset=utf-8'); header('Content-Disposition: attachment; filename=feedback_submissions_' . date('Y-m-d') . '.csv'); $output = fopen('php://output', 'w'); // Get all unique questions in order $questions_stmt = db()->query("SELECT DISTINCT question_text FROM survey_questions ORDER BY created_at ASC"); $question_headers = $questions_stmt->fetchAll(PDO::FETCH_COLUMN); // Output the column headings $headers = array_merge(['Submission ID', 'Submitter', 'Email', 'Date', 'Survey'], $question_headers); fputcsv($output, $headers); // Process the results $submissions = []; foreach ($results as $row) { $submissions[$row['submission_id']]['details'] = [ 'submission_id' => $row['submission_id'], 'submitter_name' => $row['submitter_name'], 'submitter_email' => $row['submitter_email'], 'submission_date' => $row['submission_date'], 'survey_title' => $row['survey_title'] ]; $submissions[$row['submission_id']]['answers'][$row['question_text']] = $row['answer_text']; } // Write rows to CSV foreach ($submissions as $submission_id => $data) { $row = $data['details']; foreach ($question_headers as $question) { $row[] = $data['answers'][$question] ?? ''; } fputcsv($output, $row); } fclose($output); exit; ?>