4 Commits

Author SHA1 Message Date
Christian CUNAT-BRULE
71978f3b41 ci: relance le déploiement PROD
All checks were successful
Déploiement DEV / deploy (push) Successful in 7s
2026-08-06 22:27:08 +02:00
Christian CUNAT-BRULE
7550bd1a30 Edition de connexion_sql et ajout de gitignore et gitattributes et env
All checks were successful
Déploiement DEV / deploy (push) Successful in 8s
2026-08-06 21:34:19 +02:00
Christian CUNAT-BRULE
8c49242c56 ci: relance le déploiement DEV
All checks were successful
Déploiement DEV / deploy (push) Successful in 8s
2026-08-06 16:48:51 +02:00
Christian CUNAT-BRULE
f456978b91 Ajout de CI et update depuis la prod
Some checks failed
Déploiement DEV / deploy (push) Failing after 13s
2026-08-06 16:33:06 +02:00
56 changed files with 13645 additions and 241 deletions

6
.env.example Normal file
View File

@@ -0,0 +1,6 @@
DB_HOST=localhost
DB_PORT=3306
DB_NAME=DB
DB_USER=USER
DB_PASS=PASS
DB_CHARSET=utf8

21
.gitattributes vendored Normal file
View File

@@ -0,0 +1,21 @@
# Forcer LF pour tous les fichiers texte
* text eol=lf
# Forcer explicitement PHP
*.php text eol=lf
# Autres fichiers courants
*.js text eol=lf
*.css text eol=lf
*.html text eol=lf
*.yml text eol=lf
*.env text eol=lf
# Images vectorielles
*.svg text diff eol=lf
# Forcer WebP en fichier binaire
*.webp binary
*.png binary
*.jpg binary
*.jpeg binary

View File

@@ -0,0 +1,75 @@
name: Déploiement DEV
on:
push:
branches:
- develop
workflow_dispatch:
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Récupérer le dépôt
uses: https://github.com/actions/checkout@v4
- name: Installer les outils
run: |
apt-get update
apt-get install -y rsync openssh-client
- name: Configurer SSH Synology
env:
SSH_PRIVATE_KEY: ${{ secrets.NAS_SSH_KEY }}
NAS_HOST: ${{ vars.NAS_HOST }}
NAS_PORT: ${{ vars.NAS_PORT }}
run: |
mkdir -p ~/.ssh
printf '%s\n' "$SSH_PRIVATE_KEY" > ~/.ssh/id_ed25519
chmod 600 ~/.ssh/id_ed25519
ssh-keyscan \
-p "$NAS_PORT" \
"$NAS_HOST" \
>> ~/.ssh/known_hosts
chmod 600 ~/.ssh/known_hosts
- name: Vérifier la destination DEV
env:
NAS_HOST: ${{ vars.NAS_HOST }}
NAS_PORT: ${{ vars.NAS_PORT }}
NAS_USER: ${{ vars.NAS_USER }}
NAS_PATH: ${{ vars.NAS_PATH }}
run: |
ssh \
-p "$NAS_PORT" \
-i ~/.ssh/id_ed25519 \
-o IdentitiesOnly=yes \
"$NAS_USER@$NAS_HOST" \
"test -d '$NAS_PATH' && test -w '$NAS_PATH'"
- name: Déployer sur le Synology
env:
NAS_HOST: ${{ vars.NAS_HOST }}
NAS_PORT: ${{ vars.NAS_PORT }}
NAS_USER: ${{ vars.NAS_USER }}
NAS_PATH: ${{ vars.NAS_PATH }}
run: |
rsync -rz \
--no-perms \
--no-owner \
--no-group \
--omit-dir-times \
--chmod=Du=rwx,Dgo=rx,Fu=rw,Fgo=r \
--exclude=".git/" \
--exclude=".gitea/" \
--exclude=".env" \
--exclude="uploads/" \
--exclude="logs/" \
--exclude="storage/" \
-e "ssh -p $NAS_PORT -i ~/.ssh/id_ed25519 -o IdentitiesOnly=yes" \
./ \
"$NAS_USER@$NAS_HOST:$NAS_PATH/"

View File

@@ -0,0 +1,75 @@
name: Déploiement PROD
on:
push:
branches:
- main
workflow_dispatch:
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Récupérer le dépôt
uses: https://github.com/actions/checkout@v4
- name: Installer les outils
run: |
apt-get update
apt-get install -y rsync openssh-client
- name: Configurer SSH VPS
env:
SSH_PRIVATE_KEY: ${{ secrets.VPS_SSH_KEY }}
VPS_HOST: ${{ vars.VPS_HOST }}
VPS_PORT: ${{ vars.VPS_PORT }}
run: |
mkdir -p ~/.ssh
printf '%s\n' "$SSH_PRIVATE_KEY" > ~/.ssh/id_ed25519
chmod 600 ~/.ssh/id_ed25519
ssh-keyscan \
-p "$VPS_PORT" \
"$VPS_HOST" \
>> ~/.ssh/known_hosts
chmod 600 ~/.ssh/known_hosts
- name: Vérifier la destination PROD
env:
VPS_HOST: ${{ vars.VPS_HOST }}
VPS_PORT: ${{ vars.VPS_PORT }}
VPS_USER: ${{ vars.VPS_USER }}
VPS_PATH: ${{ vars.VPS_PATH }}
run: |
ssh \
-p "$VPS_PORT" \
-i ~/.ssh/id_ed25519 \
-o IdentitiesOnly=yes \
"$VPS_USER@$VPS_HOST" \
"test -d '$VPS_PATH' && test -w '$VPS_PATH'"
- name: Déployer sur le VPS
env:
VPS_HOST: ${{ vars.VPS_HOST }}
VPS_PORT: ${{ vars.VPS_PORT }}
VPS_USER: ${{ vars.VPS_USER }}
VPS_PATH: ${{ vars.VPS_PATH }}
run: |
rsync -rz \
--no-perms \
--no-owner \
--no-group \
--omit-dir-times \
--chmod=Du=rwx,Dgo=rx,Fu=rw,Fgo=r \
--exclude=".git/" \
--exclude=".gitea/" \
--exclude=".env" \
--exclude="uploads/" \
--exclude="logs/" \
--exclude="storage/" \
-e "ssh -p $VPS_PORT -i ~/.ssh/id_ed25519 -o IdentitiesOnly=yes" \
./ \
"$VPS_USER@$VPS_HOST:$VPS_PATH/"

110
.gitignore vendored
View File

@@ -1 +1,111 @@
# ----------------------
# Personnalisé / PHP MVC
# ----------------------
# **/module/
**/.env
**/*.local
**/*.config
**/config/database.php
**/documents
**/Libs
# ----------------------
# Node.js
# ----------------------
node_modules/
npm-debug.log
yarn-error.log
package-lock.json
yarn.lock
# ----------------------
# Python
# ----------------------
__pycache__/
*.py[cod]
*.pyo
*.pyd
env/
venv/
*.egg-info/
# ----------------------
# Java
# ----------------------
*.class
*.jar
*.war
*.ear
target/
.idea/
*.iml
# ----------------------
# Visual Studio
# ----------------------
.vs/
*.suo
*.user
*.userosscache
*.sln.docstates
# ----------------------
# macOS
# ----------------------
.DS_Store
# ----------------------
# Windows
# ----------------------
Thumbs.db
ehthumbs.db
Desktop.ini
$RECYCLE.BIN/
# ----------------------
# Logs
# ----------------------
*.log
# ----------------------
# IDE-specific files
# ----------------------
.idea/
.vscode/
*.sublime-project
*.sublime-workspace
# ----------------------
# Other temporary / backup files
# ----------------------
*.bak
*.tmp
*.swp
*.orig
*.diff
*.patch
*.sqlite
*.db
*.tar.gz
*.zip
# ----------------------
# Documentation
# ----------------------
*.pdf
*.docx
# ----------------------
# Images
# ----------------------
# *.png
# *.jpg
# *.jpeg
*.gif
# ----------------------
# Output / build directories
# ----------------------
# dist/
build/
out/

5
activite.php Normal file
View File

@@ -0,0 +1,5 @@
<?php
include_once('./vue/header.html');
include_once('./vue/activite.html');
include_once('./vue/footer.html');
?>

View File

@@ -1,10 +1,9 @@
<?php
include_once('./vue/header.html');
include_once('./modele/connexion_sql.php');
if (!isset($_GET['section']) OR $_GET['section'] == 'index')
{
include_once('./controleur/actualite/index.php');
}
include_once('./vue/footer.html');
include_once('./vue/header.html');
include_once('./config/connexion_sql.php');
if (!isset($_GET['section']) OR $_GET['section'] == 'index')
{
include_once('./controleur/actualite.php');
}
include_once('./vue/footer.html');

View File

@@ -1,5 +1,5 @@
<?php
include_once('./vue/header.html');
include_once('./vue/information/centre/index.html');
include_once('./vue/footer.html');
include_once('./vue/header.html');
include_once('./vue/centre.html');
include_once('./vue/footer.html');
?>

16
config/connexion_sql.php Normal file
View File

@@ -0,0 +1,16 @@
<?php
$env = parse_ini_file(__DIR__ . '/../.env');
if ($env === false) { die('Impossible de charger le fichier .env'); }
try {
$dsn = sprintf('mysql:host=%s;port=%s;dbname=%s;charset=%s', $env['DB_HOST'], $env['DB_PORT'], $env['DB_NAME'], $env['DB_CHARSET']);
$bdd = new PDO( $dsn, $env['DB_USER'], $env['DB_PASS'],
[
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
]
);
} catch (PDOException $e) { die('Erreur : ' . $e->getMessage()); }

9
config/constants.php Normal file
View File

@@ -0,0 +1,9 @@
<?php
define('VISITEUR',1);
define('INSCRIT',2);
define('MODO',3);
define('ADMIN',4);
define('ERR_IS_CO','Vous ne pouvez pas accéder à cette page si vous n\'êtes pas connecté');
?>

68
config/functions.php Normal file
View File

@@ -0,0 +1,68 @@
<?php
function erreur($err='')
{
$mess=($err!='')? $err:'Une erreur inconnue s\'est produite';
exit('
<div class="container-fluid">
<section id="content" class="page-content">
<div class="container text-center">
<h2>Vous êtes pas autorisé a passer ici</h2><br>
<p> '.$mess.' </p>
<p>Cliquez <a href="./espace_membre.php">ici</a> pour revenir à la page d\'accueil</p>
</div>
</section>
</div>');
}
function edit_avatar($avatar, $pseudo)
{
if (isset ($avatar)){
$imagename = $avatar['name'];// exemple.png
$source = $avatar['tmp_name'];// /volume1/@tmp/phpiES0qN
$locate = "./images/avatars/".$pseudo."/";
$dir = $locate."img_user.jpeg";
move_uploaded_file($source,$dir);
changeToJpeg($dir,$dir);
resize_avatar($dir,$dir);
$rdir = substr($dir,1);
return $rdir;
}
}
function changeToJpeg($source, $dir)
{
$ext = substr($_FILES['avatar']['type'],6); //jpeg
switch($ext) {
case 'jpg':
$image = imagecreatefromjpeg($source);
break;
case 'jpeg':
$image = imagecreatefromjpeg($source);
break;
case 'png':
$image = imagecreatefrompng($source);
break;
case 'gif':
$image = imagecreatefromgif($source);
break;
default:
throw new Exception('Unknown image type.');
}
imagejpeg($image, $dir);
}
function resize_avatar($dir,$out )
{
list($width, $height) = getimagesize($dir);
$modwidth = 150; //target width
$diff = $width / $modwidth;
$modheight = $height / $diff;
$tn = imagecreatetruecolor($modwidth, $modheight);
$image = imagecreatefromjpeg($dir);
imagecopyresampled($tn, $image, 0, 0, 0, 0, $modwidth, $modheight, $width, $height);
imagejpeg($tn, $out);
}
?>

12
config/init.php Normal file
View File

@@ -0,0 +1,12 @@
<?php
if (session_status() === PHP_SESSION_NONE) {
session_start();
}
include_once(__DIR__ . '/constants.php');
include_once(__DIR__ . '/functions.php');
$lvl = isset($_SESSION['privilege']) ? (int)$_SESSION['privilege'] : 1;
$id = isset($_SESSION['ideleve']) ? (int)$_SESSION['ideleve'] : 0;
$pseudo = isset($_SESSION['pseudo']) ? $_SESSION['pseudo'] : '';
?>

View File

@@ -1,9 +1,8 @@
<?php
include_once('./vue/header.html');
include_once('./modele/connexion_sql.php');
if (!isset($_GET['section']) OR $_GET['section'] == 'index')
{
include_once('./controleur/membre/connexion/index.php');
}
include_once('./vue/footer.html');
include_once('./vue/header.html');
include_once('./config/connexion_sql.php');
if (!isset($_GET['section']) OR $_GET['section'] == 'index')
{
include_once('./controleur/membre/connexion.php');
}
include_once('./vue/footer.html');

18
controleur/actualite.php Normal file
View File

@@ -0,0 +1,18 @@
<?php
// On demande les 5 derniers billets (mod<6F>le)
include_once('./modele/actualite.php');
$event1 = get_News(0, 5);
// On effectue du traitement sur les donn<6E>es (contr<74>leur)
// Ici, on doit surtout s<>curiser l'affichage
foreach($event1 as $cle => $event)
{
$event1[$cle]['nom'] = ($event['nom']);
$event1[$cle]['dateevent'] = ($event['dateevent']);
$event1[$cle]['imageevent'] = ($event['imageevent']);
$event1[$cle]['lieu'] = ($event['lieu']);
$event1[$cle]['description'] = ($event['description']);
}
// On affiche la page (vue)
include_once('./vue/actualite.php');

18
controleur/evenement.php Normal file
View File

@@ -0,0 +1,18 @@
<?php
// On demande les 5 derniers billets (modèle)
include_once('./modele/evenement.php');
$eventsAll = get_events(0, 5);
// On effectue du traitement sur les données (controleur)
// Ici, on doit surtout sécuriser l'affichage
foreach($eventsAll as $cle => $event)
{
$events[$cle]['nom'] = ($event['nom']);
$events[$cle]['dateevent'] = ($event['dateevent']);
$events[$cle]['imageevent'] = ($event['imageevent']);
$events[$cle]['lieu'] = ($event['lieu']);
$events[$cle]['description'] = ($event['description']);
}
// On affiche la page (vue)
include_once('./vue/evenement.php');

View File

@@ -0,0 +1,75 @@
<?php
include_once('./modele/membre/connexion.php');
$titre="Connexion";
if ($id!=0) erreur(ERR_IS_CO);
if (!isset($_POST['pseudo'])) { //Page de formulaire
?>
<div class="container-fluid">
<section id="content" class="page-content">
<div class="container text-center">
<h2>Connexion</h2>
<form method="post" action="connexion.php">
<br><fieldset>
<label class="labelI" for="pseudo">Pseudo :</label><br><input name="pseudo" type="text" id="pseudo" /><br>
<label class="labelI" for="password">Mot de passe :</label><br><input type="password" name="password" id="password" />
</fieldset><br>
<p class="btns"><input type="submit" value="Connexion" class="button-3" /></p>
</form>
<a href="./inscription.php">Pas encore inscrit ?</a><br><br>
</div>
</section>
</div>
<?php
}
else { //Check de l'identification
$message='';
$data = check_Password();
if (empty($_POST['pseudo']) || empty($_POST['password']) ) {
$message = '
<div class="container-fluid">
<section id="content" class="page-content">
<div class="container text-center">
<h2>Echec de connexion</h2><br>
<p>Une erreur s\'est produite pendant votre identification!</p>
<p>Vous devez remplir tous les champs</p>
<p>Cliquez <a href="./connexion.php">ici</a> pour revenir à la page de connexion.</p>
</div>
</section>
</div>';
}
else { //Validation de l'accès
if ($data['mdp'] == /*md5*/($_POST['password'])) {
$_SESSION['pseudo'] = $data['pseudo'];
$_SESSION['privilege'] = $data['privilege'];
$_SESSION['ideleve'] = $data['ideleve'];
$message = '
<div class="container-fluid">
<section id="content" class="page-content">
<div class="container text-center">
<h2>Connexion réussie!</h2><br>
<p>Bienvenue '.$data['pseudo'].',<br>Vous êtes maintenant connecté!</p>
<p>Cliquez <a href="./espace_membre.php">ici</a> pour accéder a votre espace membre!</p>
</div>
</section>
</div>';
}
else {
$message = '
<div class="container-fluid">
<section id="content" class="page-content">
<div class="container text-center">
<h2>Echec de connexion</h2><br>
<p>Une erreur s\'est produite pendant votre identification!</p>
<p>Le mot de passe ou le pseudo entré n\'est pas correct.</p>
<p>Cliquez <a href="./connexion.php">ici</a> pour revenir à la page de connexion.</p>
</div>
</section>
</div>';
}
}
echo $message;
}
include_once('./vue/membre/connexion.php');

View File

@@ -0,0 +1,23 @@
<?php
include_once('./modele/membre/espace.php');
$titre = "Index du forum";
//Initialisation de deux variables
$totaldesmessages = 0;
$categorie = NULL;
$TotalDesMembres = get_MemberCount();
$data = get_LastMember();
$derniermembre = stripslashes(htmlspecialchars($data['pseudo']));
?>
<div class="container-fluid">
<section id="content" class="page-content">
<div class="container text-center">
<h2>Espace Membre</h2><br>
<h5>Qui est en ligne ?</h5>
<p>Le site comptent <strong> <?php echo $TotalDesMembres;?></strong> membres.</p><br>
<a href="./profil.php?m=<?php echo $data['ideleve']?>&amp;action=consulter"><?php echo $derniermembre;?></a> est le dernier membre.</p>
</div>
</section>
</div>
<?php
include_once('./vue/membre/espace.php');

View File

@@ -0,0 +1,117 @@
<?php
include_once('./modele/membre/inscription.php');
$titre="Enregistrement";
if ($id!=0) erreur(ERR_IS_CO);
if (empty($_POST['pseudo'])) // Si on la variable est vide, on peut considérer qu'on est sur la page de formulaire
{
?>
<div class="container-fluid">
<section id="content" class="page-content">
<div class="container text-center">
<h2>Inscription</h2>
<form method="post" action="inscription.php" enctype="multipart/form-data">
<label class="labelI" >*Pseudo</label><br><input name="pseudo" type="text" id="pseudo" placeholder=" Entre 3 à 15 caractères"/><br><br>
<label class="labelI" for="password">*Mot de Passe :</label><input type="password" name="password" id="password" placeholder="Mot de passe"/>
<label class="labelI" for="confirm">*Confirmer :</label><input type="password" name="confirm" id="confirm" placeholder="Confirmation"/><br>
</fieldset>
<label class="labelI" for="email">*Votre adresse email :</label><br><input type="email" name="email" id="email" placeholder="email@mail.fr"/><br>
</fieldset>
<label class="labelI" for="localisation">Localisation :</label><br><input type="text" name="localisation" id="localisation" placeholder="Adresse" /><br>
<label class="labelI" for="prenom">Prenom :</label><br><input type="text" name="prenom" id="prenom" placeholder="Prénom"/><br>
<label class="labelI" for="nom">Nom :</label><br><input type="text" name="nom" id="nom" placeholder="Nom"/><br>
<label class="labelI" for="sexe">Sexe :</label><br>
<div><input type="radio" id="femme" name="sexe" value="FEMME" checked><label for="femme">Femme</label>
<input type="radio" id="homme" name="sexe" value="HOMME"><label for="homme">Homme</label></div>
<label class="labelI" for="age">Age :</label><br><input type="number" name="age" id="age" min="5" max="90" placeholder="Age"/><br>
<fieldset>
<label class="labelI" for="galop">Galop :</label><br><input type="number" name="galop" id="galop" min="0" max="7" placeholder="1 à 7"/><br>
</fieldset>
<fieldset><legend class="colorbold marg3 pad1">Profil sur le forum</legend>
<label for="avatar">Choisissez votre avatar :</label><br><input type="file" name="avatar" id="avatar" accept=".png, .jpg, .jpeg, gif" /><br>
</fieldset><br>
<p class="btns"><input type="submit" value="S'inscrire" class="button-3"/></p><br>
<p>Les champs précédés d'un * sont obligatoires</p>
</form>
</div>
</section>
</div>
<?php
}
else //On est dans le cas traitement
{
$pseudo_erreur1 = NULL;$pseudo_erreur2 = NULL;
$email_erreur1 = NULL;
$mdp_erreur = NULL;
$avatar_erreur3 = NULL;
//On récupère les variables
$i = 0;
$extensions_valides = array( 'jpg' , 'jpeg' , 'gif' , 'png' );
$pseudo=$_POST['pseudo'];
$email = $_POST['email'];
$localisation = $_POST['localisation'];
$prenom = $_POST['prenom'];
$nom = $_POST['nom'];
$pass = /*md5*/($_POST['password']);
$confirm = /*md5*/($_POST['confirm']);
//Verification des champs formulaire
$pseudo_free = get_checkPseudo();
if(!$pseudo_free)
{
$pseudo_erreur1 = "Votre pseudo est déjà utilisé par un membre";
$i++;
}
if (strlen($pseudo) < 3 || strlen($pseudo) > 15)
{
$pseudo_erreur2 = "Votre pseudo est soit trop grand, soit trop petit";
$i++;
}
if ($pass != $confirm || empty($confirm) || empty($pass))
{
$mdp_erreur = "Votre mot de passe et la confirmation sont diffèrent, ou sont vides";
$i++;
}
$mail_free = get_checkMail();
if(!$mail_free)
{
$email_erreur1 = "Votre adresse email est déjà utilisée par un membre";
$i++;
}
$extension_upload = strtolower(substr( strrchr($_FILES['avatar']['name'], '.') ,1));
if (!in_array($extension_upload,$extensions_valides) )
{
$avatar_erreur3 = "Extension de l'avatar incorrecte";
$i++;
}
if ($i==0)
{
?>
<div class="text-center">
<h2>Inscription terminée</h2>
<p>Bienvenue <?php echo stripslashes(htmlspecialchars($_POST['pseudo'])); ?> vous êtes maintenant inscrit sur le forum!</p>
<p>Cliquez <a href="./espace_membre.php">ici</a> pour revenir dans votre espace membre</p>
</div>
<?php
post_Registre();
//Et on définit les variables de sessions
$_SESSION['pseudo'] = $pseudo;
$_SESSION['ideleve'] = $bdd->lastInsertId();
$_SESSION['privilege'] = 2;
}
else
{
?>
<div class="text-center"><h2>Inscription interrompue</h2><br>
<h5><?php echo $i; ?> erreurs se sont produites lors de votre incription</h5><br>
<ul>
<p><?php echo $email_erreur1; ?></p>
<p><?php echo $pseudo_erreur1; $pseudo_erreur2; ?></p>
<p><?php echo $mdp_erreur; ?></p>
<p><?php echo $avatar_erreur3; ?></p>
</ul><br>
<p>Cliquez <a href="./inscription.php">ici</a> pour recommencer</p>
</div>
<?php
}
}
include_once('./vue/membre/inscription.php');

View File

@@ -0,0 +1,189 @@
<?php
include_once('./modele/membre/profil.php');
$titre="Profil";
//On récupère la valeur de nos variables passées par URL
$action = isset($_GET['action'])?htmlspecialchars($_GET['action']):'consulter';
$membre = isset($_GET['m'])?(int) $_GET['m']:'';
switch($action)
{
case "consulter":
//On affiche les infos sur le membre
$data = get_MemberInfo();
?>
<div class="container-fluid">
<section id="content" class="page-content">
<div class="container text-center">
<h2>Profil</h2><br>
<strong>Pseudo</strong><br>
<?php echo stripslashes(htmlspecialchars($data['pseudo'])); ?><br><br>
<strong>Avatar</strong><br>
<img src=".<?php echo $data['imageeleve']; ?>" alt="Acun avatar" /><br><br>
<p class="text-2" >
<strong>Email</strong><br>
<a class=link2 href="mailto:<?php echo stripslashes($data['adressemail']); ?>"> <?php echo stripslashes(htmlspecialchars($data['adressemail'])); ?></a><br/>
<strong>Prénom</strong><br>
<?php echo stripslashes(htmlspecialchars($data['prenom'])); ?><br>
<strong>Nom</strong><br>
<?php echo stripslashes(htmlspecialchars($data['nom'])); ?><br>
<strong>Age</strong><br>
<?php echo stripslashes(htmlspecialchars($data['age'])); ?><br>
<strong>Galop</strong><br>
<?php echo stripslashes(htmlspecialchars($data['galop'])); ?><br>
<strong>Adresse</strong><br>
<?php echo stripslashes(htmlspecialchars($data['adresse'])); ?><br><br>
<strong>Inscrit depuis :</strong><br>
<?php echo date('d F Y', strtotime(str_replace('/','-',$data['dateenregistre']))); ?><br/><br/>
</p>
</div>
</section>
</div>
<?php
break;
case "modifier":
if (empty($_POST['sent'])) // Si on la variable est vide, on peut considérer qu'on est sur la page de formulaire
{
//On commence par s'assurer que le membre est connecté
//if ($id==0) erreur(ERR_IS_NOT_CO);
//Les infos du membre
$data = get_MemberInfoId();
?>
<div class="container-fluid">
<section id="content" class="page-content">
<div class="container text-center">
<form method="post" action="profil.php?action=modifier" enctype="multipart/form-data">
<h2>Edition du profil de <?php echo stripslashes(htmlspecialchars($data['pseudo']));?></h2><br>
<fieldset>
<h3 class="labelI" for="password">Mot de passe</h3>
<label class="labelI" for="password">Nouveau mot de passe</label><br>
<input type="password" name="password" id="password" /><br>
<label class="labelI" for="confirm">*Confirmation du mot de passe</label><br>
<input type="password" name="confirm" id="confirm" /><br>
</fieldset><br><br>
<fieldset><h2 class=colorbold marg3 pad1>Contacts</h2>
<label class="labelI" for="email">Adresse email</label><br>
<input type="text" name="email" id="email" value="<?php echo stripslashes($data['adressemail']); ?>" /><br>
</fieldset><br><br>
<fieldset><h2 class=colorbold marg3 pad1>Informations supplémentaires</h2>
<label class="labelI" for="prenom">Prénom</label><br>
<input type="text" name="prenom" id="prenom" readonly="readonly" value="<?php echo stripslashes($data['prenom']); ?>" /><br>
<label class="labelI" for="nom">Nom</label><br>
<input type="text" name="nom" id="nom" readonly="readonly" value="<?php echo stripslashes($data['nom']); ?>" /><br>
<label class="labelI" for="age">Age</label><br>
<input type="number" name="age" id="age" readonly="readonly" value="<?php echo stripslashes($data['age']); ?>" /><br>
<label class="labelI" for="galop">Galop</label><br>
<input type="number" name="galop" id="galop" readonly="readonly" value="<?php echo stripslashes($data['galop']); ?>" /><br>
<label class="labelI" for="localisation">Localisation</label><br>
<input type="text" name="localisation" id="localisation" value="<?php echo stripslashes($data['adresse']); ?>" />
</fieldset><br><br>
<fieldset><h2 class=colorbold marg3 pad1>Profil sur le forum</h2>
<label class="labelI" for="avatar">Avatar actuel</label><br>
<img src=".<?php echo $data['imageeleve'];?>" alt="pas d avatar" /><br><br>
<strong class="labelI" for="avatar">Nouvelle image : </strong>
<input type="file" name="avatar" id="avatar" accept=".png, .jpg, .jpeg, gif" /><br><br>
<strong><input type="checkbox" name="delete" value="Delete" /> Supprimer mon avatar</strong>
</fieldset><br>
<p>
<input type="submit" value="Modifier mon profil" class="button-3"/><br>
<input type="hidden" id="sent" name="sent" value="1" />
</p><br>
<strong>Les champs avec une * sont obligatoires</strong><br><br>
</form>
</div>
</section>
</div>
<?php
}
else //Sinon on est dans la page de traitement
{
//On déclare les variables
$mdp_erreur = NULL;
$email_erreur1 = NULL;
$avatar_erreur3 = NULL;
//Encore et toujours notre belle variable $i :p
$i = 0;
$temps = time();
$email = $_POST['email'];
$localisation = $_POST['localisation'];
$pass = /*md5*/($_POST['password']);
$confirm = /*md5*/($_POST['confirm']);
$extensions_valides = array( 'jpg' , 'jpeg' , 'gif' , 'png' );
//Vérification des champs du formulaire
if ($pass != $confirm || empty($confirm) || empty($pass))
{
$mdp_erreur = "Votre mot de passe et votre confirmation sont different ou sont vides";
$i++;
}
$data = get_checkMail();
if (strtolower($data['adressemail']) != strtolower($email))
{
$mail_free = get_checkCopyMail();
if(!$mail_free)
{
$email_erreur1 = "Votre adresse email est déjà utilisé par un membre";
$i++;
}
}
$data = get_Pseudo();
$extension_upload = strtolower(substr( strrchr($_FILES['avatar']['name'], '.') ,1));
if (!in_array($extension_upload,$extensions_valides) )
{
$i++;
$avatar_erreur3 = "Extension de l'avatar incorrecte";
}
if ($i == 0) // Si $i est vide, il n'y a pas d'erreur sur l'avatar
{
if (!empty($_FILES['avatar']['size']))
{
post_UpdateAvatar($data['pseudo']);
}
if (isset($_POST['delete']))
{
post_RemoveAvatar();
}
?>
<div class="container-fluid">
<section id="content" class="page-content">
<div class="container text-center">
<h2>Modification de profil terminée</h2><br>
<p>Votre profil a été modifié avec succès !</p>
<p>Cliquez <a href="./profil.php?action=modifier">ici</a>
pour revenir à ton profil</p>
</div>
</section>
</div>
<?php
//On modifie la table
post_UpdateMember();
}
else
{
?>
<div class="container-fluid">
<section id="content" class="page-content">
<div class="container text-center">
<h2>Modification de profil interrompue</h2><br>
<h5><?php echo $i; ?> erreurs se sont produites lors de votre modification</h5>
<ul>
<?php
echo'<p>' .$email_erreur1. '' .$email_erreur2. '</p>
<p>' .$avatar_erreur. '' .$avatar_erreur1. '</p>
<p>' .$avatar_erreur2. '' .$avatar_erreur3. '</p>
<p>' .$mdp_erreur. '</p>';
?>
</ul>
<p> Cliquez <a href="./profil.php?action=modifier">ici</a> pour recommencer</p>
</div>
</section>
</div>
<?php
}
}
break;
default; //Si jamais c'est aucun de ceux là c'est qu'il y a eu un problème :o
echo'<p>Cette action est impossible</p>';
}
include_once('./vue/membre/profil.php');

51
controleur/vitrine.php Normal file
View File

@@ -0,0 +1,51 @@
<?php
// On demande les 5 derniers billets (modèle)
include_once('./modele/vitrine.php');
$articlesCav = get_ArticlesCavalier(0, 3);
// On effectue du traitement sur les données (controleur)
// Ici, on doit surtout sécuriser l'affichage
foreach($articlesCav as $cle => $article)
{
$articles[$cle]['imagearticle'] = ($article['imagearticle']);
$articles[$cle]['libelle'] = ($article['libelle']);
$articles[$cle]['description'] = ($article['description']);
}
$articlesChvT = get_ArticlesChevalT(0, 3);
// On effectue du traitement sur les données (controleur)
// Ici, on doit surtout sécuriser l'affichage
foreach($articlesChvT as $cle => $article)
{
$articles[$cle]['imagearticle'] = ($article['imagearticle']);
$articles[$cle]['libelle'] = ($article['libelle']);
$articles[$cle]['description'] = ($article['description']);
}
$articlesChvR = get_ArticlesChevalR(0, 3);
// On effectue du traitement sur les données (controleur)
// Ici, on doit surtout sécuriser l'affichage
foreach($articlesChvR as $cle => $article)
{
$articles[$cle]['imagearticle'] = ($article['imagearticle']);
$articles[$cle]['libelle'] = ($article['libelle']);
$articles[$cle]['description'] = ($article['description']);
}
$categories = get_ArticlesCat(0, 3);
// On effectue du traitement sur les données (controleur)
// Ici, on doit surtout sécuriser l'affichage
foreach($categories as $cle => $categorie)
{
$categories[$cle]['idcategorie'] = ($categorie['idcategorie']);
$categories[$cle]['libelle'] = ($categorie['libelle']);
}
$articles = get_Articles(0, 3);
// On effectue du traitement sur les données (controleur)
// Ici, on doit surtout sécuriser l'affichage
foreach($articles as $cle => $article)
{
$articles[$cle]['imagearticle'] = ($article['imagearticle']);
$articles[$cle]['libelle'] = ($article['libelle']);
$articles[$cle]['description'] = ($article['description']);
$articles[$cle]['idcategorie'] = ($article['idcategorie']);
}
// On affiche la page (vue)
include_once('./vue/vitrine.php');

File diff suppressed because it is too large Load Diff

View File

@@ -1,81 +1,39 @@
.bg1 {
background:#f7f5e2;
}
header {
background-image:url("../images/autres/footer.jpg");
}
footer {
background-image:url("../images/autres/footer.jpg");
margin: 0 auto;
overflow:hidden;
}
.container-fluid{
min-height: 80vh;
margin:0 !important;
padding:0 !important;
}
.bg1 { background:#f7f5e2; }
header { background-image:url("../images/autres/footer.jpg"); }
footer { background-image:url("../images/autres/footer.jpg"); margin:0 auto; overflow:hidden; }
.numbox{
background-image:url("../images/autres/calendrier.png");
width:72px;
height:78px;
overflow:hidden;
float:left;
margin: 0 19px 0px 10px;
background-image:url("../images/autres/calendrier.png");
width:72px; height:78px; overflow:hidden; float:left;
margin:0 19px 0 10px;
}
.numbox span {
font:18px/22px 'IM Fell French Canon', sans-serif;
color:#fff;
font-style:italic;
text-align:center;
margin-top:4px;
display:block;
.numbox span{
font:18px/22px 'IM Fell French Canon', sans-serif;
color:#fff; font-style:italic; text-align:center; margin-top:4px; display:block;
}
.numbox strong {
font:30px/36px Georgia, "Times New Roman", Times, serif;
color:#f6a82d;
font-weight:bold;
text-align:center;
margin-top:-1px;
display:block;
}
.img-thumbnailShop{
display: block;
}
.img-thumbnailEvent{
display: block;
.numbox strong{
font:30px/36px Georgia, "Times New Roman", Times, serif;
color:#f6a82d; font-weight:bold; text-align:center; margin-top:-1px; display:block;
}
.img-thumbnailShop, .img-thumbnailEvent, .img-thumbnailEventCat { display:block; }
.clear { clear:both; line-height:0; font-size:0; }
.map-responsive { overflow:hidden; padding-bottom:56.25%; position:relative; }
.map-responsive iframe { left:0; top:0; position:absolute; }
.img-thumbnailEventCat{
display: block;
}
.clear {
clear:both;
line-height:0;
font-size:0;
}
.map-responsive {
overflow:hidden;
padding-bottom:56.25%;
position:relative;
}
/* --- Carousel --- */
.map-responsive iframe {
left:0;
top:0;
position:absolute;
}
.carousel {
height: 60%;
}
.carousel-indicators li {
background-color: gray!important;
/* BS5: les indicateurs sont des <button data-bs-target="..."> */
.carousel-indicators [data-bs-target] {
background-color: gray !important;
}
.carousel-indicators .active {
background-color: black!important;
background-color: black !important;
}
/* BS5: les icônes sont des SVG en background-image -> background-color na plus deffet.
Pour les “griser”, utiliser un filter (minimaliste) */
.carousel-control-prev-icon,
.carousel-control-next-icon{
background-color: gray!important;
}
.carousel-control-prev-icon{
background-color: gray!important;
/* background-color: gray !important; <-- obsolète en BS5 */
filter: invert(50%) grayscale(100%);
}

View File

@@ -7,16 +7,16 @@ if ($id==0) erreur(ERR_IS_NOT_CO);
?>
<div class="container-fluid">
<section id="content" class="page-content">
<div class="container text-center">
<h2>Déconnexion réussie!</h2><br>
<h4>A Bientôt</h4><br>
<p>Vous êtes à présent déconnecté <br/>
<!--Cliquez <a href="'.htmlspecialchars($_SERVER['HTTP_REFERER']).'">ici</a> pour revenir à la page précédente.<br>-->
Cliquez <a href="./espace_membre.php">ici</a> pour revenir à la page principale</p><br>
</div>
</div>
</section>
<section id="content" class="page-content">
<div class="container text-center">
<h2>Déconnexion réussie!</h2><br>
<h4>A Bientôt</h4><br>
<p>Vous êtes à présent déconnecté <br/>
<!--Cliquez <a href="'.htmlspecialchars($_SERVER['HTTP_REFERER']).'">ici</a> pour revenir à la page précédente.<br>-->
Cliquez <a href="./espace_membre.php">ici</a> pour revenir à la page principale</p><br>
</div>
</div>
</section>
</div>
<?php
include("./vue/footer.html");

View File

@@ -1,9 +1,8 @@
<?php
include_once('./vue/header.html');
include_once('./modele/connexion_sql.php');
if (!isset($_GET['section']) OR $_GET['section'] == 'index')
{
include_once('./controleur/membre/espace/index.php');
}
include_once('./vue/footer.html');
include_once('./vue/header.html');
include_once('./config/connexion_sql.php');
if (!isset($_GET['section']) OR $_GET['section'] == 'index')
{
include_once('./controleur/membre/espace.php');
}
include_once('./vue/footer.html');

View File

@@ -1,9 +1,9 @@
<?php
include_once('./vue/header.html');
include_once('./modele/connexion_sql.php');
include_once('./vue/header.html');
include_once('./config/connexion_sql.php');
if (!isset($_GET['section']) OR $_GET['section'] == 'index')
{
include_once('./controleur/evenement/index.php');
include_once('./controleur/evenement.php');
}
include_once('./vue/footer.html');
include_once('./vue/footer.html');

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Binary file not shown.

View File

@@ -1,5 +1,6 @@
<?php
include_once('./vue/header.html');
include_once('./vue/home/index.html');
include_once('./vue/footer.html');
include_once('./vue/header.html');
include_once('./vue/home.html');
include_once('./vue/contact.html');
include_once('./vue/footer.html');
?>

View File

@@ -1,9 +1,8 @@
<?php
include_once('./vue/header.html');
include_once('./modele/connexion_sql.php');
if (!isset($_GET['section']) OR $_GET['section'] == 'index')
{
include_once('./controleur/membre/inscription/index.php');
}
include_once('./vue/footer.html');
include_once('./vue/header.html');
include_once('./config/connexion_sql.php');
if (!isset($_GET['section']) OR $_GET['section'] == 'index')
{
include_once('./controleur/membre/inscription.php');
}
include_once('./vue/footer.html');

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

12
modele/actualite.php Normal file
View File

@@ -0,0 +1,12 @@
<?php
function get_News()
{
global $bdd;
$req = $bdd->prepare('SELECT * FROM Event WHERE lieu="ORVEAU" ');
$req->execute();
$event1 = $req->fetchAll();
return $event1;
}

12
modele/evenement.php Normal file
View File

@@ -0,0 +1,12 @@
<?php
function get_events()
{
global $bdd;
$req = $bdd->prepare('SELECT * FROM Event WHERE dateevent > TO_DAYS(NOW()) AND idtype <> 1 ORDER BY dateevent ASC');
$req->execute();
$eventsAll = $req->fetchAll();
return $eventsAll;
}

64
modele/vitrine.php Normal file
View File

@@ -0,0 +1,64 @@
<?php
function get_ArticlesCavalier()
{
global $bdd;
$req = $bdd->prepare('SELECT * FROM Article');
$req->execute();
$articlesCav = $req->fetchAll();
return $articlesCav;
}
function get_ArticlesChevalT()
{
global $bdd;
$req = $bdd->prepare('SELECT * FROM Article WHERE idcategorie=2');
$req->execute();
$articlesChvT = $req->fetchAll();
return $articlesChvT;
}
function get_ArticlesChevalR()
{
global $bdd;
$req = $bdd->prepare('SELECT * FROM Article WHERE idcategorie=3');
$req->execute();
$articlesChvR = $req->fetchAll();
return $articlesChvR;
}
function get_ArticlesCat()
{
global $bdd;
$req = $bdd->prepare('SELECT * FROM CategorieArticle ');
$req->execute();
$categories = $req->fetchAll();
return $categories;
}
function get_Articles()
{
global $bdd;
$req = $bdd->prepare('SELECT * FROM Article ');
$req->execute();
$articles = $req->fetchAll();
return $articles;
}

View File

@@ -1,5 +1,5 @@
<?php
include_once('./vue/header.html');
include_once('./vue/pension/index.html');
include_once('./vue/footer.html');
include_once('./vue/header.html');
include_once('./vue/pension.html');
include_once('./vue/footer.html');
?>

View File

@@ -1,5 +1,5 @@
<?php
include_once('./vue/header.html');
include_once('./vue/policy/index.html');
include_once('./vue/footer.html');
include_once('./vue/header.html');
include_once('./vue/policy.html');
include_once('./vue/footer.html');
?>

View File

@@ -1,9 +1,8 @@
<?php
include_once('./vue/header.html');
include_once('./modele/connexion_sql.php');
if (!isset($_GET['section']) OR $_GET['section'] == 'index')
{
include_once('./controleur/membre/profil/index.php');
}
include_once('./vue/footer.html');
include_once('./vue/header.html');
include_once('./config/connexion_sql.php');
if (!isset($_GET['section']) OR $_GET['section'] == 'index')
{
include_once('./controleur/membre/profil.php');
}
include_once('./vue/footer.html');

4
robots.txt Normal file
View File

@@ -0,0 +1,4 @@
User-agent: *
Disallow: /
Sitemap: https://ecurie.cunatbrule.fr/sitemap.xml

4
sitemap.xml Normal file
View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<urlset
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
</urlset>

View File

@@ -1,9 +1,8 @@
<?php
include_once('./vue/header.html');
include_once('./modele/connexion_sql.php');
if (!isset($_GET['section']) OR $_GET['section'] == 'index')
{
include_once('./controleur/vitrine/index.php');
}
include_once('./vue/footer.html');
include_once('./vue/header.html');
include_once('./config/connexion_sql.php');
if (!isset($_GET['section']) OR $_GET['section'] == 'index')
{
include_once('./controleur/vitrine.php');
}
include_once('./vue/footer.html');

133
vue/activite.html Normal file
View File

@@ -0,0 +1,133 @@
<section id="content" class="container">
<div class="text-center">
<br><h2>Le poney club</h2><hr>
<img class="img-thumbnail rounded" src="./images/activites/poney1.jpg" alt="" ><br><br>
<p>Votre enfant est intéressé par l'équitation ?<br>
Le poney club accueille votre enfant dès l'âge de 3ans en reprise et dès 2ans en promenade en main.<b>*</b></p>
<div class="row">
<div class="col">
<img class="img-thumbnail rounded" src="./images/activites/poney2.jpg" alt="">
</div>
<div class="col">
<img class="img-thumbnail rounded" src="./images/activites/poney3.jpg" alt="">
</div>
</div><br>
<p>Le poney-club se compose de 16 poneys de tailles différentes.<br>
Pour permettre à votre enfant de découvrir un sport ludique, passionnant et qui lui apprendra à devenir responsable.</p><br>
<img class="img-thumbnail rounded" src="./images/activites/poney4.jpg" alt=""><br>
<h6><b>*</b> Renseignements à l'accueil</h6>
</div><hr>
</section>
<section id="content" class="container">
<div class="text-center">
<br><h2>Equitation éthologique</h2><hr>
<p>L'équitation éthologique offre une approche plus naturelle du cheval<br>
En mettant en valeur l'importance du travail au sol pour instaurer une relation basée sur la confiance et le respect.</p>
<p>Elle permet de développer un climat de confiance bénéfique au travail et à la sécurité,où le cavalier se met à la porté de son cheval et non l'inverse.</p>
<p>A partir de ces acquis nous amenons le cheval à plus de réception et de disponibilité,capable alors de répondre à nos suggestions à tout moment.</p>
<img class="img-thumbnail rounded" src="./images/activites/ethologie.jpg" alt=""><br><br>
<p>Des initiations à l'Equitation Ethologique seront dispensés à l'écurie lors d'après midi animations, ou lors de cours particuliers.</p>
<h6>Renseignements à l'accueil! ;-)</h6>
</div><hr>
</section>
<section id="content" class="container">
<div class="text-center">
<br><h2 class="text-center">Les balades et randonnées</h2><hr>
<img alt="" class="img-thumbnail rounded" src="./images/activites/balade1.jpg" /><br><br>
<p>Vous avez envie de connatre une équitation plus libre qui vous procure des sensations différentes ?<br>
Vous aussi avez rêvé d'évasion ? Alors vous êtes au bon endroit !</p>
<p>De la promenade à l'heure, à la grande randonnée, poneys et chevaux vous emmèneront parcourir le Parc du Gâtinais.<br>
Avec ses hectares de pistes aménagées, les possibilités de promenades sont infinies...</p>
<div class="row">
<div class="col">
<img class="img-thumbnail rounded" src="./images/activites/balade2.jpg" />
</div>
<div class="col">
<img class="img-thumbnail rounded" src="./images/activites/balade3.jpg"/>
</div>
</div>
<br><hr><h2>Les dates de balades et randos</h2><hr>
<p>Balades sur rendez-vous, les prochaines dates de randonnées pour 2018-2019 ne sont pas encore établies</p>
<img class="img-thumbnail rounded" src="./images/activites/balade4.jpg" />
</div><hr>
</section>
<section id="content" class="container">
<div>
<br><h1 class="text-center">Les stages</h1><hr>
<p>Durant les vacances scolaires, sont organisés des stages de prise de connaissance du poney ou du cheval,<br>
de préparation aux Galops ou de perfectionnement, orientés vers la compétition.</p>
<p>les passages de galop se font tous les vendredis de semaine de stage, nous maintenons également tous nos cours pendant les périodes de stages.</p>
<hr><h3 class="text-center">Périodes de stages</h3><hr>
<div class="row">
<div class="col"><h6>Période</h6></div>
<div class="col"><h6>Date</h6></div>
<div class="col"><h6>Tarifs</h6></div>
<div class="w-100"><hr></div>
<div class="col"><p>VACANCES SCOLAIRES</p></div>
<div class="col"><p>Tous les mercredi de 9H à 18H</p></div>
<div class="col"><p>55 € compris 2 H d'équitation</p></div>
<div class="w-100"><hr></div>
<div class="col"><p>Eté à l'écurie</p></div>
<div class="col"><p>Du 10 juillet au 4 aout 2018 <br>Du 20 aout au 1er septembre 2018</p></div>
<div class="col"><p>A définir</p></div>
<div class="w-100"><hr></div>
<div class="col"><p>Eté à Lamotte Beuvron:</p></div>
<div class="col"><p>Du 30 juillet au 04 aout 2018</p></div>
<div class="col"><p>665 € euros tout compris pour les adhérents</p></div>
</div>
<hr><h3 class="text-center">Stage type aux écuries</h3><hr>
<div class="row">
<div class="col">
<ul>
<li>Arrivée à 9h00.</li>
<li>Pratique autour du cheval</li>
<li>Hippologie et Travaux Pratiques</li>
<li>2 ou 3h d'équitation</li>
<li>repas et goûter à emporter</li>
<li>fin de journée de stage 17h30</li>
</ul>
</div>
<div class="col">
<img class="img-thumbnail" alt=""src="./images/activites/stage1.jpg">
</div>
</div>
<hr><h3 class="text-center">Stages d'été à Lamotte Beuvron</h3><hr>
<p>Durant les deux premières semaines du mois d'août, nous organisons un stage à Lamotte Beuvron dans le parc fédéral de la fédération française déquitation.</p>
<p>Chaque année, le parc fédéral accueille des centres équestres de toutes les régions avec leurs cavaliers et leurs chevaux,<br>
pour permettre aux centres équestres de profiter des installations misent à leur disposition.</p>
<div class="row">
<div class="col">
<ul>
<h6>Exemple d'une journée a LAMOTTE BEUVRON</h6>
<li>8h00 : soins des chevaux (eau, granulés, paillage des boxes)</li>
<li>8h30 : petit déjeuner</li>
<li>10h00 à 11h30 : équitation</li>
<li>12h00 : soins des chevaux (eau et granulés)</li>
<li>12h30 : déjeuner</li>
<li>14h à 15h30 : équitation</li>
<li>16h00 : goûter</li>
<li>16h30 à 18h00 : piscine</li>
<li>19h30 : Dîner</li>
<li>20h30 : jeu en groupe</li>
<li>22h30 : dodo</li>
</ul>
</div>
<div class="col">
<ul>
<h6>Equipement Sportif</h6>
<li>10 carrières modulables de saut d'obstacles</li>
<li>5 rectangles de dressage</li>
<li>9 terrains de horse-ball</li>
<li>3 manèges de 4 000 m2</li>
<li>2 terrains de polo</li>
<li>1 cross national de 25 hectares</li>
<li>1 piste de galop</li>
</ul>
</div>
</div><br>
<div class="ratio ratio-16x9">
<iframe src="https://www.youtube.com/embed/XRyV1frFE48" title="Vidéo Lamotte Beuvron" allow="autoplay; encrypted-media" allowfullscreen loading="lazy"></iframe>
</div><br>
<h6 class="text-center"><b>*</b> Les inscriptions se font à l'accueil ou par téléphone<br>Pour les tarifs non adhérents: nous contacter, Renseignements à l'accueil ou par téléphone</h6>
</div><hr>
</section>

20
vue/actualite.php Normal file
View File

@@ -0,0 +1,20 @@
<section id="content" class="container">
<div>
<br><h2 class="text-center">Dernières nouvelles</h2><hr>
<ul class="list-unstyled">
<?php foreach($event1 as $event){ ?>
<li class="border border-secondary rounded p-2 m-3 bg-white">
<div class="numbox img-indent3">
<span><?php setlocale (LC_TIME, 'fr_FR.utf-8','fra');echo strftime("%b", strtotime($event['dateevent'])); ?></span>
<strong><?php echo strftime("%#d", strtotime($event['dateevent'])); ?></strong>
</div>
<div class="ms-3 flex-fill">
<h4 class="card-title"><?php echo $event['nom']; ?></h4>
<p><?php echo $event['description']; ?></p><br><br>
<!--<p class="blockquote-footer">Posté par Admin <span>46 Commentaire(s)</span></p>-->
</div>
</li>
<?php } ?>
</ul>
</div><hr>
</section>

420
vue/centre.html Normal file
View File

@@ -0,0 +1,420 @@
<section id="content" class="container">
<div>
<br><h2 class="text-center">Le centre équestre</h2><hr>
<p>Notre centre équestre est agréé Ecole Française d'Equitation et encadré par 2 moniteurs diplômés d'Etat.</p>
<p>La cavalerie du centre équestre est composée de 12 chevaux adaptés au niveau de chaque cavalier.<br>
L'enseignement de l'équitation est réparti sur plusieurs cours en fonction du niveau équestre du cavalier, qu'il soit débutant ou confirmé.</p>
<p>Les cours permettrons à chaque cavalier de progresser au travers de diverses disciplines équestres (dressage, obstacles, cross, etc…),<br>
ce qui l'amènera s'il le désir, à la préparation des examens fédéraux (galops 1 à 7), ainsi qu'à la compétition.<br>
Le club met à votre disposition des installations modernes et agréables.</p>
<hr><h2 class="text-center">Les installations</h2><hr>
<p>Le Centre Equestre vous propose diverses installations accéssibles a tous.<br>
Que se soit pour les cours les concours ou vos cheveaux tous est fait pour travailler et pour le bien de votre cheval.</p>
<!--Description d'installation POP-UP Lien-->
<ul>
<li><a class="btn" title="Carrières d'obstacles" role="button" data-bs-toggle="modal" data-bs-target="#myModal1">2 Carrières d'obstacles : 90 x 40 / 80 x 50</a></li>
<li><a class="btn" title="Carrière d'entraînement" role="button" data-bs-toggle="modal" data-bs-target="#myModal2">1 Carrière d'entraînement : 50 x 40</a></li>
<li><a class="btn" title="Carrière de dressage" role="button" data-bs-toggle="modal" data-bs-target="#myModal3">1 Carrière de dressage : 65 x 30</a></li>
<li><a class="btn" title="Manège" role="button" data-bs-toggle="modal" data-bs-target="#myModal4">1 Manège couvert et éclairé : 30m x 20m</a></li>
<li><a class="btn" title="Boxes" role="button" data-bs-toggle="modal" data-bs-target="#myModal5">37 Boxes de 3m x 3m</a></li>
<li><a class="btn" title="Stabulation" role="button" data-bs-toggle="modal" data-bs-target="#myModal6">1 Stabulation</a></li>
<li><a class="btn" title="Paddocks" role="button" data-bs-toggle="modal" data-bs-target="#myModal7">7 Paddocks avec ou sans abris et 2 prés</a></li>
<li><a class="btn" title="Rond de longe" role="button" data-bs-toggle="modal" data-bs-target="#myModal8">1 Rond de longe</a></li>
</ul>
<!-- Modal1 -->
<div class="modal fade" id="myModal1" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content bg1">
<div class="modal-header">
<h6 class="modal-title" id="exampleModalCenterTitle">2 Carrières d'obstacles : 90 x 40 / 80 x 50</h6>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<img class="img-thumbnail" src="./images/centre/obstacle.jpg">
<p></p>
</div>
</div>
</div>
</div>
<!-- Modal2 -->
<div class="modal fade" id="myModal2" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content bg1">
<div class="modal-header">
<h6 class="modal-title" id="exampleModalCenterTitle">Carrière d'entraînement : 50 x 40</h6>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<img class="img-thumbnail" src="./images/centre/carriere.jpg">
<p></p>
</div>
</div>
</div>
</div>
<!-- Modal3 -->
<div class="modal fade" id="myModal3" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content bg1">
<div class="modal-header">
<h6 class="modal-title" id="exampleModalCenterTitle">Carrière de dressage : 65 x 30</h6>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<img class="img-thumbnail" src="./images/centre/dressage.jpg">
<p></p>
</div>
</div>
</div>
</div>
<!-- Modal4 -->
<div class="modal fade" id="myModal4" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content bg1">
<div class="modal-header">
<h6 class="modal-title" id="exampleModalCenterTitle">Manège couvert et éclairé 30m x 20m</h6>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<img class="img-thumbnail" src="./images/centre/manege.jpg">
<p></p>
</div>
</div>
</div>
</div>
<!-- Modal5 -->
<div class="modal fade" id="myModal5" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content bg1">
<div class="modal-header">
<h6 class="modal-title" id="exampleModalCenterTitle">Boxes</h6>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<img class="img-thumbnail" src="./images/centre/boxe.jpg">
<p></p>
</div>
</div>
</div>
</div>
<!-- Modal6 -->
<div class="modal fade" id="myModal6" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content bg1">
<div class="modal-header">
<h6 class="modal-title" id="exampleModalCenterTitle">Stabulation pour poneys ou poulinage</h6>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<img class="img-thumbnail" src="./images/centre/stabulation.jpg">
</div>
</div>
</div>
</div>
<!-- Modal7 -->
<div class="modal fade" id="myModal7" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content bg1">
<div class="modal-header">
<h6 class="modal-title" id="exampleModalCenterTitle">Paddocks et Prés</h6>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<img class="img-thumbnail" src="./images/centre/paddock.jpg">
<p></p>
</div>
</div>
</div>
</div>
<!-- Modal8 -->
<div class="modal fade" id="myModal8" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content bg1">
<div class="modal-header">
<h6 class="modal-title" id="exampleModalCenterTitle">Rond de longe</h6>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<img class="img-thumbnail" src="./images/centre/rond.jpg">
<p></p>
</div>
</div>
</div>
</div>
<!-- FinModal -->
<hr><h2 class="text-center">Les enseignants</h2><hr>
<div class="row text-center">
<div class="col">
<img class="img-thumbnail rounded" alt="" src="./images/centre/jean_philipe.jpg">
<h5>Jean-Philippe</h5><h6>Monitorat BEES1 obtenu en 2004 / Responsable du Centre Equestre</h6>
</div>
<div class="col">
<img class="img-thumbnail rounded" alt="" src="./images/centre/marianne.jpg">
<h5>Marianne</h5><h6>Monitorat BPJEPS obtenu en 2012</h6>
</div>
</div>
<hr><h2 class="text-center">Les sponsors 2017-2018</h2><hr>
<div class="row text-center">
<div class="col">
<img class="img-thumbnail rounded" alt="" src="./images/sponsors/juriscopr.jpg">
<h5>JURISCOPRO</h5><h6>Gestion syndic de copropriété, vente et location à Etam</h6>
</div>
<div class="col">
<img class="img-thumbnail rounded" alt="" src="./images/sponsors/agralys-thoreau.jpg">
<h5>AGRALYS-THOREAU</h5><h6>fournisseur d'aliments</h6>
</div>
<div class="col">
<img class="img-thumbnail rounded" alt="" src="./images/sponsors/ramsay.jpg">
<h5>RAMSAY SANTE</h5><a href="http://ramsaygds.fr/" target="_blank">Site Web</a>
</div>
<div class="col">
<img class="img-thumbnail rounded" alt="" src="./images/sponsors/bprp.jpg">
<h5>BANQUE POPULAIRE RIVES DE PARIS</h5>
</div>
</div><hr>
</div>
</section>
<section id="content" class="container">
<div>
<h2 class="text-center">Tarifs 2018-2019</h2><hr>
<div id="carouselExampleIndicators" class="carousel slide" data-bs-ride="carousel" data-bs-interval="10000">
<div class="carousel-indicators">
<button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="0" aria-label="Slide 1" class="active" aria-current="true"></button>
<button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="1" aria-label="Slide 2"></button>
<button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="2" aria-label="Slide 3"></button>
<button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="3" aria-label="Slide 4"></button>
</div>
<div class="carousel-inner text-center" >
<div class="carousel-item active">
<div class="row">
<div class="col"><img src="./images/tarifs/Tarif1.jpg" class="img-thumbnail"></div>
<div class="w-100"></div>
<div class="col"><h3><br>Cotisations</h3></div>
<div class="w-100"></div>
<div class="col text-right">Baby poney de 2 à 4 ans</div>
<div class="col text-left">offerte pour la 1ere carte valable 3 mois</div>
<div class="w-100"></div>
<div class="col text-right">Moins de 16 ans</div>
<div class="col text-left">125 €</div>
<div class="w-100"></div>
<div class="col text-right">Adultes</div>
<div class="col text-left">158 €</div>
<div class="w-100"></div>
<div class="col text-right">Famille (parents + enfant(s) -18ans)</div>
<div class="col text-left">283 €</div>
<div class="w-100"></div>
<div class="col"><h3><br>Licence Fédéral</h3></div>
<div class="w-100"></div>
<div class="col text-right">Né(e) en 2001 & après</div>
<div class="col text-left">25 €</div>
<div class="w-100"></div>
<div class="col text-right">Né(e) en 2001 & avant</div>
<div class="col text-left">36 €</div>
<div class="w-100"></div>
<div class="col"><h3><br>Licence Compétition</h3></div>
<div class="w-100"></div>
<div class="col text-right">Compétition PRO</div>
<div class="col text-left">330 €</div>
<div class="w-100"></div>
<div class="col text-right">Compétition Amateur</div>
<div class="col text-left">80 €</div>
<div class="w-100"></div>
<div class="col text-right">Compétition Club</div>
<div class="col text-left">Gratuite</div>
<div class="w-100"></div>
<div class="col"><h3><br>Compétition</h3></div>
<div class="w-100"></div>
<div class="col text-right">Engagement</div>
<div class="col text-left">variable</div>
<div class="w-100"></div>
<div class="col text-right">Forfait Concours interne</div>
<div class="col text-left">22 € + prix de l'engagement</div>
<div class="w-100"></div>
<div class="col text-right">Forfait Concours externe</div>
<div class="col text-left">56 € + prix de l'engagement</div>
</div>
</div>
<div class="carousel-item">
<div class="row">
<div class="col"><img src="./images/tarifs/Tarif2.jpg" class="img-thumbnail"></div>
<div class="w-100"></div>
<div class="col"><h3><br>Leçons</h3></div>
<div class="w-100"></div>
<br><div class="col text-center"><h5>Membre non propriétaire d'un équidé</h5></div>
<div class="w-100"></div>
<div class="col text-center">Carte 10h cheval/poney </div>
<div class="col">203 € </div>
<div class="col text-left">**Droit d'accès à 122 € et 10 leçons à 61 €</div>
<div class="w-100"></div>
<div class="col text-center">Carte 10h pour les - de 8 ans</div>
<div class="col">188 €</div>
<div class="col text-left">**Droit d'accès à 112 € et 10 leçons à 56 €</div>
<div class="w-100"></div>
<div class="col text-center">Carte baby poney valable 3 mois</div>
<div class="col">133 €</div>
<div class="col text-left">**Droit d'accès à 75 € et 10 leçons à 38 €</div>
<div class="w-100"></div>
<div class="col text-center">Leçon particulière</div>
<div class="col">2h de carte</div>
<div class="col"></div>
<div class="w-100"></div>
<br><div class="col text-center"><h5>Membre Propriétaire d'un équidé</h5></div>
<div class="w-100"></div>
<div class="col text-center">Cartes 10h</div>
<div class="col">140 €</div>
<div class="col text-left">**Droit d'accès à 90 € et 10 leçons à 45 €</div>
<div class="w-100"></div>
<div class="col text-center">Leçon particulière</div>
<div class="col">2h de carte</div>
<div class="col text-left">Forfait de 15 leçons valable 15 semaines dont 2 séances offertes</div>
<div class="w-100"></div>
<div class="col text-center">Forfait Cheval/ Poney</div>
<div class="col">270 € </div>
<div class="col text-left">**Droit d'accès à 160 € et 10 leçons à 81 €</div>
<div class="w-100"></div>
<div class="col text-center">Forfait pour les - de 8 ans</div>
<div class="col">255 €</div>
<div class="col text-left">**Droit d'accès à 146 € et 10 leçons à 73 €</div>
<div class="w-100"></div>
<div class="col text-center">**Forfait 3 h de cours par semaine</div>
<div class="col">**291€/mois</div>
<div class="col"></div>
</div>
</div>
<div class="carousel-item">
<div class="row">
<div class="col"><img src="./images/tarifs/Tarif3.jpg" class="img-thumbnail"></div>
<div class="w-100"></div>
<div class="col"><h3><br>Coût global mensuel pour un propriétaire</h3></div>
<div class="w-100"></div>
<div class="col">Tous ces tarifs inclus le droit d'accès aux installations sportives et le coût de l'hébergement de l'équidé<br>ainsi que le coût de 2h d'enseignement par semaine sauf ceux indiqués par <b>*</b>.</div>
<div class="w-100"></div>
<div class="col text-center"><h5>Chevaux</h5></div>
<div class="w-100"></div>
<div class="col text-right">Formule box</div>
<div class="col text-left">508 €/mois</div>
<div class="w-100"></div>
<div class="col text-right">Formule box et sorties paddock</div>
<div class="col text-left">538 €/mois</div>
<div class="w-100"></div>
<div class="col text-right">Formule box + copeaux et sorties paddock</div>
<div class="col text-left">568 €/mois</div>
<div class="w-100"></div>
<div class="col text-right">Formule box en 1/2 pension avec un propriétaire</div>
<div class="col text-left">331 €/mois</div>
<div class="w-100"></div>
<div class="col text-center"><h5>Poney</h5></div>
<div class="w-100"></div>
<div class="col text-right">Formule box</div>
<div class="col text-left">456 €/mois</div>
<div class="w-100"></div>
<div class="col text-right">Formule box et sorties paddock</div>
<div class="col text-left">486 €/mois</div>
<div class="w-100"></div>
<div class="col text-center"><h5>Paddock</h5></div>
<div class="w-100"></div>
<div class="col text-right">Formule paddock</div>
<div class="col text-left">285 €/mois</div>
<div class="w-100"></div>
<div class="col text-right">Formule paddock et accès manège</div>
<div class="col text-left">315 €/mois</div>
<div class="w-100"></div>
<div class="col text-right">1/2 pension avec le club</div>
<div class="col text-left">295 €/mois forfait 3 h par semaine</div>
<div class="w-100"></div>
<div class="col text-right">1/4 pension avec le club</div>
<div class="col text-left">195 €/mois forfait 2 h par semaine</div>
<div class="w-100"></div>
<div class="col text-center"><h5>Champmotteux</h5></div>
<div class="w-100"></div>
<div class="col text-right">Formule Pré</div>
<div class="col text-left">250 €/mois</div>
<div class="w-100"></div>
<div class="col text-right">Formule Pré et box</div>
<div class="col text-left">350 €/mois</div>
<div class="w-100"></div>
<br><div class="col"><h6></b>*</b> pas d'enseignement inclus dans ces prestations, possibilité de demander le travail du cheval à raison de 2 ou 3h par semaine</h6></div>
<div class="w-100"></div>
<div class="col"><h6>*D'autres formules peuvent être étudiées, adressez-vous à l'accueil*</h6></div>
</div>
</div>
<div class="carousel-item">
<div class="row">
<div class="col"><img src="./images/tarifs/Tarif5.jpg" class="img-thumbnail"></div>
<div class="w-100"></div>
<div class="col">Inclus le droit d'accès aux installations sportives et le coût de l'enseignement</div>
<div class="w-100"></div>
<div class="col"><h3><br>Cavaliers de Passage</h3></div>
<div class="w-100"></div>
<div class="col text-right">1h Cheval / Poney</div>
<div class="col text-left">30 €</div>
<div class="w-100"></div>
<div class="col text-right">1h Poney Shetland</div>
<div class="col text-left">26 €</div>
<div class="w-100"></div>
<div class="col text-right">Leçon particulière: Cheval / Poney</div>
<div class="col text-left">52 €</div>
<div class="w-100"></div>
<div class="col text-right">Leçon particulière: Poney Shetland</div>
<div class="col text-left">41 €</div>
<div class="w-100"></div>
<div class="col text-right">Pension box Cheval</div>
<div class="col text-left">29 €/jour</div>
<div class="w-100"></div>
<div class="col text-right">Pension box Poney</div>
<div class="col text-left">22 €/jour</div>
<div class="w-100"></div>
<div class="col text-right">Promenade en main 1/2h</div>
<div class="col text-left">11 €</div>
<div class="w-100"></div>
<div class="col text-right">Promenade en main 1h</div>
<div class="col text-left">16 €</div>
<div class="w-100"></div>
<div class="col"><h3><br>Stage dEquitation</h3></div>
<div class="w-100"></div>
<br><div class="col text-center"><h5>Adhérents</h5></div>
<div class="w-100"></div>
<div class="col text-right">1 semaine</div>
<div class="col text-left">282 €</div>
<div class="w-100"></div>
<div class="col text-right">1 journée (1/2 pension)</div>
<div class="col text-left">62 €</div>
<div class="w-100"></div>
<div class="col text-right">1/2 journée</div>
<div class="col text-left">45 €</div>
<div class="w-100"></div>
<br><div class="col text-center"><h5>Cavalier de Passage</h5></div>
<div class="w-100"></div>
<div class="col text-right">1 semaine</div>
<div class="col text-left">307 €</div>
<div class="w-100"></div>
<div class="col text-right">1/2 pension</div>
<div class="col text-left">69 €</div>
<div class="w-100"></div>
<div class="col text-right">1/2 journée</div>
<div class="col text-left">52 €</div>
<div class="w-100"></div>
</div>
</div>
</div><br><br>
<button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span><span class="visually-hidden">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span><span class="visually-hidden">Next</span>
</button>
</div>
<h3>DROIT D'ACCES AU CENTRE EQUESTRE</h3>
<p>L'accès aux installations sportives de l'établissement équestre, pendant les heures d'ouverture, est subordonné au paiement d'un droit d'accès.<br>
Ce droit confère au titulaire l'accès à des fins d'utilisation</p>
<li>des installations à caractère sportif de l'établissement équestre (manège, carrières, parcours, écuries et équipements sportifs recensés),</li>
<li>de contribuer à la « vie du club», de circuler librement à pied dans l'enceinte de l'établissement,</li>
<li>d'accéder aux différentes aires d'évolution mises à disposition par le centre équestre.</li><br>
<p>Ce droit est strictement personnel et incessible.<br>
Ces prestations relèvent du taux de TVA de 5.5%.</p>
<h3>CONDITIONS COMMERCIALES</h3>
<li>Les cartes, forfaits et cotisations annuelles sont personnelles et ne peuvent en aucun cas être cédées ou remboursées.</li>
<li>Toute réservation non annulée 48h à l'avance sera due</li>
<li>Les chèques vacances et les coupons sports sont acceptés</li><br>
<img src="./images/tarifs/cheque.jpg" class="img-thumbnail rounded">
</div><hr>
</section>

22
vue/contact.html Normal file
View File

@@ -0,0 +1,22 @@
<section id="content" class="container">
<div>
<h2 class="text-center">Nos Coordonnées</h2><hr>
<div class="ratio ratio-16x9">
<iframe
src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d2646.700501475971!2d2.296194451504442!3d48.443087679147055!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x47e5c68657aaa85f%3A0xbbe2b815619dc1e!2sLes+%C3%89curies+de+la+Boissi%C3%A8re!5e0!3m2!1sfr!2sfr!4v1476032117547"
style="border:0;" allowfullscreen loading="lazy">
</iframe>
</div><hr>
<div class="row fw-bold text-center">
<div class="col">
<h6>Projet Ecurie<br>
Route de l'Essonne<br>
91170 Viry-Châtillon</h6>
</div>
<div class="col">
<h6>Téléphone : 07 69 93 34 05<br>
E-mail : <a href="mailto:contact@ccbinformatique.fr">contact@ccbinformatique.fr</a></h6>
</div>
</div>
</div><hr>
</section>

19
vue/evenement.php Normal file
View File

@@ -0,0 +1,19 @@
<section id="content" class="container">
<div>
<br><h2 class="text-center">Tous les évenements du club</h2><hr>
<ul class="list-unstyled">
<?php foreach($eventsAll as $event){ ?>
<li class="border border-secondary rounded p-2 m-3 bg-white d-flex flex-column flex-md-row align-items-start">
<img class="img-thumbnail rounded m-2" src=".<?php echo $event['imageevent']; ?>" alt="">
<div class="ms-2 flex-fill">
<h4 class="card-title"><?php echo $event['nom']; ?><br>
<small class="text-muted">Le <?php setlocale (LC_TIME, 'fr_FR.utf-8','fra');echo strftime(" %e %B %Y", strtotime($event['dateevent'])); ?> à <?php echo $event['lieu'];?></small><br>
<!--<a href="event.php#" class="btn btn-link p-0 text-danger">Participer</a>-->
</h4>
<p><?php echo $event['description']; ?></p>
</div>
</li>
<?php } ?>
</ul>
</div><hr>
</section>

View File

@@ -1,19 +1,12 @@
</div>
</div>
</div>
<!--MapsBootsrap-->
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
<footer>
<div class="container pt-4">
<ul class="pagination">
<li class="page-item m-1"><a href="https://www.youtube.com" target="_blank"><img src="./images/autres/yt.png"/></a></li>
<li class="page-item m-1"><a href="https://www.facebook.com" target="_blank"><img src="./images/autres/fb.png"/></a></li>
<li class="page-item m-1"><h5> Ecurie | Cunat-Brulé © 2019-2022 <a href="policy.php">Tous droits réservés</a></h5></li>
</ul>
</div>
</footer>
</div>
</body>
<footer>
<div class="container pt-4">
<ul class="pagination">
<li class="page-item m-1"><a href="https://www.youtube.com" target="_blank"><img src="./images/autres/yt.png"/></a></li>
<li class="page-item m-1"><a href="https://www.facebook.com" target="_blank"><img src="./images/autres/fb.png"/></a></li>
<li class="page-item m-1"><h5> 2019-2022 © Conception, administration et hébergement du site par CCB Informatique - <a href="policy.php">Tous droits réservés</a></h5></li>
</ul>
</div>
</footer>
<script src="./js/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" async></script>
</body>
</html>

View File

@@ -1,76 +1,48 @@
<!doctype html>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Ecurie</title>
<link rel="shortcut icon" type="image/png" href="./images/autres/favicon.png">
<link rel="stylesheet" type="text/css" media="screen" href="./css/style.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<?php
//Attribution des variables de session
include("./controleur/membre/functions.php");
include("./controleur/membre/constants.php");
$lvl=(isset($_SESSION['privilege']))?(int) $_SESSION['privilege']:1;
$id=(isset($_SESSION['ideleve']))?(int) $_SESSION['ideleve']:0;
$pseudo=(isset($_SESSION['pseudo']))?$_SESSION['pseudo']:'';
if(session_id() == '') { session_start(); }
?>
</head>
<body>
<div class="container-fluid bg1">
<header>
<div class="container">
<div class="text-center"><a href="home.php"><img src="./images/autres/logo.png"></a></div>
<nav class="navbar navbar-expand-lg navbar-dark bg-transparent">
<a class="navbar-brand" href="home.php">Accueil</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav mr-auto">
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Centre Equestre</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="centre.php">Le Centre</a>
<a class="dropdown-item" href="tarif.php">Tarifs</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="contact.php">Nos Coordonnées</a>
</div>
</li>
<li class="nav-item"><a class="nav-link disabled" href="vitrine.php">Vitrine</a></li>
<li class="nav-item"><a class="nav-link disabled" href="actualite.php">Actualités</a></li>
<li class="nav-item"><a class="nav-link disabled" href="evenement.php">Evénements</a></li>
<li class="nav-item"><a class="nav-link disabled" href="pension.php">Pensions</a></li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdownActivite" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Activités</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="poney_club.php">Poney Club</a>
<a class="dropdown-item" href="ethologie.php">Ethologie</a>
<a class="dropdown-item" href="stage.php">Stages</a>
<a class="dropdown-item" href="balade.php">Balades et Randonnées</a>
</div>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdownCompte" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Compte</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="./espace_membre.php">Espace membre</a>
<div class="dropdown-divider"></div>
<?php if(isset($_SESSION['pseudo'])) { ?>
<a class="dropdown-item">Connecter en tant que <?php echo ' '.htmlentities($_SESSION['pseudo'], ENT_QUOTES, 'UTF-8'); ?></a>
<a class="dropdown-item" href="./profil.php?action=modifier">Modifier mes informations</a>
<a class="dropdown-item" href="./deconnexion.php">Déconnexion</a>
<?php } else { ?>
<a class="dropdown-item" href="./inscription.php">Inscription</a>
<a class="dropdown-item" href="./connexion.php">Connexion</a>
<?php } ?>
</div>
</li>
</ul>
</div>
</nav>
</div>
</header>
<div class="container">
<div class="col">
<div class="row">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Projet Ecurie</title>
<link rel="shortcut icon" type="image/png" href="./images/autres/favicon.png">
<link rel="stylesheet" media="all" href="./css/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css">
<link rel="stylesheet" media="all" href="./css/style.css" type="text/css">
<?php include('./config/init.php'); ?>
</head>
<body class="bg1">
<header>
<div class="container">
<div class="text-center"><a href="index.php"><img src="./images/autres/logo.png"></a></div>
<nav class="navbar navbar-expand-lg navbar-dark bg-transparent">
<a class="navbar-brand" href="index.php">Accueil</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav me-auto">
<li class="nav-item"><a class="nav-link" href="centre.php">Centre/Tarifs</a></li>
<li class="nav-item"><a class="nav-link" href="activite.php">Activités</a></li>
<li class="nav-item"><a class="nav-link" href="pension.php">Pensions</a></li>
<li class="nav-item"><a class="nav-link" href="actualite.php">Actualités</a></li>
<li class="nav-item"><a class="nav-link" href="evenement.php">Evénements</a></li>
<li class="nav-item"><a class="nav-link" href="vitrine.php">Vitrine</a></li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdownCompte" role="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Compte</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdownCompte">
<a class="dropdown-item" href="./espace_membre.php">Espace membre</a>
<div class="dropdown-divider"></div>
<?php if(isset($_SESSION['pseudo'])) { ?>
<a class="dropdown-item">Connecter en tant que <?php echo ' '.htmlentities($_SESSION['pseudo'], ENT_QUOTES, 'UTF-8'); ?></a>
<a class="dropdown-item" href="./profil.php?action=modifier">Modifier mes informations</a>
<a class="dropdown-item" href="./deconnexion.php">Déconnexion</a>
<?php } else { ?>
<a class="dropdown-item" href="./inscription.php">Inscription</a>
<a class="dropdown-item" href="./connexion.php">Connexion</a>
<?php } ?>
</div>
</li>
</ul>
</div>
</nav>
</div>
</header>

35
vue/home.html Normal file
View File

@@ -0,0 +1,35 @@
<section id="content" class="container">
<div>
<div id="slideshowhome" class="carousel slide carousel-fade mb-4" data-bs-ride="carousel">
<div class="carousel-inner">
<div class="carousel-item active"><img class="d-block w-100" src="./images/home/home1.jpg" alt="Photo écurie 1" loading="lazy"></div>
<div class="carousel-item"><img class="d-block w-100" src="./images/home/home2.jpg" alt="Photo écurie 2" loading="lazy"></div>
<div class="carousel-item"><img class="d-block w-100" src="./images/home/home3.jpg" alt="Photo écurie 3" loading="lazy"></div>
</div>
<button class="carousel-control-prev" type="button" data-bs-target="#slideshowhome" data-bs-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span><span class="visually-hidden">Précédent</span>
</button>
<button class="carousel-control-next" type="button" data-bs-target="#slideshowhome" data-bs-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span><span class="visually-hidden">Suivant</span>
</button>
</div>
<h6>Notre écurie</h6>
<p>Situées à 40 Km de Paris, en plein cœur du Parc du Gâtinais, l'écurie vous accueillent dans un écrin de verdure...<br>
Vous y découvrirez, dans des infrastructures modernes et de qualité, une équitation sportive et ludique encadrée par des enseignants compétents.<br>
Diverses activités vous sont proposées: de l'initiation à la compétition, sans oublier la formation et la préparation aux examens fédéraux.<br><br>
Bonne saison 2018/2019 !!</p><br>
<hr><h2 class="text-center">Découvrir l'écurie</h2><hr>
<div class="row">
<div class="col-md" >
<div class="ratio ratio-16x9">
<iframe src="https://www.youtube.com/embed/hiNhwcbRmNc" title="Présentation écurie 1" allow="autoplay; encrypted-media" allowfullscreen loading="lazy"></iframe>
</div>
</div>
<div class="col-md">
<div class="ratio ratio-16x9">
<iframe src="https://www.youtube.com/embed/gluMtEUeZ20" title="Présentation écurie 2" allow="autoplay; encrypted-media" allowfullscreen loading="lazy"></iframe>
</div>
</div>
</div>
</div><hr>
</section>

29
vue/pension.html Normal file
View File

@@ -0,0 +1,29 @@
<section id="content" class="container">
<div>
<br><h2 class="text-center">Les pensions</h2><hr>
<h3>Pensions en Box</h3>
<ul class="list-unstyled ms-3">
<li>Box paillé de 3m x 3m</li>
<li>Nourriture 3 fois par jour (granulés et/ou fourrage)</li>
<li>Possibilité d'être lâché en demie-journée en paddock (voir tarifs)</li>
</ul>
<img class="img-thumbnail rounded my-3" src="./images/activites/pension1.jpg" alt="">
<h3>Pension en paddock</h3>
<ul class="list-unstyled ms-3">
<li>Paddock avec ou sans abri</li>
<li>Nourriture 2 fois par jour aux granulés et foin 1 fois par jour</li>
<li>Possibilité d'être rentré au box la nuit (moyennant supplément)</li>
</ul>
<img class="img-thumbnail rounded my-3" src="./images/activites/pension2.jpg" alt="">
<h3>Pension au Pré ou Pré / Box</h3>
<p>En plus des services et activités proposés au centre équestre,<br>
l'écurie dispose d'une "annexe" située à une quinzaine de Km, à Champmotteux.<br>
Ce complexe, essentiellement composé de pâtures, dispose d'une carrière sablée et de quelques boxes.<br>
L'accès à la balade et aux chemins de grandes randonnées est direct.</p>
<p>Nous y accueillons votre équidé qu'il soit
<b>actif, retraité ou simplement en "vacances"</b>;<br>
Pension au Pré ou Pré / Box, avec complément et fourrage.</p>
<img class="img-thumbnail rounded my-3" src="./images/activites/pension3.jpg" alt="">
<h6 class="text-center"><b>*</b> Vous trouverez le coût de toutes nos prestations dans la rubrique "Tarifs".</h6>
</div><hr>
</section>

34
vue/policy.html Normal file
View File

@@ -0,0 +1,34 @@
<section id="content" class="container">
<br><h2 class="text-center">Politique de confidentialité</h2><hr>
<h6>Collecte des renseignements personnels</h6>
<p>Les renseignements personnels que nous collectons sont recueillis au travers de formulaires et grâce à l'interactivité établie entre vous et notre site Web.<br>
Nous utilisons également, comme indiqué dans la section suivante, des fichiers témoins et/ou journaux pour réunir des informations vous concernant. </p>
<h6>Formulaires et interactivité:</h6>
<p>Vos renseignements personnels sont collectés par le biais de formulaire, à savoir :<br>
- Formulaire d'inscription au site Web<br>
Nous utilisons les renseignements ainsi collectés pour les finalités suivantes :<br>
- Contact</p>
<h6>Droit d'opposition et de retrait</h6>
<p>Nous nous engageons à vous offrir un droit d'opposition et de retrait quant à vos renseignementspersonnels.<br>
Le droit d'opposition s'entend comme étant la possibilité offerte aux internautes de refuser que leurs renseignements personnels soient utilisés à certaines fins mentionnées lors de la collecte.<br>
Le droit de retrait s'entend comme étant la possibilité offerte aux internautes de demander à ce que leurs renseignements personnels ne figurent plus, par exemple, dans une liste de diffusion.</p>
<h6>Droit d'accès</h6>
<p>Nous nous engageons à reconnaître un droit d'accès et de rectification aux personnes concernées désireuses de consulter, modifier, voire radier les informations les concernant.</p>
<h6>Sécurité</h6>
<p>Les renseignements personnels que nous collectons sont conservés dans un environnement sécurisé.<br>
Les personnes travaillant pour nous sont tenues de respecter la confidentialité de vos informations.<br>
Pour assurer la sécurité de vos renseignements personnels, nous avons recours aux mesures suivantes :<br>
- Gestion des accès - personne autorisée<br>
- Gestion des accès - personne concernée<br>
- Logiciel de surveillance du réseau<br>
- Sauvegarde informatique<br>
- Développement de certificat numérique<br>
- Identifiant / mot de passe<br>
- Pare-feu (Firewalls)<br>
Nous nous engageons à maintenir un haut degré de confidentialité en intégrant les dernières innovations technologiques permettant d'assurer la confidentialité de vos transactions.<br>
Toutefois,comme aucun mécanisme n'offre une sécurité maximale, une part de risque est toujours présente lorsque l'on utilise Internet pour transmettre des renseignements personnels.</p>
<h6>Législation</h6>
<p>Nous nous engageons à respecter les dispositions législatives françaises</p>
<h6>E-mail: <a href="mailto:contact@ccbinformatique.fr">contact@ccbinformatique.fr</a></h6>
<hr>
</section>

29
vue/vitrine.php Normal file
View File

@@ -0,0 +1,29 @@
<section id="content" class="container">
<div>
<br><h2 class="text-center">Boutique</h2><hr>
<h6 class="text-center">Pour tout renseignement ou achat contacter le Club</h6>
<div class="border border-secondary rounded text-center bg-white">
<p>Une très large gamme de produits destinés à la pratique de léquitation
afin de pratiquer ce noble sport de la manière la plus efficace possible.
La performance lors dun entraînement de montage ou lors dun concours de saut dobstacles
dépend également de léquipement choisi par le cavalier.</p><br>
<p> Il ny a rien de mieux que des selles déquitation ou des sangles de dressage adapté à votre animal ainsi que des équipements
qui sauront vous apporter confort et optimisation et également de nombreux produits destinés à léquipement du cheval au travail.</p>
</div><hr>
<h2 class="text-center">Produit actuellement en vente</h2><br>
<div class="row row-cols-1 row-cols-md-3 g-3 p-3 border border-secondary rounded">
<?php foreach($articlesCav as $cle => $article){ ?>
<div class="col">
<div class="card h-100">
<img class="card-img-top px-5" src=".<?php echo $article['imagearticle'];?>" alt="">
<div class="card-body">
<h5 class="card-title fw-normal"><?php echo $article['libelle'] ?></h5>
<p class="card-text fw-light"><?php echo substr($article['description'], 0, 150).'...';?></p>
<h5 class="card-title fw-bold"><?php echo $article['prix'] ?> €</h5>
</div>
</div>
</div>
<?php } ?>
</div>
</div><br>
</section>