quest-rando
This commit is contained in:
parent
c932dd6d36
commit
7be734b080
1
annonces.json
Normal file
1
annonces.json
Normal file
@ -0,0 +1 @@
|
||||
[]
|
1
annonces.json-vide
Normal file
1
annonces.json-vide
Normal file
@ -0,0 +1 @@
|
||||
[]
|
86
annonces.php
Normal file
86
annonces.php
Normal file
@ -0,0 +1,86 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Fonctions pour gérer les annonces
|
||||
*/
|
||||
|
||||
// Charger les annonces depuis un fichier JSON
|
||||
function loadAnnonces()
|
||||
{
|
||||
if (file_exists('annonces.json')) {
|
||||
$json = file_get_contents('annonces.json');
|
||||
return json_decode($json, true) ?? [];
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
// Sauvegarder les annonces dans un fichier JSON
|
||||
function saveAnnonces($annonces)
|
||||
{
|
||||
$json = json_encode($annonces, JSON_PRETTY_PRINT);
|
||||
file_put_contents('annonces.json', $json);
|
||||
}
|
||||
|
||||
// Ajouter une annonce en vérifiant les entrées
|
||||
function addAnnonce($title, $nombre, $description = '', $transportOption = '')
|
||||
{
|
||||
$annonces = loadAnnonces();
|
||||
$annonce = [
|
||||
'id' => uniqid(),
|
||||
'title' => htmlspecialchars(trim($title)),
|
||||
'nombre' => htmlspecialchars(trim($nombre)),
|
||||
'description' => htmlspecialchars(trim($description) ?: "Aucun détail supplémentaire fourni."),
|
||||
'transport_option' => htmlspecialchars(trim($transportOption)),
|
||||
date_default_timezone_set("Europe/Paris"),
|
||||
'date' => date('d-m-Y \à\ H:i:s')
|
||||
];
|
||||
$annonces[] = $annonce;
|
||||
saveAnnonces($annonces);
|
||||
return $annonce;
|
||||
}
|
||||
|
||||
// Afficher toutes les annonces existantes avec le comptage des options de transport
|
||||
function displayAnnonces()
|
||||
{
|
||||
$annonces = loadAnnonces();
|
||||
$totalCovoiturage = 0;
|
||||
$totalRdv = 0;
|
||||
|
||||
// Calculer les totaux par option de transport
|
||||
foreach ($annonces as $annonce) {
|
||||
$totalParticipants += (int)$annonce['nombre'];
|
||||
if ($annonce['transport_option'] === 'Covoiturage') {
|
||||
$totalCovoiturage += (int)$annonce['nombre'];
|
||||
} elseif ($annonce['transport_option'] === 'Rendez-vous départ') {
|
||||
$totalRdv += (int)$annonce['nombre'];
|
||||
}
|
||||
}
|
||||
|
||||
// Afficher les totaux par option de transport en haut de la page
|
||||
echo "<h2>Total de participants : $totalParticipants</h2>";
|
||||
echo "<strong><font size= +1>Total rendez-vous pour du covoiturage. : </font><strong>"."<strong><font size= +2>" . $totalCovoiturage . "</font><strong><br>";
|
||||
echo "<strong><font size= +1>Total rendez-vous au départ randonnée : </font><strong>"."<strong><font size= +2>" . $totalRdv . "</font><strong><br>";
|
||||
echo "<hr>"; // Ligne de séparation
|
||||
echo "<h2>Liste des participants</h2>";
|
||||
// Afficher les annonces
|
||||
if (empty($annonces)) {
|
||||
echo "<p>Aucune personne inscrite pour le moment.</p>";
|
||||
} else {
|
||||
foreach ($annonces as $annonce) {
|
||||
echo "<div class='annonce'>";
|
||||
echo "<img src='./images/randonneur-nb2.jpg' style='float: right; margin: 10px;' alt='Image'>";
|
||||
echo "<h3>" . $annonce['title'] . "</h3>";
|
||||
|
||||
if ($annonce['nombre'] > 0) {
|
||||
echo "<p>Nombre de personnes : " . $annonce['nombre'] . "</p>";
|
||||
echo "<p>Option choisie : " . $annonce['transport_option'] . "</p>";
|
||||
} else {
|
||||
echo "<p>Cette personne a indiqué qu'elle ne sera pas présente.</p>";
|
||||
}
|
||||
|
||||
echo "<p>" . $annonce['description'] . "</p>";
|
||||
echo "<small>Publié le " . $annonce['date'] . "</small>";
|
||||
echo "</div><hr>";
|
||||
}
|
||||
}
|
||||
}
|
88
formulaire.php
Normal file
88
formulaire.php
Normal file
@ -0,0 +1,88 @@
|
||||
<?php
|
||||
// formulaire.php
|
||||
include 'annonces.php'; // Charger les fonctions nécessaires
|
||||
session_start(); // Nécessaire pour utiliser les variables de session
|
||||
|
||||
// Générer deux chiffres aléatoires pour l'addition
|
||||
$_SESSION['captcha_num1'] = rand(1, 10);
|
||||
$_SESSION['captcha_num2'] = rand(1, 10);
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Formulaire de participation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../quest-rando/style-form.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>Qui vient... ou pas</h1>
|
||||
|
||||
<form method="POST" action="traitement.php">
|
||||
<label for="title"><span style="color: #e03e2d;"><strong>*</strong></span> Indiquez qui vous êtes :</label><br>
|
||||
<input type="text" id="title" name="title" required><br>
|
||||
|
||||
<label for="nombre">Indiquez le nombre de personnes :</label>
|
||||
<input type="number" id="nombre" name="nombre" min="1"><br><br>
|
||||
|
||||
<div id="additionalOptions" style="display: none;">
|
||||
<label><span style="color: #e03e2d;"><strong>*</strong> Choisissez une option :</label><br>
|
||||
<input type="radio" id="covoiturage" name="transport_option" value="Covoiturage">
|
||||
<label for="covoiturage">Rendez-vous pour du covoiturage</label><br>
|
||||
|
||||
<input type="radio" id="rdv" name="transport_option" value="Rendez-vous départ">
|
||||
<label for="rdv">Rendez-vous au point de départ</label><br>
|
||||
</div>
|
||||
|
||||
<label>
|
||||
<input type="checkbox" id="notPresent" name="not_present">
|
||||
Je ne serai pas présent
|
||||
</label><br>
|
||||
|
||||
<label for="description">Si vous avez quelque chose à ajouter :</label><br>
|
||||
<textarea id="description" name="description"></textarea><br>
|
||||
<!-- CAPTCHA -->
|
||||
<label for="captcha"><span style="color: #e03e2d;"><strong>*</strong></span> Résolvez cette opération :</label><br>
|
||||
<span><?php echo $_SESSION['captcha_num1']; ?> + <?php echo $_SESSION['captcha_num2']; ?> = </span>
|
||||
<input type="number" id="captcha" name="captcha" required><br>
|
||||
<?php if (isset($_GET['captcha_error'])): ?>
|
||||
<div style="color: red;">Erreur : La réponse est incorrecte.</div>
|
||||
<?php endif; ?>
|
||||
<p style="text-align: right;"><span style="color: rgb(224, 62, 45);"><strong>*</strong> <em><span style="color: rgb(126, 140, 141);">Obligatoire</span></em></span></p>
|
||||
<button type="submit">Envoyer ma réponse</button>
|
||||
|
||||
</form>
|
||||
|
||||
<script>
|
||||
const nombreField = document.getElementById('nombre');
|
||||
const additionalOptions = document.getElementById('additionalOptions');
|
||||
const transportOptions = document.getElementsByName('transport_option');
|
||||
const notPresentCheckbox = document.getElementById('notPresent');
|
||||
|
||||
nombreField.addEventListener('input', function() {
|
||||
if (parseInt(this.value) > 0) {
|
||||
additionalOptions.style.display = 'block';
|
||||
transportOptions.forEach(option => option.required = true);
|
||||
} else {
|
||||
additionalOptions.style.display = 'none';
|
||||
transportOptions.forEach(option => option.required = false);
|
||||
}
|
||||
});
|
||||
|
||||
notPresentCheckbox.addEventListener('change', function() {
|
||||
if (this.checked) {
|
||||
nombreField.value = '';
|
||||
nombreField.disabled = true;
|
||||
additionalOptions.style.display = 'none';
|
||||
transportOptions.forEach(option => option.checked = false);
|
||||
} else {
|
||||
nombreField.disabled = false;
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
41
liste.php
Normal file
41
liste.php
Normal file
@ -0,0 +1,41 @@
|
||||
<?php
|
||||
include 'annonces.php';
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Liste des participants</title>
|
||||
<link rel="stylesheet" href="../quest-rando/style.css">
|
||||
<style>
|
||||
/* Assure que le bouton est bien aligné à droite */
|
||||
.btn-retour {
|
||||
float: right;
|
||||
margin: 10px;
|
||||
display: inline-block;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<!-- Conteneur principal -->
|
||||
<div class="main-container">
|
||||
<!-- Bouton Retour -->
|
||||
<div class="btn-retour">
|
||||
<a href="https://www.lemimi.fr/fr/test-prochaine-rando-bis">
|
||||
<img src="./images/bouton_retour.gif" width="180" height="60" border="0" title="Clic" alt="Retour page rando">
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<!-- Scroll To Top -->
|
||||
<button id="scrollToTop" onclick="scrollToTop()">Haut de page</button>
|
||||
<script src="../quest-rando/js/scrolltotop.js" type="text/javascript"></script>
|
||||
|
||||
<!-- Vers liste des participants -->
|
||||
<?php displayAnnonces(); ?>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
Loading…
Reference in New Issue
Block a user