From 170f4005816fb8a6d17cebae5fd902285abbcf30 Mon Sep 17 00:00:00 2001 From: Flatlogic Bot Date: Wed, 15 Oct 2025 18:23:13 +0000 Subject: [PATCH] data visualization for responses page --- assets/pasted-20251015-181829-ed77e158.png | Bin 0 -> 30941 bytes view_responses.php | 201 +++++++++++++++++---- 2 files changed, 165 insertions(+), 36 deletions(-) create mode 100644 assets/pasted-20251015-181829-ed77e158.png diff --git a/assets/pasted-20251015-181829-ed77e158.png b/assets/pasted-20251015-181829-ed77e158.png new file mode 100644 index 0000000000000000000000000000000000000000..335faa990e48dcdbecaed109e7dce2b23452d8df GIT binary patch literal 30941 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 literal 0 HcmV?d00001 diff --git a/view_responses.php b/view_responses.php index c85e422..88b1dfe 100644 --- a/view_responses.php +++ b/view_responses.php @@ -13,7 +13,6 @@ if (!$survey_id) { try { $pdo = db(); - // Fetch survey title $stmt = $pdo->prepare("SELECT title FROM surveys WHERE id = ?"); $stmt->execute([$survey_id]); $survey = $stmt->fetch(PDO::FETCH_ASSOC); @@ -24,24 +23,58 @@ try { exit; } - // Fetch all responses for this survey - $stmt = $pdo->prepare("SELECT * FROM survey_responses WHERE survey_id = ? ORDER BY submitted_at DESC"); + $stmt = $pdo->prepare(" + SELECT q.id AS question_id, q.question_text, q.question_type, sa.answer_text + FROM survey_answers sa + JOIN questions q ON sa.question_id = q.id + WHERE q.survey_id = ? + "); $stmt->execute([$survey_id]); - $responses = $stmt->fetchAll(PDO::FETCH_ASSOC); + $answers = $stmt->fetchAll(PDO::FETCH_ASSOC); - // For each response, fetch the answers - $responses_with_answers = []; - foreach ($responses as $response) { - $answer_stmt = $pdo->prepare(" - SELECT sa.answer_text, q.question_text - FROM survey_answers sa - JOIN questions q ON sa.question_id = q.id - WHERE sa.response_id = ? - "); - $answer_stmt->execute([$response['id']]); - $answers = $answer_stmt->fetchAll(PDO::FETCH_ASSOC); - $response['answers'] = $answers; - $responses_with_answers[] = $response; + $chart_data = []; + $text_answers = []; + + foreach ($answers as $answer) { + $question_id = $answer['question_id']; + $question_text = $answer['question_text']; + $question_type = $answer['question_type']; + $answer_text = $answer['answer_text']; + + if ($question_type === 'multiple-choice' || $question_type === 'checkboxes') { + if (!isset($chart_data[$question_id])) { + $chart_data[$question_id] = [ + 'question_text' => $question_text, + 'answers' => [], + ]; + } + + if ($question_type === 'checkboxes') { + $selected_options = explode(',', $answer_text); + foreach ($selected_options as $option) { + $option = trim($option); + if (!empty($option)) { + if (!isset($chart_data[$question_id]['answers'][$option])) { + $chart_data[$question_id]['answers'][$option] = 0; + } + $chart_data[$question_id]['answers'][$option]++; + } + } + } else { // multiple-choice + if (!isset($chart_data[$question_id]['answers'][$answer_text])) { + $chart_data[$question_id]['answers'][$answer_text] = 0; + } + $chart_data[$question_id]['answers'][$answer_text]++; + } + } else { + if (!isset($text_answers[$question_id])) { + $text_answers[$question_id] = [ + 'question_text' => $question_text, + 'answers' => [], + ]; + } + $text_answers[$question_id]['answers'][] = $answer_text; + } } } catch (PDOException $e) { @@ -57,6 +90,9 @@ try { Responses for <?php echo htmlspecialchars($survey['title']); ?> + + + @@ -81,34 +117,127 @@ try { ← Back to Dashboard - +
No responses have been submitted for this survey yet.
- -
-
- Response submitted on: +
+ $data): ?> +
+
+
+ +
+
+ +
+
-
-
    - -
  • -

    -

    -
  • - - -
  • No answers were provided for this submission.
  • - -
+ +
+ + +
+

Text Answers

+ $data): ?> +
+
+ +
+
+
+
-
- + +
+ +