Auto commit: 2025-12-01T14:29:09.164Z

This commit is contained in:
Flatlogic Bot 2025-12-01 14:29:09 +00:00
parent 5eeda3bb91
commit e106a51f38
15 changed files with 718 additions and 148 deletions

28
api/chat.php Normal file
View File

@ -0,0 +1,28 @@
<?php
require_once __DIR__ . '/../ai/LocalAIApi.php';
header('Content-Type: application/json');
$response = [
'message' => 'Sorry, I am having trouble understanding you right now.'
];
if (isset($_POST['message'])) {
$userMessage = trim($_POST['message']);
$ai_response = LocalAIApi::createResponse([
'input' => [
['role' => 'system', 'content' => 'You are a helpful assistant for a winter resort website. Your name is WinterBot. You are friendly and helpful. You should help users plan their winter vacation.'],
['role' => 'user', 'content' => $userMessage],
],
]);
if (!empty($ai_response['success']) && !empty($ai_response['data'])) {
$text = LocalAIApi::extractText($ai_response);
if ($text !== '') {
$response['message'] = $text;
}
}
}
echo json_encode($response);

334
assets/css/custom.css Normal file
View File

@ -0,0 +1,334 @@
/* Cozy Lodge Theme */
body {
background-color: #F6FBFF; /* Frosty White */
font-family: 'Nunito Sans', sans-serif;
color: #212529;
}
.container {
width: 80%;
margin: 0 auto;
padding: 2rem 0;
}
/* Navigation */
.navbar {
background-color: #FFFFFF;
border-bottom: 1px solid #E9F1F8;
padding: 1rem 0;
}
.navbar .container {
display: flex;
justify-content: space-between;
align-items: center;
}
.navbar-brand {
font-family: 'Playfair Display', serif;
font-size: 1.5rem;
font-weight: 700;
color: #0B233F;
text-decoration: none;
}
.nav-links {
list-style: none;
margin: 0;
padding: 0;
display: flex;
}
.nav-links li a {
text-decoration: none;
color: #212529;
padding: 0.5rem 1rem;
transition: color 0.3s ease;
}
.nav-links li a:hover {
color: #FF7A4D;
}
/* Hero Section */
.hero {
background-image: url('https://images.pexels.com/photos/912110/pexels-photo-912110.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2');
background-size: cover;
background-position: center;
height: 80vh;
display: flex;
align-items: center;
justify-content: center;
color: white;
text-shadow: 0 2px 4px rgba(0,0,0,0.5);
}
.hero-content {
background: rgba(11, 35, 63, 0.6); /* Deep Navy with transparency */
padding: 2rem 4rem;
border-radius: .5rem;
text-align: center;
}
.hero h1 {
font-family: 'Playfair Display', serif;
font-weight: 700;
font-size: 4rem;
}
.lead {
font-size: 1.25rem;
}
.btn-primary {
background-color: #FF7A4D; /* Warm Ember */
border-color: #FF7A4D;
color: white;
font-weight: bold;
padding: 0.75rem 1.5rem;
transition: background-color 0.3s ease;
text-decoration: none;
border-radius: .25rem;
border: none;
cursor: pointer;
}
.btn-primary:hover {
background-color: #E86A3C;
border-color: #E86A3C;
}
/* Featured Experiences */
.featured-experiences {
text-align: center;
padding: 4rem 0;
}
.featured-experiences h2 {
font-family: 'Playfair Display', serif;
font-size: 2.5rem;
margin-bottom: 2rem;
}
.experience-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 2rem;
}
.experience-card {
background-color: #FFFFFF;
border: 1px solid #E9F1F8; /* Snow Grey */
border-radius: .5rem;
overflow: hidden;
transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.experience-card:hover {
transform: translateY(-5px);
box-shadow: 0 8px 16px rgba(0,0,0,0.1);
}
.experience-card img {
width: 100%;
height: 200px;
object-fit: cover;
}
.experience-card h3 {
font-family: 'Playfair Display', serif;
font-size: 1.5rem;
margin: 1rem;
}
.experience-card p {
margin: 0 1rem 1rem;
}
/* Experience Detail */
.experience-detail img {
width: 100%;
height: 400px;
object-fit: cover;
border-radius: .5rem;
margin-bottom: 2rem;
}
.experience-detail h1 {
font-family: 'Playfair Display', serif;
font-size: 3rem;
margin-bottom: 1rem;
}
.experience-detail p {
line-height: 1.6;
margin-bottom: 1.5rem;
}
.experience-detail h2 {
font-family: 'Playfair Display', serif;
font-size: 2rem;
margin-top: 2rem;
margin-bottom: 1rem;
}
.experience-detail ul {
list-style: disc;
margin-left: 1.5rem;
}
/* Gallery */
.gallery-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 1rem;
}
.gallery-card {
overflow: hidden;
border-radius: .5rem;
}
.gallery-card img {
width: 100%;
height: 100%;
object-fit: cover;
transition: transform 0.3s ease;
}
.gallery-card:hover img {
transform: scale(1.05);
}
.upload-section {
text-align: center;
padding: 4rem 0;
}
.upload-section h2 {
font-family: 'Playfair Display', serif;
font-size: 2.5rem;
margin-bottom: 1rem;
}
/* Forms */
.form-group {
margin-bottom: 1.5rem;
}
.form-group label {
display: block;
margin-bottom: .5rem;
font-weight: bold;
}
.form-group input,
.form-group textarea,
.form-group select {
width: 100%;
padding: .75rem;
border: 1px solid #E9F1F8;
border-radius: .25rem;
}
/* Footer */
footer {
background-color: #0B233F;
color: #F6FBFF;
text-align: center;
padding: 2rem 0;
margin-top: 4rem;
}
/* Chat Widget */
.chat-icon {
position: fixed;
bottom: 2rem;
right: 2rem;
background-color: #0B233F; /* Deep Navy */
color: #F6FBFF; /* Frosty White */
width: 60px;
height: 60px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
box-shadow: 0 4px 8px rgba(0,0,0,0.2);
transition: transform 0.3s ease;
}
.chat-icon:hover {
transform: scale(1.1);
}
.chat-window {
display: none; /* Hidden by default */
position: fixed;
bottom: 7rem;
right: 2rem;
width: 350px;
max-width: 90%;
background-color: #FFFFFF;
border-radius: .5rem;
box-shadow: 0 4px 16px rgba(0,0,0,0.2);
flex-direction: column;
overflow: hidden;
}
.chat-window.show {
display: flex;
}
.chat-header {
background-color: #0B233F; /* Deep Navy */
color: #F6FBFF; /* Frosty White */
padding: 1rem;
display: flex;
justify-content: space-between;
align-items: center;
}
.chat-header h5 {
margin: 0;
font-family: 'Playfair Display', serif;
}
.chat-body {
padding: 1rem;
overflow-y: auto;
height: 300px;
}
.message-container {
/* The messages will be prepended here by JS */
}
.message {
padding: 0.5rem 1rem;
border-radius: 1rem;
margin-bottom: 0.5rem;
max-width: 80%;
/* Use float for alignment */
}
.message.received {
background-color: #E9F1F8; /* Snow Grey */
float: left;
clear: both;
}
.message.sent {
background-color: #FF7A4D; /* Warm Ember */
color: white;
float: right;
clear: both;
}
.chat-input {
display: flex;
padding: 1rem;
border-top: 1px solid #E9F1F8; /* Snow Grey */
}

53
assets/js/main.js Normal file
View File

@ -0,0 +1,53 @@
document.addEventListener('DOMContentLoaded', function() {
const chatIcon = document.querySelector('.chat-icon');
const chatWindow = document.querySelector('.chat-window');
const closeChat = document.querySelector('.close-chat');
const chatInput = document.querySelector('.chat-input input');
const sendButton = document.querySelector('.chat-input button');
const messageContainer = document.querySelector('.message-container');
if (chatIcon) {
chatIcon.addEventListener('click', () => {
chatWindow.classList.toggle('show');
});
}
if (closeChat) {
closeChat.addEventListener('click', () => {
chatWindow.classList.remove('show');
});
}
const sendMessage = () => {
const messageText = chatInput.value.trim();
if (messageText === '') return;
appendMessage(messageText, 'sent');
chatInput.value = '';
// Simulate a response from the AI
setTimeout(() => {
appendMessage('I am a demo bot. I will be able to help you soon.', 'received');
}, 1000);
};
const appendMessage = (text, type) => {
const messageDiv = document.createElement('div');
messageDiv.classList.add('message', type);
messageDiv.textContent = text;
messageContainer.appendChild(messageDiv);
messageContainer.scrollTop = messageContainer.scrollHeight;
};
if (sendButton) {
sendButton.addEventListener('click', sendMessage);
}
if (chatInput) {
chatInput.addEventListener('keypress', (e) => {
if (e.key === 'Enter') {
sendMessage();
}
});
}
});

69
db/migrate.php Normal file
View File

@ -0,0 +1,69 @@
<?php
require_once __DIR__ . '/config.php';
function migrate() {
$pdo = db();
// 1. Create tables
try {
$sql = file_get_contents(__DIR__ . '/schema.sql');
$pdo->exec($sql);
echo "Database schema created successfully.\n";
} catch (PDOException $e) {
die("DB ERROR: ". $e->getMessage());
}
// 2. Insert data (idempotently)
$experiences_data = [
[
'slug' => 'guided-ski-lessons',
'title' => 'Guided Ski & Snowboard Lessons',
'image' => 'https://images.pexels.com/photos/167699/pexels-photo-167699.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2',
'description' => 'Whether you\'re a first-timer or a seasoned pro, our certified instructors are here to help you sharpen your skills and conquer the mountain with confidence. We offer private and group lessons for all ages and abilities.',
'features' => json_encode([
'Duration' => '2 hours, Half-day, or Full-day',
'Skill Level' => 'Beginner to Expert',
'Group Size' => '1-6 people',
'Includes' => 'Lift ticket & rental discounts'
])
],
[
'slug' => 'enchanted-ice-skating',
'title' => 'Enchanted Ice Skating',
'image' => 'https://images.pexels.com/photos/714258/pexels-photo-714258.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2',
'description' => 'Glide across our scenic outdoor rink, surrounded by magical winter lights and festive music. A perfect activity for families, couples, and friends. Skate rentals available.',
'features' => json_encode([
'Duration' => 'All-day pass',
'Skill Level' => 'All levels',
'Group Size' => 'N/A',
'Includes' => 'Skate rentals available for a fee'
])
],
[
'slug' => 'cozy-winter-markets',
'title' => 'Cozy Winter Markets',
'image' => 'https://images.pexels.com/photos/1525612/pexels-photo-1525612.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2',
'description' => 'Explore our charming village market, filled with handcrafted gifts from local artisans, delicious seasonal treats, and warm spiced beverages. A festive experience for all ages.',
'features' => json_encode([
'Duration' => 'Weekends in December',
'Skill Level' => 'N/A',
'Group Size' => 'N/A',
'Includes' => 'Unique gifts and festive food'
])
]
];
$stmt = $pdo->prepare("INSERT INTO experiences (slug, title, image, description, features) VALUES (?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE title=VALUES(title), image=VALUES(image), description=VALUES(description), features=VALUES(features)");
try {
foreach ($experiences_data as $exp) {
$stmt->execute(array_values($exp));
}
echo "Experience data inserted/updated successfully.\n";
} catch (PDOException $e) {
die("DB ERROR: ". $e->getMessage());
}
}
migrate();

8
db/schema.sql Normal file
View File

@ -0,0 +1,8 @@
CREATE TABLE IF NOT EXISTS `experiences` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`slug` VARCHAR(255) NOT NULL UNIQUE,
`title` VARCHAR(255) NOT NULL,
`image` VARCHAR(255) NOT NULL,
`description` TEXT NOT NULL,
`features` JSON NOT NULL
);

18
experience_detail.php Normal file
View File

@ -0,0 +1,18 @@
<?php include 'header.php'; ?>
<div class="container">
<div class="experience-detail">
<img src="https://images.pexels.com/photos/1576788/pexels-photo-1576788.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1" alt="Experience 1">
<h1>Ski Lessons</h1>
<p>Learn to ski with our expert instructors. We offer lessons for all ages and skill levels. Our instructors are certified and have years of experience. We provide all the necessary equipment, so you just need to bring your enthusiasm!</p>
<h2>Details</h2>
<ul>
<li>Duration: 2 hours</li>
<li>Price: $50 per person</li>
<li>Includes: Equipment rental</li>
</ul>
<a href="inquiry.php" class="btn-primary">Inquire Now</a>
</div>
</div>
<?php include 'footer.php'; ?>

35
experiences.php Normal file
View File

@ -0,0 +1,35 @@
<?php include 'header.php'; ?>
<div class="container">
<h1>Winter Experiences</h1>
<p>Browse our collection of unique winter experiences.</p>
<div class="experience-grid">
<div class="experience-card">
<img src="https://images.pexels.com/photos/1576788/pexels-photo-1576788.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1" alt="Experience 1">
<h3>Ski Lessons</h3>
<p>Learn to ski with our expert instructors.</p>
<a href="experience_detail.php" class="btn-primary">View Details</a>
</div>
<div class="experience-card">
<img src="https://images.pexels.com/photos/714258/pexels-photo-714258.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1" alt="Experience 2">
<h3>Snowboarding</h3>
<p>Hit the slopes on a snowboard.</p>
<a href="experience_detail.php" class="btn-primary">View Details</a>
</div>
<div class="experience-card">
<img src="https://images.pexels.com/photos/1632790/pexels-photo-1632790.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1" alt="Experience 3">
<h3>Ice Skating</h3>
<p>Enjoy a magical ice skating experience.</p>
<a href="experience_detail.php" class="btn-primary">View Details</a>
</div>
<div class="experience-card">
<img src="https://images.pexels.com/photos/1632790/pexels-photo-1632790.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1" alt="Experience 4">
<h3>Sleigh Rides</h3>
<p>Take a scenic sleigh ride through the snow.</p>
<a href="experience_detail.php" class="btn-primary">View Details</a>
</div>
</div>
</div>
<?php include 'footer.php'; ?>

31
footer.php Normal file
View File

@ -0,0 +1,31 @@
<footer>
<div class="container">
<p>&copy; <?php echo date("Y"); ?> Winter Wonderland. All Rights Reserved.</p>
</div>
</footer>
<div class="chat-icon">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-message-square"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path></svg>
</div>
<div class="chat-window">
<div class="chat-header">
<h5>AI Trip Planner</h5>
<button class="close-chat">&times;</button>
</div>
<div class="chat-body">
<div class="message-container">
<div class="message received">
Hi there! How can I help you plan your winter adventure?
</div>
</div>
</div>
<div class="chat-input">
<input type="text" placeholder="Type your message...">
<button>Send</button>
</div>
</div>
<script src="assets/js/main.js"></script>
</body>
</html>

29
gallery.php Normal file
View File

@ -0,0 +1,29 @@
<?php include 'header.php'; ?>
<div class="container">
<h1>Photo Gallery</h1>
<p>A gallery of user-submitted photos.</p>
<div class="gallery-grid">
<div class="gallery-card">
<img src="https://images.pexels.com/photos/912110/pexels-photo-912110.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1" alt="Gallery Image 1">
</div>
<div class="gallery-card">
<img src="https://images.pexels.com/photos/1576788/pexels-photo-1576788.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1" alt="Gallery Image 2">
</div>
<div class="gallery-card">
<img src="https://images.pexels.com/photos/714258/pexels-photo-714258.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1" alt="Gallery Image 3">
</div>
<div class="gallery-card">
<img src="https://images.pexels.com/photos/1632790/pexels-photo-1632790.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1" alt="Gallery Image 4">
</div>
</div>
<div class="upload-section">
<h2>Share Your Winter Moments</h2>
<p>Have a photo to share? Upload it here!</p>
<a href="upload.php" class="btn-primary">Upload Photo</a>
</div>
</div>
<?php include 'footer.php'; ?>

22
header.php Normal file
View File

@ -0,0 +1,22 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Winter Wonderland</title>
<link href="https://fonts.googleapis.com/css2?family=Playfair+Display:wght@700&family=Nunito+Sans:wght@400;600&display=swap" rel="stylesheet">
<link rel="stylesheet" href="assets/css/custom.css">
</head>
<body>
<header>
<nav class="navbar">
<div class="container">
<a class="navbar-brand" href="index.php">Winter Wonderland</a>
<ul class="nav-links">
<li><a href="experiences.php">Experiences</a></li>
<li><a href="gallery.php">Gallery</a></li>
<li><a href="inquiry.php">Contact</a></li>
</ul>
</div>
</nav>
</header>

180
index.php
View File

@ -1,150 +1,34 @@
<?php
declare(strict_types=1);
@ini_set('display_errors', '1');
@error_reporting(E_ALL);
@date_default_timezone_set('UTC');
<?php include 'header.php'; ?>
$phpVersion = PHP_VERSION;
$now = date('Y-m-d H:i:s');
?>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>New Style</title>
<?php
// Read project preview data from environment
$projectDescription = $_SERVER['PROJECT_DESCRIPTION'] ?? '';
$projectImageUrl = $_SERVER['PROJECT_IMAGE_URL'] ?? '';
?>
<?php if ($projectDescription): ?>
<!-- Meta description -->
<meta name="description" content='<?= htmlspecialchars($projectDescription) ?>' />
<!-- Open Graph meta tags -->
<meta property="og:description" content="<?= htmlspecialchars($projectDescription) ?>" />
<!-- Twitter meta tags -->
<meta property="twitter:description" content="<?= htmlspecialchars($projectDescription) ?>" />
<?php endif; ?>
<?php if ($projectImageUrl): ?>
<!-- Open Graph image -->
<meta property="og:image" content="<?= htmlspecialchars($projectImageUrl) ?>" />
<!-- Twitter image -->
<meta property="twitter:image" content="<?= htmlspecialchars($projectImageUrl) ?>" />
<?php endif; ?>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap" rel="stylesheet">
<style>
:root {
--bg-color-start: #6a11cb;
--bg-color-end: #2575fc;
--text-color: #ffffff;
--card-bg-color: rgba(255, 255, 255, 0.01);
--card-border-color: rgba(255, 255, 255, 0.1);
}
body {
margin: 0;
font-family: 'Inter', sans-serif;
background: linear-gradient(45deg, var(--bg-color-start), var(--bg-color-end));
color: var(--text-color);
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
text-align: center;
overflow: hidden;
position: relative;
}
body::before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100"><path d="M-10 10L110 10M10 -10L10 110" stroke-width="1" stroke="rgba(255,255,255,0.05)"/></svg>');
animation: bg-pan 20s linear infinite;
z-index: -1;
}
@keyframes bg-pan {
0% { background-position: 0% 0%; }
100% { background-position: 100% 100%; }
}
main {
padding: 2rem;
}
.card {
background: var(--card-bg-color);
border: 1px solid var(--card-border-color);
border-radius: 16px;
padding: 2rem;
backdrop-filter: blur(20px);
-webkit-backdrop-filter: blur(20px);
box-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.1);
}
.loader {
margin: 1.25rem auto 1.25rem;
width: 48px;
height: 48px;
border: 3px solid rgba(255, 255, 255, 0.25);
border-top-color: #fff;
border-radius: 50%;
animation: spin 1s linear infinite;
}
@keyframes spin {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
.hint {
opacity: 0.9;
}
.sr-only {
position: absolute;
width: 1px; height: 1px;
padding: 0; margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap; border: 0;
}
h1 {
font-size: 3rem;
font-weight: 700;
margin: 0 0 1rem;
letter-spacing: -1px;
}
p {
margin: 0.5rem 0;
font-size: 1.1rem;
}
code {
background: rgba(0,0,0,0.2);
padding: 2px 6px;
border-radius: 4px;
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
}
footer {
position: absolute;
bottom: 1rem;
font-size: 0.8rem;
opacity: 0.7;
}
</style>
</head>
<body>
<main>
<div class="card">
<h1>Analyzing your requirements and generating your website…</h1>
<div class="loader" role="status" aria-live="polite" aria-label="Applying initial changes">
<span class="sr-only">Loading…</span>
</div>
<p class="hint"><?= ($_SERVER['HTTP_HOST'] ?? '') === 'appwizzy.com' ? 'AppWizzy' : 'Flatlogic' ?> AI is collecting your requirements and applying the first changes.</p>
<p class="hint">This page will update automatically as the plan is implemented.</p>
<p>Runtime: PHP <code><?= htmlspecialchars($phpVersion) ?></code> — UTC <code><?= htmlspecialchars($now) ?></code></p>
<div class="hero">
<div class="hero-content">
<h1>Your Winter Adventure Awaits</h1>
<p class="lead">Discover unique experiences, plan the perfect trip with our AI assistant, and create unforgettable memories.</p>
<a href="#" class="btn btn-primary">Plan My Trip with AI</a>
</div>
</main>
<footer>
Page updated: <?= htmlspecialchars($now) ?> (UTC)
</footer>
</body>
</html>
</div>
<div class="container">
<section class="featured-experiences">
<h2>Featured Experiences</h2>
<div class="experience-grid">
<div class="experience-card">
<img src="https://images.pexels.com/photos/1576788/pexels-photo-1576788.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1" alt="Experience 1">
<h3>Ski Lessons</h3>
<p>Learn to ski with our expert instructors.</p>
</div>
<div class="experience-card">
<img src="https://images.pexels.com/photos/714258/pexels-photo-714258.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1" alt="Experience 2">
<h3>Snowboarding</h3>
<p>Hit the slopes on a snowboard.</p>
</div>
<div class="experience-card">
<img src="https://images.pexels.com/photos/1632790/pexels-photo-1632790.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1" alt="Experience 3">
<h3>Ice Skating</h3>
<p>Enjoy a magical ice skating experience.</p>
</div>
</div>
</section>
</div>
<?php include 'footer.php'; ?>

31
inquiry.php Normal file
View File

@ -0,0 +1,31 @@
<?php include 'header.php'; ?>
<div class="container">
<h1>Inquire About an Experience</h1>
<form action="process_inquiry.php" method="post">
<div class="form-group">
<label for="name">Your Name</label>
<input type="text" name="name" id="name" required>
</div>
<div class="form-group">
<label for="email">Your Email</label>
<input type="email" name="email" id="email" required>
</div>
<div class="form-group">
<label for="experience">Experience</label>
<select name="experience" id="experience">
<option value="Ski Lessons">Ski Lessons</option>
<option value="Snowboarding">Snowboarding</option>
<option value="Ice Skating">Ice Skating</option>
<option value="Sleigh Rides">Sleigh Rides</option>
</select>
</div>
<div class="form-group">
<label for="message">Message</label>
<textarea name="message" id="message" rows="4"></textarea>
</div>
<button type="submit" class="btn-primary">Submit Inquiry</button>
</form>
</div>
<?php include 'footer.php'; ?>

3
process_inquiry.php Normal file
View File

@ -0,0 +1,3 @@
<?php
// This file will process the inquiry form submission.
?>

3
process_upload.php Normal file
View File

@ -0,0 +1,3 @@
<?php
// This file will process the photo upload form submission.
?>

22
upload.php Normal file
View File

@ -0,0 +1,22 @@
<?php include 'header.php'; ?>
<div class="container">
<h1>Upload a Photo</h1>
<form action="process_upload.php" method="post" enctype="multipart/form-data">
<div class="form-group">
<label for="name">Your Name</label>
<input type="text" name="name" id="name" required>
</div>
<div class="form-group">
<label for="photo">Photo</label>
<input type="file" name="photo" id="photo" required>
</div>
<div class="form-group">
<label for="caption">Caption</label>
<textarea name="caption" id="caption" rows="4"></textarea>
</div>
<button type="submit" class="btn-primary">Upload</button>
</form>
</div>
<?php include 'footer.php'; ?>