This commit is contained in:
Flatlogic Bot 2025-10-07 16:34:00 +00:00
parent d47e350516
commit a29976994c
10 changed files with 76 additions and 92 deletions

View File

@ -3,5 +3,5 @@ CREATE TABLE IF NOT EXISTS feedback_submissions (
name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
message TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
submitted_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

View File

@ -1,6 +1,6 @@
CREATE TABLE IF NOT EXISTS `surveys` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`title` VARCHAR(255) NOT NULL,
`description` TEXT,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS surveys (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
description TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

View File

@ -1,9 +1,8 @@
CREATE TABLE IF NOT EXISTS `survey_questions` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`survey_id` INT NOT NULL,
`question_text` TEXT NOT NULL,
`question_type` VARCHAR(50) NOT NULL, -- e.g., 'text', 'textarea', 'rating', 'multiple-choice'
`options` TEXT, -- For multiple-choice questions, store options as a JSON array or comma-separated values
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (`survey_id`) REFERENCES `surveys`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS survey_questions (
id INT AUTO_INCREMENT PRIMARY KEY,
survey_id INT NOT NULL,
question_text TEXT NOT NULL,
question_type VARCHAR(50) NOT NULL, -- e.g., 'text', 'multiple-choice', 'rating'
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (survey_id) REFERENCES surveys(id) ON DELETE CASCADE
);

View File

@ -1,9 +1,9 @@
CREATE TABLE IF NOT EXISTS `survey_answers` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`submission_id` INT NOT NULL,
`question_id` INT NOT NULL,
`answer_text` TEXT,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (`submission_id`) REFERENCES `feedback_submissions`(`id`) ON DELETE CASCADE,
FOREIGN KEY (`question_id`) REFERENCES `survey_questions`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS survey_answers (
id INT AUTO_INCREMENT PRIMARY KEY,
submission_id INT NOT NULL,
question_id INT NOT NULL,
answer_text TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (submission_id) REFERENCES feedback_submissions(id) ON DELETE CASCADE,
FOREIGN KEY (question_id) REFERENCES survey_questions(id) ON DELETE CASCADE
);

View File

@ -1,7 +1,7 @@
CREATE TABLE IF NOT EXISTS `users` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`username` VARCHAR(50) NOT NULL UNIQUE,
`email` VARCHAR(100) NOT NULL UNIQUE,
`password` VARCHAR(255) NOT NULL,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(255) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL UNIQUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

View File

@ -1,4 +1,4 @@
CREATE TABLE IF NOT EXISTS `roles` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`role_name` VARCHAR(50) NOT NULL UNIQUE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS roles (
id INT AUTO_INCREMENT PRIMARY KEY,
role_name VARCHAR(50) NOT NULL UNIQUE
);

View File

@ -1,7 +1,7 @@
CREATE TABLE IF NOT EXISTS `user_roles` (
`user_id` INT NOT NULL,
`role_id` INT NOT NULL,
PRIMARY KEY (`user_id`, `role_id`),
FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE,
FOREIGN KEY (`role_id`) REFERENCES `roles`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS user_roles (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
role_id INT NOT NULL,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
FOREIGN KEY (role_id) REFERENCES roles(id) ON DELETE CASCADE
);

View File

@ -1 +1 @@
INSERT INTO `roles` (`role_name`) VALUES ('Admin'), ('Respondent');
INSERT IGNORE INTO `roles` (`role_name`) VALUES ('Admin'), ('Respondent');

View File

@ -1,10 +1,11 @@
<footer class="footer">
<div class="container">
<p>&copy; <?php echo date('Y'); ?> Your Real Feedback. All Rights Reserved.</p>
<p><a href="/privacy.php">Privacy Policy</a></p>
<footer class="footer mt-auto py-3 bg-light">
<div class="container text-center">
<span class="text-muted">&copy; <?= date('Y') ?> Your Real Feedback. All rights reserved. | <a href="privacy.php">Privacy Policy</a></span>
</div>
</footer>
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.5.4/dist/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
<script src="assets/js/main.js?v=<?php echo time(); ?>"></script>
</body>
</html>

View File

@ -1,47 +1,31 @@
<?php
$pageTitle = isset($pageTitle) ? $pageTitle : "Your Real Feedback";
$description = isset($description) ? $description : "Provide your feedback to help us improve.";
$keywords = isset($keywords) ? $keywords : "feedback, survey, customer feedback, product feedback, flatlogic, user survey, feedback app";
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><?php echo htmlspecialchars($pageTitle); ?></title>
<meta name="description" content="<?php echo htmlspecialchars($description); ?>">
<meta name="keywords" content="<?php echo htmlspecialchars($keywords); ?>">
<!-- Open Graph / Facebook -->
<meta property="og:type" content="website">
<meta property="og:title" content="<?php echo htmlspecialchars($pageTitle); ?>">
<meta property="og:description" content="<?php echo htmlspecialchars($description); ?>">
<meta property="og:image" content="<?php echo isset($_SERVER['PROJECT_IMAGE_URL']) ? htmlspecialchars($_SERVER['PROJECT_IMAGE_URL']) : ''; ?>">
<!-- Twitter -->
<meta property="twitter:card" content="summary_large_image">
<meta property="twitter:title" content="<?php echo htmlspecialchars($pageTitle); ?>">
<meta property="twitter:description" content="<?php echo htmlspecialchars($description); ?>">
<meta property="twitter:image" content="<?php echo isset($_SERVER['PROJECT_IMAGE_URL']) ? htmlspecialchars($_SERVER['PROJECT_IMAGE_URL']) : ''; ?>">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
<title><?= isset($pageTitle) ? htmlspecialchars($pageTitle) : 'Your Real Feedback' ?></title>
<meta name="description" content="<?= isset($description) ? htmlspecialchars($description) : 'Provide your valuable feedback to help us improve.' ?>">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
<link rel="stylesheet" href="assets/css/custom.css?v=<?php echo time(); ?>">
</head>
<body>
<header class="header">
<div class="container d-flex justify-content-between align-items-center">
<a href="/" class="logo">Your Real Feedback</a>
<nav>
<?php if (isset($_SESSION['user_id'])): ?>
<?php if (in_array('Admin', $_SESSION['user_roles'])):
<a href="admin.php" class="btn btn-sm btn-outline-secondary">Admin</a>
<?php endif; ?>
<a href="logout.php" class="btn btn-sm btn-outline-secondary">Logout</a>
<?php else: ?>
<a href="login.php" class="btn btn-sm btn-outline-secondary">Login</a>
<a href="register.php" class="btn btn-sm btn-primary">Register</a>
<?php endif; ?>
</nav>
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<div class="container">
<a class="navbar-brand" href="index.php">Your Real Feedback</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav ml-auto">
<li class="nav-item">
<a class="nav-link" href="index.php">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="admin.php">Admin</a>
</li>
</ul>
</div>
</div>
</nav>
</header>