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, name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL, email VARCHAR(255) NOT NULL,
message TEXT 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` ( CREATE TABLE IF NOT EXISTS surveys (
`id` INT AUTO_INCREMENT PRIMARY KEY, id INT AUTO_INCREMENT PRIMARY KEY,
`title` VARCHAR(255) NOT NULL, title VARCHAR(255) NOT NULL,
`description` TEXT, description TEXT,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; );

View File

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

View File

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

View File

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

View File

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

View File

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

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"> <footer class="footer mt-auto py-3 bg-light">
<div class="container"> <div class="container text-center">
<p>&copy; <?php echo date('Y'); ?> Your Real Feedback. All Rights Reserved.</p> <span class="text-muted">&copy; <?= date('Y') ?> Your Real Feedback. All rights reserved. | <a href="privacy.php">Privacy Policy</a></span>
<p><a href="/privacy.php">Privacy Policy</a></p>
</div> </div>
</footer> </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> <script src="assets/js/main.js?v=<?php echo time(); ?>"></script>
</body> </body>
</html> </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> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><?php echo htmlspecialchars($pageTitle); ?></title> <title><?= isset($pageTitle) ? htmlspecialchars($pageTitle) : 'Your Real Feedback' ?></title>
<meta name="description" content="<?php echo htmlspecialchars($description); ?>"> <meta name="description" content="<?= isset($description) ? htmlspecialchars($description) : 'Provide your valuable feedback to help us improve.' ?>">
<meta name="keywords" content="<?php echo htmlspecialchars($keywords); ?>"> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
<!-- 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">
<link rel="stylesheet" href="assets/css/custom.css?v=<?php echo time(); ?>"> <link rel="stylesheet" href="assets/css/custom.css?v=<?php echo time(); ?>">
</head> </head>
<body> <body>
<header class="header"> <header class="header">
<div class="container d-flex justify-content-between align-items-center"> <nav class="navbar navbar-expand-lg navbar-light bg-light">
<a href="/" class="logo">Your Real Feedback</a> <div class="container">
<nav> <a class="navbar-brand" href="index.php">Your Real Feedback</a>
<?php if (isset($_SESSION['user_id'])): ?> <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<?php if (in_array('Admin', $_SESSION['user_roles'])): <span class="navbar-toggler-icon"></span>
<a href="admin.php" class="btn btn-sm btn-outline-secondary">Admin</a> </button>
<?php endif; ?> <div class="collapse navbar-collapse" id="navbarNav">
<a href="logout.php" class="btn btn-sm btn-outline-secondary">Logout</a> <ul class="navbar-nav ml-auto">
<?php else: ?> <li class="nav-item">
<a href="login.php" class="btn btn-sm btn-outline-secondary">Login</a> <a class="nav-link" href="index.php">Home</a>
<a href="register.php" class="btn btn-sm btn-primary">Register</a> </li>
<?php endif; ?> <li class="nav-item">
</nav> <a class="nav-link" href="admin.php">Admin</a>
</li>
</ul>
</div> </div>
</div>
</nav>
</header> </header>