Initial commit
Création de tous les dossiers et fichiers avec mise à part des constantes
This commit is contained in:
commit
4c71fb59b4
42 changed files with 2544 additions and 0 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
local/*
|
1
.htaccess
Normal file
1
.htaccess
Normal file
|
@ -0,0 +1 @@
|
|||
ErrorDocument 404 https://cuisine.timotheehuneau.fr/index.php?erreur=404
|
141
asides/aAccueil.php
Normal file
141
asides/aAccueil.php
Normal file
|
@ -0,0 +1,141 @@
|
|||
<aside>
|
||||
<form method="POST">
|
||||
|
||||
<input type="submit" class="button" value="Appliquer les filtres !"/>
|
||||
<input
|
||||
type="checkbox"
|
||||
class="dropdown"
|
||||
id="dropdownFiltres"
|
||||
name="dropdownFiltres"
|
||||
/>
|
||||
<label for="dropdownFiltres" class="dropdown">Trier les recettes</label>
|
||||
<div class="principaleAside">
|
||||
<div>
|
||||
Critère :
|
||||
<select name="typeTri">
|
||||
<option value="nom" <?= (isset($_SESSION['tri']['typeTri']) and $_SESSION['tri']['typeTri'] == "nom") ? 'selected' : '' ?>>
|
||||
nom
|
||||
</option>
|
||||
<option value="duree" <?= (isset($_SESSION['tri']['typeTri']) and $_SESSION['tri']['typeTri'] == "duree") ? 'selected' : '' ?>>
|
||||
temps de réalisation
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
<div>
|
||||
Ordre :
|
||||
<select name="sensTri">
|
||||
<option value="ASC" <?= (isset($_SESSION['tri']['sensTri']) and $_SESSION['tri']['sensTri'] == "ASC") ? 'selected' : '' ?>>
|
||||
croissant
|
||||
</option>
|
||||
<option value="DESC" <?= (isset($_SESSION['tri']['sensTri']) and $_SESSION['tri']['sensTri'] == "DESC") ? 'selected' : '' ?>>
|
||||
décroissant
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<input
|
||||
type="checkbox"
|
||||
class="dropdown"
|
||||
id="dropdownGenres"
|
||||
name="dropdownGenres"
|
||||
/>
|
||||
<label for="dropdownGenres" class="dropdown">Genres</label>
|
||||
<div class="principaleAside">
|
||||
<?php foreach($listeGenre as $id => $elem): ?>
|
||||
<div class="elemAside">
|
||||
<label for="genre[<?= $id ?>]">
|
||||
<?= $elem ?> :
|
||||
</label>
|
||||
<input
|
||||
type="checkbox"
|
||||
class="choixTri genre"
|
||||
name="genre[<?= $id ?>]"
|
||||
id="genre[<?= $id ?>]"
|
||||
<?= (!isset($_SESSION['tri']['genre']) or isset($_SESSION['tri']['genre'][$id])) ? 'checked' : '' ?>
|
||||
value="1"
|
||||
/>
|
||||
</div>
|
||||
<?php endforeach ?>
|
||||
</div>
|
||||
|
||||
<input
|
||||
type="checkbox"
|
||||
class="dropdown"
|
||||
id="dropdownIngredients"
|
||||
name="dropdownIngredients"
|
||||
/>
|
||||
<label for="dropdownIngredients" class="dropdown">Ingrédients</label>
|
||||
<div class="principaleAside">
|
||||
<div>
|
||||
<label for="rechercheIngredients">
|
||||
Rechercher un ingrédient :
|
||||
</label>
|
||||
<input
|
||||
type="text"
|
||||
id="rechercheIngredients"
|
||||
/>
|
||||
</div>
|
||||
<?php foreach($listeIngredient as $id => $elem): ?>
|
||||
<div class="elemAside divIngredient" nom="div-<?= $elem['nom'] ?>">
|
||||
<label>
|
||||
<?= $elem['nom'] ?> :
|
||||
</label>
|
||||
<span>
|
||||
<input
|
||||
type="radio"
|
||||
name="ingredient[<?= $elem['id'] ?>]"
|
||||
class="choixTri requis"
|
||||
value="1"
|
||||
title="Obligatoire"
|
||||
<?= (isset($_SESSION['tri']['ingredient'][$id]) and $_SESSION['tri']['ingredient'][$id] == 1)? 'checked' : ''?>
|
||||
/><input
|
||||
type="radio"
|
||||
name="ingredient[<?= $elem['id'] ?>]"
|
||||
class="choixTri autorise"
|
||||
value="0"
|
||||
title="Indifférent"
|
||||
<?= (empty($_SESSION['tri']['ingredient'][$id]) or $_SESSION['tri']['ingredient'][$id] == 0)? 'checked' : ''?>
|
||||
/><input
|
||||
type="radio"
|
||||
name="ingredient[<?= $elem['id'] ?>]"
|
||||
class="choixTri interdit"
|
||||
value="-1"
|
||||
title="Interdit"
|
||||
<?= (isset($_SESSION['tri']['ingredient'][$id]) and $_SESSION['tri']['ingredient'][$id] == -1)? 'checked' : ''?>
|
||||
/>
|
||||
</span>
|
||||
</div>
|
||||
<?php endforeach ?>
|
||||
</div>
|
||||
|
||||
<input
|
||||
type="checkbox"
|
||||
class="dropdown"
|
||||
id="dropdownUstensiles"
|
||||
name="dropdownUstensiles"
|
||||
/>
|
||||
<label for="dropdownUstensiles" class="dropdown">Ustensiles</label>
|
||||
<div class="principaleAside">
|
||||
<?php foreach($listeUstensile as $id => $elem): ?>
|
||||
<div class="elemAside">
|
||||
<label for="ustensile[<?= $elem['id'] ?>]" title="Je ne dispose pas de l'ustensile">
|
||||
<?= $elem['nom'] ?> :
|
||||
</label>
|
||||
<span>
|
||||
<input
|
||||
type="checkbox"
|
||||
name="ustensile[<?= $elem['id'] ?>]"
|
||||
id="ustensile[<?= $elem['id'] ?>]"
|
||||
class="choixTri ustensile"
|
||||
value="1"
|
||||
<?= (isset($_SESSION['tri']['ustensile']) and $_SESSION['tri']['ustensile'][$id] == 1)? 'checked' : ''?>
|
||||
/>
|
||||
</span>
|
||||
</div>
|
||||
<?php endforeach ?>
|
||||
</div>
|
||||
<input type="hidden" name="tri" value="true" />
|
||||
<input type="submit" class="button" value="Appliquer les filtres !"/>
|
||||
</form>
|
||||
</aside>
|
134
asides/aRecette.php
Normal file
134
asides/aRecette.php
Normal file
|
@ -0,0 +1,134 @@
|
|||
<?php switch($pageExiste): ?>
|
||||
<?php case 2 ?> <!-- Cas de modification d'une recette -->
|
||||
<?php case -1 ?> <!-- Cas de création d'une recette -->
|
||||
<?php if($_SESSION['auth']): ?>
|
||||
<aside>
|
||||
<input
|
||||
type="checkbox"
|
||||
class="dropdown"
|
||||
id="dropdownIngredients"
|
||||
name="dropdownIngredients"
|
||||
/>
|
||||
<label for="dropdownIngredients" class="dropdown">Ingrédients</label>
|
||||
<div class="principaleAside">
|
||||
<div>
|
||||
<label for="rechercheIngredients">
|
||||
Rechercher un ingrédient :
|
||||
</label>
|
||||
<input
|
||||
type="text"
|
||||
id="rechercheIngredients"
|
||||
/>
|
||||
</div>
|
||||
<?php foreach($listeIngredients as $id => $elem): ?>
|
||||
<div class="<?= isset($listeIngredientsRecette[$id]) ? 'important' : '' ?> divIngredient" nom="div-<?= $elem['nom'] ?>">
|
||||
<input
|
||||
class="autorise cb ingredient"
|
||||
title="Ajouter"
|
||||
type="checkbox"
|
||||
nom="<?= $elem['nom'] ?>"
|
||||
idIngredient="<?= $id ?>"
|
||||
name="ingredient<?= $id ?>"
|
||||
id="cb.ingredient<?= $id ?>"
|
||||
<?= isset($listeIngredientsRecette[$id]) ? 'checked' : '' ?>
|
||||
/>
|
||||
<label for="cb.ingredient<?= $elem['id'] ?>" class="petitLabel">
|
||||
<?= $elem['nom'] ?>
|
||||
</label>
|
||||
</div>
|
||||
<?php endforeach ?>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
</div>
|
||||
|
||||
<input
|
||||
type="checkbox"
|
||||
class="dropdown"
|
||||
id="dropdownUstensiles"
|
||||
name="dropdownUstensiles"
|
||||
/>
|
||||
<label for="dropdownUstensiles" class="dropdown">Ustensiles</label>
|
||||
<div class="principaleAside">
|
||||
<?php foreach($listeUstensiles as $id => $elem): ?>
|
||||
<div <?= isset($listeUstensilesRecette[$id]) ? 'class="important"' : '' ?>>
|
||||
<input
|
||||
class="autorise cb ustensile"
|
||||
title="Ajouter"
|
||||
type="checkbox"
|
||||
nom="<?= $elem['nom'] ?>"
|
||||
idUstensile="<?= $id ?>"
|
||||
name="ustensile<?= $id ?>"
|
||||
id="cb.ustensile<?= $id ?>"
|
||||
<?= isset($listeUstensilesRecette[$id]) ? 'checked' : '' ?>
|
||||
/>
|
||||
<label for="cb.ustensile<?= $id ?>" class="petitLabel">
|
||||
<?= $elem['nom'] ?>
|
||||
</label>
|
||||
</div>
|
||||
<?php endforeach ?>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
</div>
|
||||
|
||||
<input
|
||||
type="checkbox"
|
||||
class="dropdown"
|
||||
id="dropdownPreparations"
|
||||
name="dropdownPreparations"
|
||||
/>
|
||||
<label for="dropdownPreparations" class="dropdown">Modes de préparations</label>
|
||||
<div class="principaleAside">
|
||||
<?php foreach($listePreparations as $id => $elem): ?>
|
||||
<div class="<?= isset($listePreparationsRecette[$id]) ? 'important' : '' ?>">
|
||||
<input
|
||||
class="autorise cb preparation"
|
||||
title="Ajouter"
|
||||
type="checkbox"
|
||||
nom="<?= $elem['nom'] ?>"
|
||||
idPreparation="<?= $id ?>"
|
||||
name="preparation<?= $id ?>"
|
||||
id="cb.preparation<?= $id ?>"
|
||||
<?= isset($listePreparationsRecette[$id]) ? 'checked' : '' ?>
|
||||
/>
|
||||
<label for="cb.preparation<?= $id ?>" class="petitLabel">
|
||||
<?= $elem['nom'] ?>
|
||||
</label>
|
||||
</div>
|
||||
<?php endforeach ?>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
</div>
|
||||
|
||||
<input
|
||||
type="checkbox"
|
||||
class="dropdown"
|
||||
id="dropdownRecettes"
|
||||
name="dropdownRecettes"
|
||||
/>
|
||||
<label for="dropdownRecettes" class="dropdown">Recettes</label>
|
||||
<div class="principaleAside">
|
||||
<?php foreach($listeRecettes as $id => $elem): ?>
|
||||
<div <?= isset($listeReutiliseRecette[$id]) ? 'class="important"' : '' ?>>
|
||||
<input
|
||||
class="autorise cb reutilise"
|
||||
title="Ajouter"
|
||||
type="checkbox"
|
||||
nom="<?= $elem['nom'] ?>"
|
||||
idRecette="<?= $id ?>"
|
||||
name="reutilise[<?= $id ?>]"
|
||||
id="cb.reutilise<?= $id ?>"
|
||||
<?= isset($listeReutiliseRecette[$id]) ? 'checked' : '' ?>
|
||||
/>
|
||||
<label for="cb.reutilise<?= $id ?>" class="petitLabel">
|
||||
<?= $elem['nom'] ?>
|
||||
</label>
|
||||
</div>
|
||||
<?php endforeach ?>
|
||||
</div>
|
||||
</aside>
|
||||
<?php endif ?>
|
||||
<?php break; ?>
|
||||
<?php endswitch ?>
|
1
asides/void.php
Normal file
1
asides/void.php
Normal file
|
@ -0,0 +1 @@
|
|||
<aside class="void"></aside>
|
48
contenus/closed_lock.svg
Normal file
48
contenus/closed_lock.svg
Normal file
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 426.667 426.667" style="enable-background:new 0 0 426.667 426.667;" xml:space="preserve">
|
||||
<g>
|
||||
<g>
|
||||
<path d="M330.704,170.667H95.963C78.405,170.667,64,184.951,64,202.572v192.19c0,17.593,14.31,31.905,31.963,31.905h234.742
|
||||
c17.557,0,31.963-14.284,31.963-31.905v-192.19C362.667,184.979,348.357,170.667,330.704,170.667z M320,384H106.667V213.333H320
|
||||
V384z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
<g>
|
||||
<path d="M217.082,0h-7.498c-56.815,0-102.918,46.172-102.918,102.978v81.645h42.667v-81.645c0-33.256,27.014-60.311,60.251-60.311
|
||||
h7.498c33.22,0,60.251,27.032,60.251,60.311v81.645H320v-81.645C320,46.134,273.866,0,217.082,0z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1 KiB |
1
contenus/croix.svg
Normal file
1
contenus/croix.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg height="512pt" viewBox="0 0 512 512" width="512pt" xmlns="http://www.w3.org/2000/svg"><path d="m256 512c-141.164062 0-256-114.835938-256-256s114.835938-256 256-256 256 114.835938 256 256-114.835938 256-256 256zm0-480c-123.519531 0-224 100.480469-224 224s100.480469 224 224 224 224-100.480469 224-224-100.480469-224-224-224zm0 0"/><path d="m176.8125 351.1875c-4.097656 0-8.195312-1.554688-11.308594-4.691406-6.25-6.25-6.25-16.382813 0-22.632813l158.398438-158.402343c6.253906-6.25 16.386718-6.25 22.636718 0s6.25 16.382812 0 22.636718l-158.402343 158.398438c-3.15625 3.136718-7.25 4.691406-11.324219 4.691406zm0 0"/><path d="m335.1875 351.1875c-4.09375 0-8.191406-1.554688-11.304688-4.691406l-158.398437-158.378906c-6.253906-6.25-6.253906-16.382813 0-22.632813 6.25-6.253906 16.382813-6.253906 22.632813 0l158.398437 158.398437c6.253906 6.25 6.253906 16.382813 0 22.632813-3.132813 3.117187-7.230469 4.671875-11.328125 4.671875zm0 0"/></svg>
|
After Width: | Height: | Size: 945 B |
1
contenus/icone.svg
Normal file
1
contenus/icone.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg height="512" viewBox="0 0 512 512" width="512" xmlns="http://www.w3.org/2000/svg"><g id="Filled_outline" data-name="Filled outline"><path d="m35.383 148.52h441.235v214.96h-441.235z" fill="#7a432a" transform="matrix(.707 -.707 .707 .707 -106.039 256)"/><path d="m488 176-312 312-97.84-97.84c152.44-49.26 259.35-112.7 374.13-249.87z" fill="#6e3c26"/><g fill="#92563a"><path d="m307.716 83.716h56.569v56.569h-56.569z" transform="matrix(.707 -.707 .707 .707 19.216 270.392)"/><path d="m371.716 147.716h56.569v56.569h-56.569z" transform="matrix(.707 -.707 .707 .707 -7.294 334.392)"/><path d="m243.716 147.716h56.569v56.569h-56.569z" transform="matrix(.707 -.707 .707 .707 -44.784 243.882)"/><path d="m307.716 211.716h56.569v56.569h-56.569z" transform="matrix(.707 -.707 .707 .707 -71.294 307.882)"/><path d="m179.716 211.716h56.569v56.569h-56.569z" transform="matrix(.707 -.707 .707 .707 -108.784 217.373)"/></g><path d="m93.373 288.52h45.255v214.96h-45.255z" fill="#ffb531" transform="matrix(.707 -.707 .707 .707 -246.039 198.01)"/><path d="m384 280-176 176-152-152 88-88 182.28 48.61z" fill="#f35244"/><path d="m384 280-176 176-82.27-82.27c75.25-27.82 139.52-61.32 200.55-109.12z" fill="#e64c3f"/><path d="m208 456-32 32-97.84-97.84q24.54-7.935 47.57-16.43z" fill="#ffa912"/><path d="m144 216 128 104 112-40z" fill="#f2dec2"/><path d="m493.657 170.343-152-152a8 8 0 0 0 -11.314 0l-172.667 172.667 11.314 11.313 167.01-167.009 140.687 140.686-95.087 95.081-235.538-62.811a8.005 8.005 0 0 0 -7.719 2.073l-120 120a8 8 0 0 0 0 11.314l152 152a8 8 0 0 0 11.314 0l312-312a8 8 0 0 0 0-11.314zm-136.548 110.766-83.559 29.843-95.5-77.591zm-181.109 195.577-140.687-140.686 20.687-20.686 140.686 140.686zm32-32-140.687-140.686 71.767-71.766 5.475-5.475 122.4 99.45a8 8 0 0 0 7.735 1.325l78.5-28.034zm133.657-378.343a8 8 0 0 0 -11.314 0l-40 40a8 8 0 0 0 0 11.314l40 40a8 8 0 0 0 11.314 0l40-40a8 8 0 0 0 0-11.314zm-5.657 74.344-28.687-28.687 28.687-28.687 28.687 28.687zm64 83.313a7.974 7.974 0 0 0 5.657-2.343l40-40a8 8 0 0 0 0-11.314l-40-40a8 8 0 0 0 -11.314 0l-40 40a8 8 0 0 0 0 11.314l40 40a7.974 7.974 0 0 0 5.657 2.343zm0-76.687 28.687 28.687-28.687 28.687-28.687-28.687zm-133.657-16.97-40 40a8 8 0 0 0 0 11.314l40 40a8 8 0 0 0 11.314 0l40-40a8 8 0 0 0 0-11.314l-40-40a8 8 0 0 0 -11.314 0zm5.657 74.344-28.687-28.687 28.687-28.687 28.687 28.687zm90.343 37.656 2.344-2.343-28.687-28.687-26.343 26.344-11.314-11.314 32-32a8 8 0 0 1 11.314 0l40 40a8 8 0 0 1 0 11.314l-8 8zm-240 32 11.314 11.314-32 32-11.314-11.314zm24-24 11.314 11.314-12.75 12.75-11.314-11.314z"/></g></svg>
|
After Width: | Height: | Size: 2.5 KiB |
48
contenus/open_lock.svg
Normal file
48
contenus/open_lock.svg
Normal file
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 426.667 426.667" style="enable-background:new 0 0 426.667 426.667;" xml:space="preserve">
|
||||
<g>
|
||||
<g>
|
||||
<path d="M330.704,170.667H95.963C78.405,170.667,64,184.951,64,202.572v192.19c0,17.593,14.31,31.905,31.963,31.905h234.742
|
||||
c17.557,0,31.963-14.284,31.963-31.905v-192.19C362.667,184.979,348.357,170.667,330.704,170.667z M320,384H106.667V213.333H320
|
||||
V384z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
<g>
|
||||
<path d="M217.082,0h-7.498c-56.815,0-102.918,46.172-102.918,102.978v81.645h42.667v-81.645c0-33.256,27.014-60.311,60.251-60.311
|
||||
h7.498c33.219,0,60.251,27.037,60.251,60.325V128H320v-25.009C320,46.141,273.867,0,217.082,0z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1 KiB |
115
controleurs/cAccueil.php
Normal file
115
controleurs/cAccueil.php
Normal file
|
@ -0,0 +1,115 @@
|
|||
<?php
|
||||
$c = seConnecter();
|
||||
|
||||
$sensOrdreListe = " ASC ";
|
||||
$typeOrdreListe = " nom ";
|
||||
|
||||
$whereClause = " 1=1 ";
|
||||
|
||||
if (isset($_POST['tri'])){
|
||||
$_SESSION['tri']['sensTri'] = $_POST['sensTri'];
|
||||
$_SESSION['tri']['typeTri'] = $_POST['typeTri'];
|
||||
|
||||
$sensOrdreListe = $_POST['sensTri'];
|
||||
$typeOrdreListe = $_POST['typeTri'];
|
||||
|
||||
$_SESSION['tri']['ingredient'] = $_POST['ingredient'];
|
||||
$_SESSION['tri']['ustensile'] = $_POST['ustensile'];
|
||||
$_SESSION['tri']['genre'] = !isset($_POST['genre']) ? [] : $_POST['genre'];
|
||||
|
||||
$whereClause = '';
|
||||
|
||||
$clauseIngredientsRequis = '';
|
||||
$clauseIngredientsInterdits = '';
|
||||
foreach($_POST['ingredient'] as $id => $demande){
|
||||
switch($demande){
|
||||
case 1:
|
||||
$clauseIngredientsRequis .= " AND ingredient = $id";
|
||||
break;
|
||||
|
||||
case -1:
|
||||
$clauseIngredientsInterdits .= " OR ingredient = $id";
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
$clauseIngredientsRequis = "AND r.id IN (SELECT recette FROM RecetteIngredient WHERE 1=1 $clauseIngredientsRequis)";
|
||||
$clauseIngredientsInterdits = "r.id NOT IN (SELECT recette FROM RecetteIngredient WHERE 0=1 $clauseIngredientsInterdits)";
|
||||
$whereClause .= $clauseIngredientsInterdits . $clauseIngredientsRequis;
|
||||
|
||||
|
||||
$clauseUstensilesAutorises = '';
|
||||
foreach($_POST['ustensile'] as $id => $demande){
|
||||
if($demande){
|
||||
$clauseUstensilesAutorises .= " OR ustensile = $id";
|
||||
}
|
||||
}
|
||||
$clauseUstensilesAutorises = " AND r.id NOT IN (SELECT recette FROM RecetteUstensile WHERE 0=1 $clauseUstensilesAutorises)";
|
||||
$whereClause .= $clauseUstensilesAutorises;
|
||||
|
||||
$clauseGenre = ' AND (1=0 ';
|
||||
if(isset($_POST['genre'])){
|
||||
foreach($_POST['genre'] as $id => $demande){
|
||||
$clauseGenre .= " OR genre = $id";
|
||||
}
|
||||
}
|
||||
$whereClause .= $clauseGenre . ')';
|
||||
}else{
|
||||
unset($_SESSION['tri']);
|
||||
}
|
||||
|
||||
$requeteListeRecettes = "
|
||||
SELECT r.id idRecette, r.nom nom, r.tempsTotal duree, g.nom genre, g.id idGenre
|
||||
FROM Recette r JOIN Genre g ON g.id = r.genre
|
||||
WHERE $whereClause
|
||||
ORDER BY $typeOrdreListe $sensOrdreListe;
|
||||
";
|
||||
|
||||
//echo $requeteListeRecettes;
|
||||
|
||||
$resultatListeRecettes = mysqli_query($c, $requeteListeRecettes);
|
||||
if ($resultatListeRecettes){
|
||||
$listeRecettes = [];
|
||||
while ($recette = mysqli_fetch_assoc($resultatListeRecettes)){
|
||||
$idRecette = $recette['idRecette'];
|
||||
$listeRecettes[$idRecette] = [];
|
||||
foreach ($recette as $clef => $info){
|
||||
if ($clef != 'idRecette'){
|
||||
if($clef == 'duree'){$info = calculeTexteFromMinutes($info);}
|
||||
$listeRecettes[$idRecette][$clef] = $info;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//recuperation des ingredients
|
||||
$requeteListeIngredient = "SELECT nom, id FROM Ingredient ORDER BY nom;";
|
||||
$resultatListeIngredient = mysqli_query($c, $requeteListeIngredient);
|
||||
$listeIngredient = [];
|
||||
while ($infoIngredient = mysqli_fetch_assoc($resultatListeIngredient)){
|
||||
$listeIngredient[$infoIngredient['id']] = $infoIngredient;
|
||||
}
|
||||
|
||||
//recuperation des ustensiles
|
||||
$requeteListeUstensile = "SELECT nom, id FROM Ustensile ORDER BY nom;";
|
||||
$resultatListeUstensile = mysqli_query($c, $requeteListeUstensile);
|
||||
$listeUstensile = [];
|
||||
while ($infoUstensile = mysqli_fetch_assoc($resultatListeUstensile)){
|
||||
$listeUstensile[$infoUstensile['id']] = $infoUstensile;
|
||||
}
|
||||
|
||||
//recuperation des modes de preparation
|
||||
$requeteListePreparation = "SELECT nom, id FROM Preparation ORDER BY nom;";
|
||||
$resultatListePreparation = mysqli_query($c, $requeteListePreparation);
|
||||
$listePreparation = [];
|
||||
while ($infoPreparation = mysqli_fetch_assoc($resultatListePreparation)){
|
||||
$listePreparation[] = $infoPreparation;
|
||||
}
|
||||
|
||||
//recuperation des genre de recette
|
||||
$listeGenre = recupereGenres($c);
|
||||
|
||||
deconnectBD($c);
|
||||
?>
|
58
controleurs/cAjouterElement.php
Normal file
58
controleurs/cAjouterElement.php
Normal file
|
@ -0,0 +1,58 @@
|
|||
<?php
|
||||
$c = seConnecter();
|
||||
|
||||
|
||||
//ajout d'un ingredient
|
||||
$strAnnee = implode(', ', lANNEE);
|
||||
if (isset($_POST['nomIngredient'])){
|
||||
$nomNvlIngredient = transformeCharsAutorises($_POST['nomIngredient']);
|
||||
|
||||
$lMoisDispo = [];
|
||||
foreach (lANNEE as $mois){
|
||||
$lMoisDispo[] = isset($_POST[$mois]) ? 1 : 0;
|
||||
}
|
||||
$strAnneeDispo = implode(', ', $lMoisDispo);
|
||||
|
||||
$reqAjoutIngredient = "INSERT INTO Ingredient (nom, $strAnnee)
|
||||
VALUES (\"$nomNvlIngredient\", $strAnneeDispo);";
|
||||
$resultat = mysqli_query($c, $reqAjoutIngredient);
|
||||
}
|
||||
//ajout d'un ustensile
|
||||
if (isset($_POST['nomUstensile'])){
|
||||
$nomNvlUstensile = transformeCharsAutorises($_POST['nomUstensile']);
|
||||
$reqAjoutUstensile = "INSERT INTO Ustensile (nom) VALUES ('$nomNvlUstensile');";
|
||||
$resultat = mysqli_query($c, $reqAjoutUstensile);
|
||||
}
|
||||
|
||||
//ajout d'une unite
|
||||
if (isset($_POST['nomUnite'])){
|
||||
$nomNvlUnite = htmlspecialchars($_POST['nomUnite']);
|
||||
$reqAjoutUnite = "INSERT INTO Unite (nom) VALUES ('$nomNvlUnite');";
|
||||
$resultat = mysqli_query($c, $reqAjoutUnite);
|
||||
}
|
||||
|
||||
|
||||
//recuperation des ustensiles
|
||||
$requeteListePersonne = "SELECT nom, id FROM Humain ORDER BY nom;";
|
||||
$resultatListePersonne = mysqli_query($c, $requeteListePersonne);
|
||||
$listePersonne = mysqli_fetch_all($resultatListePersonne);
|
||||
|
||||
//recuperation des ingredients
|
||||
$requeteListeIngredient = "
|
||||
SELECT i.id id, i.nom nom, COUNT(ri.recette) nbr
|
||||
FROM Ingredient i LEFT JOIN RecetteIngredient ri ON ri.ingredient = i.id
|
||||
GROUP BY i.id
|
||||
ORDER BY i.nom;";
|
||||
$resultatListeIngredient = mysqli_query($c, $requeteListeIngredient);
|
||||
$listeIngredient = mysqli_fetch_all($resultatListeIngredient);
|
||||
|
||||
//recuperation des ustensiles
|
||||
$requeteListeUstensile = "SELECT nom, id FROM Ustensile ORDER BY nom;";
|
||||
$resultatListeUstensile = mysqli_query($c, $requeteListeUstensile);
|
||||
$listeUstensile = mysqli_fetch_all($resultatListeUstensile);
|
||||
|
||||
//recuperation des unités
|
||||
$requeteListeUnite = "SELECT nom, id FROM Unite ORDER BY nom;";
|
||||
$resultatListeUnite = mysqli_query($c, $requeteListeUnite);
|
||||
$listeUnite = mysqli_fetch_all($resultatListeUnite);
|
||||
?>
|
23
controleurs/cConnexion.php
Normal file
23
controleurs/cConnexion.php
Normal file
|
@ -0,0 +1,23 @@
|
|||
<?php
|
||||
|
||||
$typePage = 0;
|
||||
|
||||
if(isset($_POST['motdepasse'])){
|
||||
if(crypt($_POST['motdepasse'],SEL) == HASHED_PASSWORD){
|
||||
$typePage = 1;
|
||||
$_SESSION['auth'] = true;
|
||||
}
|
||||
else{
|
||||
$typePage = -1;
|
||||
}
|
||||
}
|
||||
|
||||
if(isset($_POST['deconnexion'])){
|
||||
$_SESSION['auth'] = false;
|
||||
}
|
||||
|
||||
if($_SESSION['auth']){
|
||||
$typePage = 1;
|
||||
}
|
||||
|
||||
?>
|
74
controleurs/cElement.php
Normal file
74
controleurs/cElement.php
Normal file
|
@ -0,0 +1,74 @@
|
|||
<?php
|
||||
$c = seConnecter();
|
||||
|
||||
$titrePartUn = '???';
|
||||
$titrePartDeux = '???';
|
||||
|
||||
$pageExiste = false;
|
||||
|
||||
$type = NULL;
|
||||
$table = NULL;
|
||||
|
||||
|
||||
if (isset($_GET['type'])){
|
||||
$typeElement = $_GET['type'];
|
||||
switch ($typeElement){
|
||||
case 'ingredient':
|
||||
$type = 'ingredient';
|
||||
$titrePartUn = 'Ingredient';
|
||||
$table = 'Ingredient';
|
||||
$tableliaison = 'RecetteIngredient';
|
||||
$determinant = "l'";
|
||||
break;
|
||||
case 'ustensile':
|
||||
$type = 'ustensile';
|
||||
$titrePartUn = 'Ustensile';
|
||||
$table = 'Ustensile';
|
||||
$tableliaison = 'RecetteUstensile';
|
||||
$determinant = "l'";
|
||||
break;
|
||||
case 'unite':
|
||||
$type = 'unite';
|
||||
$titrePartUn = 'Unite';
|
||||
$table = 'Unite';
|
||||
$determinant = "l'";
|
||||
break;
|
||||
}
|
||||
if (isset($_GET['id'])){
|
||||
$idElement = intval($_GET['id']);
|
||||
|
||||
if (isset($_POST['nom'])){
|
||||
if ($type != 'unite'){
|
||||
$nomNvl = transformeCharsAutorises($_POST['nom']);
|
||||
}
|
||||
$paireColonneValeur = '';
|
||||
if ($type == 'ingredient'){
|
||||
foreach (lANNEE as $mois){
|
||||
$lMoisDispo[$mois] = isset($_POST[$mois]) ? 1 : 0;
|
||||
}
|
||||
foreach ($lMoisDispo as $mois => $dispo){
|
||||
$paireColonneValeur .= $mois . ' = ' . $dispo . ', ';
|
||||
}
|
||||
}
|
||||
$paireColonneValeur .= "nom = '$nomNvl' ";
|
||||
$reqNvl = "UPDATE $table SET $paireColonneValeur WHERE id = $idElement;";
|
||||
mysqli_query($c, $reqNvl);
|
||||
}
|
||||
|
||||
$requeteId = "SELECT * FROM $table WHERE id=$idElement;";
|
||||
$resultatId = mysqli_query($c, $requeteId);
|
||||
$infoElement = mysqli_fetch_assoc($resultatId);
|
||||
$pageExiste = ($infoElement) ? true : false ;
|
||||
$titrePartDeux = $infoElement['nom'];
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
$titrePage = $titrePartUn . ' : ' . $titrePartDeux;
|
||||
|
||||
$_SESSION['tableDernierElemVu'] = $table;
|
||||
$_SESSION['typeDernierElemVu'] = $type;
|
||||
$_SESSION['idDernierElemVu'] = $idElement;
|
||||
|
||||
deconnectBD($c);
|
||||
?>
|
7
controleurs/cPersonnes.php
Normal file
7
controleurs/cPersonnes.php
Normal file
|
@ -0,0 +1,7 @@
|
|||
<?php
|
||||
$c = seConnecter();
|
||||
|
||||
|
||||
|
||||
deconnectBD($c);
|
||||
?>
|
197
controleurs/cRecette.php
Normal file
197
controleurs/cRecette.php
Normal file
|
@ -0,0 +1,197 @@
|
|||
<?php
|
||||
$c = seConnecter();
|
||||
|
||||
//on commence par supposer que tout va mal (que la page reherchée n'existe pas)
|
||||
$titrePageAjout = '???';
|
||||
|
||||
$pageExiste = false;
|
||||
|
||||
if (isset($_GET['id'])){
|
||||
$idRecette = $_GET['id'];
|
||||
$_SESSION['idDerniereRecetteVu'] = $idRecette;
|
||||
$requeteId = "SELECT * FROM Recette WHERE id=$idRecette;";
|
||||
$resultatId = mysqli_query($c, $requeteId);
|
||||
$infoRecette = mysqli_fetch_assoc($resultatId);
|
||||
$pageExiste = ($infoRecette) ? 1 : ( $idRecette ? 0 : -1) ;
|
||||
if($pageExiste and isset($_GET['mode'])){
|
||||
switch($_GET['mode']){
|
||||
case 'edit':
|
||||
$pageExiste = 2;
|
||||
break;
|
||||
case 'suppr':
|
||||
$pageExiste = 3;
|
||||
break;
|
||||
case 'crea':
|
||||
$pageExiste = -2;
|
||||
break;
|
||||
|
||||
default:
|
||||
$pageExiste = 1;
|
||||
}
|
||||
}
|
||||
if($pageExiste == 2 or $pageExiste == -1){
|
||||
$listeIngredients = getAllIngredients();
|
||||
$listeUstensiles = getAllUstensiles();
|
||||
$listeRecettes = getAllRecettes();
|
||||
$listePreparations = getAllPreparations();
|
||||
}
|
||||
$titrePageAjout = $infoRecette['nom'];
|
||||
}
|
||||
|
||||
$titrePage .= ' : ' . $titrePageAjout;
|
||||
|
||||
if ($pageExiste){
|
||||
if((isset($_POST['edit']) and $pageExiste == 1) or $pageExiste == -2){
|
||||
//dans le cas 1, le bouton 'sauvegarder les modifs' a été cliqué, il faut donc faire les UPDATE sql.
|
||||
//dans le cas 2, une nouvelle recette a éé crée
|
||||
$infosRecette = [];
|
||||
|
||||
$infosRecette['ustensile'] = [];
|
||||
if(isset($_POST['ustensile'])){
|
||||
foreach($_POST['ustensile'] as $id => $ustensile){
|
||||
$infosRecette['ustensile'][$id]['commentaire'] = ecritureVersLecture($ustensile['commentaire']);
|
||||
}
|
||||
}
|
||||
|
||||
$infosRecette['preparation'] = [];
|
||||
if(isset($_POST['preparation'])){
|
||||
foreach($_POST['preparation'] as $id => $preparation){
|
||||
$infosRecette['preparation'][$id]['duree'] = calculeMinutesFromTexte($preparation['duree']);
|
||||
$infosRecette['preparation'][$id]['temp'] = $preparation['temp'];
|
||||
}
|
||||
}
|
||||
|
||||
$infosRecette['ingredient'] = [];
|
||||
if(isset($_POST['ingredient'])){
|
||||
foreach($_POST['ingredient'] as $id => $ingredient){
|
||||
$infosRecette['ingredient'][$id]['quantite'] = $ingredient['quantite'];
|
||||
$infosRecette['ingredient'][$id]['unite'] = $ingredient['unite'];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$infosRecette['reutilise'] = [];
|
||||
if(isset($_POST['reutilise'])){
|
||||
foreach($_POST['reutilise'] as $id => $elem){
|
||||
$infosRecette['reutilise'][$id] = $id;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
$infosRecette['nom'] = $_POST['nom'];
|
||||
$infosRecette['nbPortion'] = $_POST['nbPortion'];
|
||||
$infosRecette['unitePortion'] = $_POST['unitePortion'];
|
||||
$infosRecette['tempsTotal'] = $_POST['tempsTotal'];
|
||||
$infosRecette['genre'] = $_POST['genre'];
|
||||
$infosRecette['realisation'] = $_POST['procedure'];
|
||||
|
||||
$idRecette = insererRecette($infosRecette, $infosRecette['ingredient'], $infosRecette['ustensile'], $infosRecette['preparation'], $infosRecette['reutilise'], $idRecette);
|
||||
|
||||
}
|
||||
|
||||
//on recupere toutes les infos sur la recette sélectionnée.
|
||||
//(elles ont p-ê été modifiés juste avant, mais dans le doute ...)
|
||||
$requeteRecette =
|
||||
"SELECT r.nom, r.id idRecette, r.nbPortion portions, u.nom unite, r.realisation, u.id idU, r.tempsTotal tempsTotal, g.nom genre
|
||||
FROM Recette r JOIN Unite u ON r.unitePortion = u.id JOIN Genre g ON r.genre = g.id
|
||||
WHERE r.id = $idRecette
|
||||
ORDER BY nom;
|
||||
";
|
||||
$requeteIngredient =
|
||||
"SELECT ri.ingredient idIngredient, i.nom nom, ri.quantite quantite, u.nom unite, u.id idU
|
||||
FROM Ingredient i JOIN RecetteIngredient ri ON i.id = ri.ingredient JOIN Unite u ON ri.unite = u.id
|
||||
WHERE ri.recette = $idRecette
|
||||
ORDER BY nom;
|
||||
";
|
||||
$requeteUstensile = "
|
||||
SELECT ru.ustensile idUstensile, u.nom nom, ru.commentaire commentaire
|
||||
FROM Ustensile u JOIN RecetteUstensile ru ON u.id = ru.ustensile
|
||||
WHERE ru.recette = $idRecette
|
||||
ORDER BY nom;
|
||||
";
|
||||
$requetePreparation = "
|
||||
SELECT rp.preparation idPreparation, p.nom nom, rp.duree duree, rp.temperature temperature
|
||||
FROM Preparation p JOIN RecettePreparation rp ON p.id = rp.preparation
|
||||
WHERE rp.recette = $idRecette
|
||||
ORDER BY nom;
|
||||
";
|
||||
$requeteGenre = "
|
||||
SELECT g.id idGenre, g.nom nom
|
||||
FROM Genre g JOIN Recette r ON g.id = r.genre
|
||||
WHERE r.id = $idRecette;
|
||||
";
|
||||
$requeteReutilise = "
|
||||
SELECT reu.utilisee id, rec.nom nom
|
||||
FROM Reutilise reu JOIN Recette rec ON reu.utilisee = rec.id
|
||||
WHERE reu.utilisant = $idRecette
|
||||
ORDER BY nom;
|
||||
";
|
||||
|
||||
$resultatRecette = mysqli_query($c, $requeteRecette);
|
||||
$resultatIngredient = mysqli_query($c, $requeteIngredient);
|
||||
$resultatUstensile = mysqli_query($c, $requeteUstensile);
|
||||
$resultatPreparation = mysqli_query($c, $requetePreparation);
|
||||
$resultatGenre = mysqli_query($c, $requeteGenre);
|
||||
$resultatReutilise = mysqli_query($c, $requeteReutilise);
|
||||
|
||||
$infoRecette = mysqli_fetch_assoc($resultatRecette);
|
||||
$infoRecette['tempsTotal'] = calculeTexteFromMinutes($infoRecette['tempsTotal']);
|
||||
|
||||
$nomGenre = mysqli_fetch_assoc($resultatGenre)['nom'];
|
||||
|
||||
$listeIngredientsRecette = [];
|
||||
while ($ingredient = mysqli_fetch_assoc($resultatIngredient)){
|
||||
$listeIngredientsRecette[$ingredient['idIngredient']] = [];
|
||||
$listeIngredientsRecette[$ingredient['idIngredient']]['nom'] = $ingredient['nom'];
|
||||
$listeIngredientsRecette[$ingredient['idIngredient']]['quantite'] = $ingredient['quantite'];
|
||||
$listeIngredientsRecette[$ingredient['idIngredient']]['unite'] = $ingredient['unite'];
|
||||
$listeIngredientsRecette[$ingredient['idIngredient']]['idU'] = $ingredient['idU'];
|
||||
}
|
||||
|
||||
$listeUstensilesRecette = [];
|
||||
while ($ustensile = mysqli_fetch_assoc($resultatUstensile)){
|
||||
$listeUstensilesRecette[$ustensile['idUstensile']] = [];
|
||||
$listeUstensilesRecette[$ustensile['idUstensile']]['nom'] = $ustensile['nom'];
|
||||
$listeUstensilesRecette[$ustensile['idUstensile']]['commentaire'] = $ustensile['commentaire'];
|
||||
}
|
||||
|
||||
$listePreparationsRecette = [];
|
||||
while ($preparation = mysqli_fetch_assoc($resultatPreparation)){
|
||||
$listePreparationsRecette[$preparation['idPreparation']] = [];
|
||||
$listePreparationsRecette[$preparation['idPreparation']]['nom'] = $preparation['nom'];
|
||||
$listePreparationsRecette[$preparation['idPreparation']]['duree'] = calculeTexteFromMinutes($preparation['duree']);
|
||||
$listePreparationsRecette[$preparation['idPreparation']]['temperature'] = $preparation['temperature'];
|
||||
}
|
||||
|
||||
$listeReutiliseRecette = [];
|
||||
while ($recette = mysqli_fetch_assoc($resultatReutilise)){
|
||||
$listeReutiliseRecette[$recette['id']] = $recette;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//selon les cas, on peut avoir différentes action à faire
|
||||
switch($pageExiste){
|
||||
case 1:
|
||||
$infoRecette['realisation'] = ecritureVersLecture($infoRecette['realisation']);
|
||||
foreach($listeUstensilesRecette as $ustensile){
|
||||
$ustensile['commentaire'] = ecritureVersLecture($ustensile['commentaire']);
|
||||
}
|
||||
break;
|
||||
|
||||
case 2:
|
||||
$infoRecette['realisation'] = lectureVersEcriture($infoRecette['realisation']);
|
||||
foreach($listeUstensilesRecette as $id => $ustensile){
|
||||
$listeUstensilesRecette[$id]['commentaire'] = lectureVersEcriture($listeUstensilesRecette[$id]['commentaire']);
|
||||
}
|
||||
case -1:
|
||||
$listeUnite = recupereUnites($c);
|
||||
$listeGenre = recupereGenres($c);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
deconnectBD($c);
|
||||
|
||||
?>
|
9
controleurs/cStatistiques.php
Normal file
9
controleurs/cStatistiques.php
Normal file
|
@ -0,0 +1,9 @@
|
|||
<?php
|
||||
$c = seConnecter();
|
||||
|
||||
$requeteNbRecettes = "SELECT COUNT(*) FROM Recette;";
|
||||
$resultatNbRecettes = mysqli_query($c, $requeteNbRecettes);
|
||||
$nbRecettes = mysqli_fetch_all($resultatNbRecettes)[0][0];
|
||||
|
||||
deconnectBD($c);
|
||||
?>
|
31
controleurs/cSupprimerElement.php
Normal file
31
controleurs/cSupprimerElement.php
Normal file
|
@ -0,0 +1,31 @@
|
|||
<?php
|
||||
$c = seConnecter();
|
||||
|
||||
$reussi = false;
|
||||
//suppression d'un élément
|
||||
if (isset($_GET['delete'])){
|
||||
$tableSuppr = $_SESSION['tableDernierElemVu'];
|
||||
$idSuppr = $_SESSION['idDernierElemVu'];
|
||||
$typeSuppr = $_SESSION['typeDernierElemVu'];
|
||||
|
||||
if ($tableSuppr != 'Humain'){
|
||||
|
||||
$requeteVerifInutilise = "
|
||||
SELECT *
|
||||
FROM $tableSuppr t JOIN Recette$tableSuppr rt ON t.id = rt.$typeSuppr
|
||||
WHERE t.id = $idSuppr;
|
||||
";
|
||||
$verifInutilise = mysqli_query($c, $requeteVerifInutilise);
|
||||
$reussi = !mysqli_fetch_assoc($verifInutilise);
|
||||
}
|
||||
else {
|
||||
$reussi = true;
|
||||
}
|
||||
|
||||
if($reussi){
|
||||
$requeteSuppr = "DELETE FROM $tableSuppr WHERE id=$idSuppr;";
|
||||
mysqli_query($c, $requeteSuppr);
|
||||
}
|
||||
}
|
||||
deconnectBD($c);
|
||||
?>
|
36
controleurs/cSupprimerRecette.php
Normal file
36
controleurs/cSupprimerRecette.php
Normal file
|
@ -0,0 +1,36 @@
|
|||
<?php
|
||||
$c = seConnecter();
|
||||
|
||||
$reussi = false;
|
||||
|
||||
//suppression d'une reccette. On vérifie d'abord que l'on peut la supprimer.
|
||||
if (isset($_GET['id'])){
|
||||
$idSuppr = $_SESSION['idDerniereRecetteVu'];
|
||||
|
||||
$requeteVerifInutilise = "
|
||||
SELECT *
|
||||
FROM Reutilise r
|
||||
WHERE r.utilisee = $idSuppr;
|
||||
";
|
||||
$verifInutilise = mysqli_query($c, $requeteVerifInutilise);
|
||||
$reussi = !mysqli_fetch_assoc($verifInutilise);
|
||||
|
||||
if($reussi){
|
||||
$requetesSuppr = array(
|
||||
"BEGIN;",
|
||||
"DELETE FROM RecetteIngredient WHERE recette = $idSuppr;",
|
||||
"DELETE FROM RecettePreparation WHERE recette = $idSuppr;",
|
||||
"DELETE FROM RecetteUstensile WHERE recette = $idSuppr;",
|
||||
"DELETE FROM Reutilise WHERE utilisant = $idSuppr;",
|
||||
"DELETE FROM Recette WHERE id=$idSuppr;",
|
||||
"COMMIT;"
|
||||
);
|
||||
|
||||
foreach($requetesSuppr as $req){
|
||||
$reussi = mysqli_query($c, $req);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
11
controleurs/cTests.php
Normal file
11
controleurs/cTests.php
Normal file
|
@ -0,0 +1,11 @@
|
|||
<?php
|
||||
|
||||
if(isset($_POST['textTest'])){
|
||||
echo "<pre>";
|
||||
$ret = calculeTexteFromMinutes($_POST['textTest']);
|
||||
|
||||
print_r($ret);
|
||||
echo "</pre>";
|
||||
}
|
||||
|
||||
?>
|
0
controleurs/void.php
Normal file
0
controleurs/void.php
Normal file
70
inc/fonctions.php
Normal file
70
inc/fonctions.php
Normal file
|
@ -0,0 +1,70 @@
|
|||
<?php
|
||||
function transformeCharsAutorises($entree){
|
||||
$transformations = [
|
||||
'#Œ#' => 'Oe',
|
||||
'#œ#' => 'oe',
|
||||
'#Æ#' => 'Ae',
|
||||
'#æ#' => 'ae',
|
||||
'#[^a-zàâäéèêëîïôöùûüÿçñA-ZÀÂÄÉÈÊËÎÏÔÖÙÛÜŸÇÑ ,\'-]#' => '',
|
||||
'#^[ ,-]+#' => '',
|
||||
'#[ ]+$#' => '',
|
||||
'#\'#' => '\\\''
|
||||
];
|
||||
foreach ($transformations as $reEtape => $remplacement){
|
||||
$entree = preg_replace($reEtape, $remplacement, $entree);
|
||||
}
|
||||
|
||||
$entree = mb_strtoupper(mb_substr($entree, 0, 1)) . mb_substr($entree, 1);
|
||||
return $entree;
|
||||
}
|
||||
|
||||
function calculeMinutesFromTexte($texteDuree){
|
||||
$texteDuree = preg_replace("/ /", "", $texteDuree);
|
||||
|
||||
preg_match("#(?:([0-9]*) ?j(?:our\(s\)|our|ours)?)? ?(?:([0-9]*) ?h(?:eure\(s\)|eure|eures)?)? ?(?:([0-9]*) ?min(?:ute\(s\)|ute|utes)?)?#", $texteDuree, $matches) ;
|
||||
|
||||
$dureeMinutes = 0;
|
||||
|
||||
foreach($matches as $clef => $duree){
|
||||
if ($clef == 1 and $duree != NULL){$dureeMinutes += 1440*$duree;}
|
||||
if ($clef == 2 and $duree != NULL){$dureeMinutes += 60*$duree;}
|
||||
if ($clef == 3){$dureeMinutes += intval($duree);}
|
||||
}
|
||||
|
||||
return $dureeMinutes;
|
||||
}
|
||||
|
||||
function calculeTexteFromMinutes($minute){
|
||||
|
||||
$restant = $minute;
|
||||
$texteMinutes = '';
|
||||
$tempsJours = intdiv($restant,1440);
|
||||
$texteMinutes .= ($tempsJours) != 0 ? $tempsJours . ' jour(s) ' : '';
|
||||
$restant = $restant % 1440;
|
||||
$tempsHeures = intdiv($restant,60);
|
||||
$texteMinutes .= ($tempsHeures) != 0 ? $tempsHeures . ' heure(s) ' : '';
|
||||
$restant = $restant % 60;
|
||||
$texteMinutes .= ($restant) != 0 ? $restant . ' minute(s)' : '';
|
||||
|
||||
|
||||
return $texteMinutes;
|
||||
}
|
||||
|
||||
function lectureVersEcriture($texte){
|
||||
$texte = preg_replace("#<br/>#","##",$texte);
|
||||
$texte = preg_replace("#</p><p>#","\n",$texte);
|
||||
$texte = preg_replace("#⌀#","#diam",$texte);
|
||||
return $texte;
|
||||
}
|
||||
function ecritureVersLecture($texte){
|
||||
$texte = preg_replace("/##/","<br/>",$texte);
|
||||
$texte = preg_replace("/\n/","</p><p>",$texte);
|
||||
$texte = preg_replace("/#diam/","⌀",$texte);
|
||||
return $texte;
|
||||
}
|
||||
|
||||
function echappementBDD($texte){ //echappe tous les caractères pour que la chaînes soit acceptable dasn une requete SQL
|
||||
$texte = preg_replace("/'/","\'",$texte);
|
||||
return $texte;
|
||||
}
|
||||
?>
|
240
inc/modele.php
Normal file
240
inc/modele.php
Normal file
|
@ -0,0 +1,240 @@
|
|||
<?php
|
||||
|
||||
function seConnecter() {
|
||||
if($_SESSION['auth']){
|
||||
$connexion = mysqli_connect(SERVEUR, SUPER_UTILISATRICE, SUPER_MOTDEPASSE, BDD);
|
||||
}
|
||||
else{
|
||||
$connexion = mysqli_connect(SERVEUR, UTILISATRICE_PAR_DEFAUT, MOTDEPASSE_PAR_DEFAUT, BDD);
|
||||
}
|
||||
if (mysqli_connect_errno()) {
|
||||
echo "<script>console.log('Echec de la connexion à la base');</script>";
|
||||
exit();
|
||||
}
|
||||
mysqli_set_charset($connexion,'utf8');
|
||||
return $connexion;
|
||||
}
|
||||
|
||||
// déconnexion de la BD
|
||||
function deconnectBD($connexion) {
|
||||
mysqli_close($connexion);
|
||||
}
|
||||
|
||||
function getAllIngredients(){
|
||||
$c = seConnecter();
|
||||
$requete = "
|
||||
SELECT *
|
||||
FROM Ingredient
|
||||
ORDER BY nom;
|
||||
";
|
||||
$resultatIngredients = mysqli_query($c, $requete);
|
||||
$listeIngredients = [];
|
||||
while($ingredient = mysqli_fetch_assoc($resultatIngredients)){
|
||||
$listeIngredients[$ingredient['id']] = $ingredient;
|
||||
}
|
||||
|
||||
deconnectBD($c);
|
||||
return $listeIngredients;
|
||||
}
|
||||
|
||||
function getAllUstensiles(){
|
||||
$c = seConnecter();
|
||||
$requete = "
|
||||
SELECT *
|
||||
FROM Ustensile
|
||||
ORDER BY nom;
|
||||
";
|
||||
$resultatUstensiles = mysqli_query($c, $requete);
|
||||
$listeUstensiles = [];
|
||||
while($ustensile = mysqli_fetch_assoc($resultatUstensiles)){
|
||||
$listeUstensiles[$ustensile['id']] = $ustensile;
|
||||
}
|
||||
|
||||
deconnectBD($c);
|
||||
return $listeUstensiles;
|
||||
}
|
||||
|
||||
function getAllPreparations(){
|
||||
$c = seConnecter();
|
||||
$requete = "
|
||||
SELECT *
|
||||
FROM Preparation
|
||||
ORDER BY nom;
|
||||
";
|
||||
$resultatPreparations = mysqli_query($c, $requete);
|
||||
$listePreparations = [];
|
||||
while($preparation = mysqli_fetch_assoc($resultatPreparations)){
|
||||
$listePreparations[$preparation['id']] = $preparation;
|
||||
}
|
||||
|
||||
deconnectBD($c);
|
||||
return $listePreparations;
|
||||
}
|
||||
|
||||
function getAllRecettes(){
|
||||
$c = seConnecter();
|
||||
$requete = "
|
||||
SELECT *
|
||||
FROM Recette
|
||||
ORDER BY nom;
|
||||
";
|
||||
$resultatRecettes = mysqli_query($c, $requete);
|
||||
$listeRecettes = [];
|
||||
while($recette = mysqli_fetch_assoc($resultatRecettes)){
|
||||
$listeRecettes[$recette['id']] = $recette;
|
||||
}
|
||||
|
||||
deconnectBD($c);
|
||||
return $listeRecettes;
|
||||
}
|
||||
|
||||
function recupereGenres($c){
|
||||
$requete = "
|
||||
SELECT *
|
||||
FROM Genre
|
||||
;";
|
||||
$resultatGenre = mysqli_query($c,$requete);
|
||||
$listeGenres = [];
|
||||
|
||||
while ($genre = mysqli_fetch_assoc($resultatGenre)){
|
||||
$listeGenres[$genre['id']] = $genre['nom'];
|
||||
}
|
||||
|
||||
return $listeGenres;
|
||||
}
|
||||
|
||||
function recupereUnites($c){
|
||||
$requete = "
|
||||
SELECT *
|
||||
FROM Unite
|
||||
;";
|
||||
$resultatUnite = mysqli_query($c,$requete);
|
||||
$listeUnites = [];
|
||||
|
||||
while ($unite = mysqli_fetch_assoc($resultatUnite)){
|
||||
$listeUnites[$unite['id']] = $unite['nom'];
|
||||
}
|
||||
return $listeUnites;
|
||||
}
|
||||
|
||||
// modification vaut false si on effectue une création de recette et l'id de la recette à modifier sinon
|
||||
// les listes d'ingrédients, de préparation et d'ustensile sont des tableaux de tableaux indexés sur les id des éléments utilisés.
|
||||
function insererRecette($infosRecette, $listeIngredients, $listeUstensile, $listePreparation, $listeReutilise, $modification){
|
||||
$c = seConnecter();
|
||||
try {
|
||||
mysqli_begin_transaction($c);
|
||||
|
||||
$nom = echappementBDD($infosRecette['nom']);
|
||||
$tempsTotal = calculeMinutesFromTexte($infosRecette['tempsTotal']);
|
||||
$genre = $infosRecette['genre'];
|
||||
$unitePortion = $infosRecette['unitePortion'];
|
||||
$nbPortion = $infosRecette['nbPortion'];
|
||||
$realisation = echappementBDD(ecritureVersLecture($infosRecette['realisation']));
|
||||
|
||||
if($modification){
|
||||
$idRecette = $modification;
|
||||
$requetePrincipale = "
|
||||
UPDATE Recette
|
||||
SET
|
||||
nom = '$nom',
|
||||
tempsTotal = $tempsTotal,
|
||||
genre = $genre,
|
||||
unitePortion = $unitePortion,
|
||||
nbPortion = $nbPortion,
|
||||
realisation = '$realisation'
|
||||
WHERE id = $idRecette;
|
||||
";
|
||||
mysqli_query($c, $requetePrincipale);
|
||||
|
||||
$requeteSupprIngredients = "DELETE FROM RecetteIngredient WHERE recette = $idRecette;";
|
||||
mysqli_query($c, $requeteSupprIngredients);
|
||||
|
||||
$requeteSupprUstensiles = "DELETE FROM RecetteUstensile WHERE recette = $idRecette;";
|
||||
mysqli_query($c, $requeteSupprUstensiles);
|
||||
|
||||
$requeteSupprPreparations = "DELETE FROM RecettePreparation WHERE recette = $idRecette;";
|
||||
mysqli_query($c, $requeteSupprPreparations);
|
||||
|
||||
$requeteSupprReutilises = "DELETE FROM Reutilise WHERE utilisant = $idRecette;";
|
||||
mysqli_query($c, $requeteSupprReutilises);
|
||||
|
||||
}else{
|
||||
$requetePrincipale = "
|
||||
INSERT INTO Recette (nom, tempsTotal, genre, unitePortion, nbPortion, realisation)
|
||||
VALUES (
|
||||
'$nom',
|
||||
$tempsTotal,
|
||||
$genre,
|
||||
$unitePortion,
|
||||
$nbPortion,
|
||||
'$realisation'
|
||||
);";
|
||||
mysqli_query($c, $requetePrincipale);
|
||||
$idRecette = mysqli_insert_id($c);
|
||||
}
|
||||
|
||||
foreach($listeIngredients as $id => $ingredient){
|
||||
$quantite = $ingredient['quantite'];
|
||||
$unite = $ingredient['unite'];
|
||||
$requete = "
|
||||
INSERT INTO RecetteIngredient (ingredient, recette, quantite, unite)
|
||||
VALUES (
|
||||
$id,
|
||||
$idRecette,
|
||||
$quantite,
|
||||
$unite
|
||||
)
|
||||
;";
|
||||
mysqli_query($c, $requete);
|
||||
}
|
||||
|
||||
foreach($listeUstensile as $id => $ustensile){
|
||||
$commentaire = mysqli_real_escape_string($c, $ustensile['commentaire']);
|
||||
$requete = "
|
||||
INSERT INTO RecetteUstensile (ustensile, recette, commentaire)
|
||||
VALUES (
|
||||
$id,
|
||||
$idRecette,
|
||||
'$commentaire'
|
||||
)
|
||||
;";
|
||||
mysqli_query($c, $requete);
|
||||
}
|
||||
|
||||
foreach($listePreparation as $id => $preparation){
|
||||
$duree = $preparation['duree'];
|
||||
$temperature = $preparation['temp'];
|
||||
$requete = "
|
||||
INSERT INTO RecettePreparation (preparation, recette, duree, temperature)
|
||||
VALUES (
|
||||
$id,
|
||||
$idRecette,
|
||||
'$duree',
|
||||
'$temperature'
|
||||
)
|
||||
;";
|
||||
mysqli_query($c, $requete);
|
||||
}
|
||||
|
||||
foreach($listeReutilise as $id => $utilisee){
|
||||
$requete = "
|
||||
INSERT INTO Reutilise (utilisee, utilisant)
|
||||
VALUES (
|
||||
$id,
|
||||
$idRecette
|
||||
)
|
||||
;";
|
||||
mysqli_query($c, $requete);
|
||||
}
|
||||
mysqli_commit($c);
|
||||
}
|
||||
catch (Exception $e){
|
||||
mysqli_query('ROLLBACK');
|
||||
$echec = true;
|
||||
}
|
||||
|
||||
return $idRecette;
|
||||
}
|
||||
|
||||
|
||||
?>
|
83
inc/routes.php
Normal file
83
inc/routes.php
Normal file
|
@ -0,0 +1,83 @@
|
|||
<?php
|
||||
$routes = array(
|
||||
'accueil' => array(
|
||||
'controleur' => 'cAccueil',
|
||||
'vue' => 'vAccueil',
|
||||
'nom' => 'Accueil',
|
||||
'aside' => 'aAccueil',
|
||||
'script' => 'sAccueil'
|
||||
),
|
||||
|
||||
'ajouterRecette' => array(
|
||||
'controleur' => 'cAjouterRecette',
|
||||
'vue' => 'vAjouterRecette',
|
||||
'nom' => 'Ajouter une recette',
|
||||
'aside' => 'aAjouterRecette',
|
||||
'script' => 'void'
|
||||
),
|
||||
|
||||
'ajouterElement' => array(
|
||||
'controleur' => 'cAjouterElement',
|
||||
'vue' => 'vAjouterElement',
|
||||
'nom' => 'Ajouter des éléments',
|
||||
'aside' => 'void',
|
||||
'script' => 'void'
|
||||
),
|
||||
|
||||
'statistiques' => array(
|
||||
'controleur' => 'cStatistiques',
|
||||
'vue' => 'vStatistiques',
|
||||
'nom' => 'Statistiques',
|
||||
'aside' => 'void',
|
||||
'script' => 'void'
|
||||
),
|
||||
|
||||
'recette' => array(
|
||||
'controleur' => 'cRecette',
|
||||
'vue' => 'vRecette',
|
||||
'nom' => 'Recette',
|
||||
'aside' => 'aRecette',
|
||||
'script' => 'sRecette'
|
||||
),
|
||||
|
||||
'supprimerRecette' => array(
|
||||
'controleur' => 'cSupprimerRecette',
|
||||
'vue' => 'vSupprimerRecette',
|
||||
'nom' => 'Suppresion d\'une recette',
|
||||
'aside' => 'void',
|
||||
'script' => 'void'
|
||||
),
|
||||
|
||||
'supprimerElement' => array(
|
||||
'controleur' => 'cSupprimerElement',
|
||||
'vue' => 'vSupprimerElement',
|
||||
'nom' => 'Suppresion d\'un élément',
|
||||
'aside' => 'void',
|
||||
'script' => 'void'
|
||||
),
|
||||
|
||||
'element' => array(
|
||||
'controleur' => 'cElement',
|
||||
'vue' => 'vElement',
|
||||
'nom' => '',
|
||||
'aside' => 'void',
|
||||
'script' => 'void'
|
||||
),
|
||||
|
||||
'connexion' => array(
|
||||
'controleur' => 'cConnexion',
|
||||
'vue' => 'vConnexion',
|
||||
'nom' => 'Connexion',
|
||||
'aside' => 'void',
|
||||
'script' => 'void'
|
||||
),
|
||||
|
||||
'test' => array(
|
||||
'controleur' => 'cTests',
|
||||
'vue' => 'vTests',
|
||||
'nom' => 'Tests',
|
||||
'aside' => 'void',
|
||||
'script' => 'void'
|
||||
)
|
||||
);
|
||||
?>
|
72
index.php
Normal file
72
index.php
Normal file
|
@ -0,0 +1,72 @@
|
|||
<?php // contrôleur frontal
|
||||
session_start();
|
||||
|
||||
require('inc/constantes.php');
|
||||
require('inc/routes.php');
|
||||
require('inc/modele.php');
|
||||
require('inc/fonctions.php');
|
||||
|
||||
if(!(isset($_SESSION['auth']))){
|
||||
$_SESSION['auth'] = false;
|
||||
}
|
||||
|
||||
$titrePage = 'Recettes & pâtisserie 🍪 '; //pre-set des valeurs des chemins des fichiers
|
||||
|
||||
$cheminControleur = 'controleurs/cAccueil.php'; //par défaut, on charge l'accueil
|
||||
$cheminVue = 'vues/vAccueil.php';
|
||||
$cheminAside = 'asides/aAccueil.php';
|
||||
|
||||
if(isset($_GET['page'])) { //on détermine quelle page est demandée
|
||||
$nomPage = $_GET['page'];
|
||||
}else{
|
||||
$nomPage = 'accueil';
|
||||
}
|
||||
if(!isset($routes[$nomPage])) { //si la page demandée est définie, on crée les chemins
|
||||
$nomPage = "accueil";
|
||||
}
|
||||
|
||||
|
||||
$controleur = $routes[$nomPage]['controleur'];
|
||||
$vue = $routes[$nomPage]['vue'];
|
||||
$aside = $routes[$nomPage]['aside'];
|
||||
$script = $routes[$nomPage]['script'];
|
||||
|
||||
$cheminControleur = "controleurs/$controleur.php";
|
||||
$cheminVue = "vues/$vue.php";
|
||||
$cheminAside = "asides/$aside.php";
|
||||
$cheminScript = "scripts/$script.js";
|
||||
$titrePage = $titrePage . $routes[$nomPage]['nom'];
|
||||
|
||||
include($cheminControleur); //on charge le controlleur avant tout affichage de HTML
|
||||
|
||||
?>
|
||||
|
||||
<!DOCTYPE html> <!--Définit la structure grossière de la page, ainsi que le meta-->
|
||||
<html>
|
||||
<head>
|
||||
<meta charset='utf-8'/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<meta name="description" content="Bienvenue sur mon classeur de recettes, contenant un peu de tout, du gâteau au plat en passant par les boissons !"/>
|
||||
<meta name="keywords" content="cuisine, recette, recettes, pâtisserie"/>
|
||||
<meta name="robots" content="index, nofollow"/>
|
||||
<title><?= $titrePage ?></title>
|
||||
<link rel='stylesheet' href='style.css' type='text/css'/>
|
||||
<script type="module" src="<?= $cheminScript ?>"></script>
|
||||
<link rel="icon" href="contenus/icone.svg" />
|
||||
</head>
|
||||
<body>
|
||||
<?php
|
||||
include("static/entete.php"); //chargement des éléments statiques et de la vue
|
||||
?>
|
||||
<div id="central">
|
||||
<?php
|
||||
include("static/menu.php");
|
||||
include($cheminVue);
|
||||
include($cheminAside);
|
||||
?>
|
||||
</div>
|
||||
<?php
|
||||
include("static/footer.php");
|
||||
?>
|
||||
</body>
|
||||
</html>
|
13
scripts/fonctions.js
Normal file
13
scripts/fonctions.js
Normal file
|
@ -0,0 +1,13 @@
|
|||
export var setEventSample = function(iRechercheIngredients, ldIngredients){
|
||||
iRechercheIngredients.addEventListener('input', function (el, index, table){
|
||||
Array.from(ldIngredients).forEach(function(el, index, ldIngredients){
|
||||
|
||||
if(RegExp("div-.*" + this.value, 'i').test(el.getAttribute('nom'))){
|
||||
el.classList.remove('sample');
|
||||
}
|
||||
else{
|
||||
el.classList.add("sample");
|
||||
}
|
||||
}, iRechercheIngredients);
|
||||
});
|
||||
};
|
9
scripts/sAccueil.js
Normal file
9
scripts/sAccueil.js
Normal file
|
@ -0,0 +1,9 @@
|
|||
import * as fonc from "./fonctions.js";
|
||||
|
||||
window.onload = function(){
|
||||
var iRechercheIngredients = document.getElementById('rechercheIngredients');
|
||||
var ldIngredients = document.getElementsByClassName('divIngredient');
|
||||
|
||||
fonc.setEventSample(iRechercheIngredients, ldIngredients);
|
||||
|
||||
}
|
129
scripts/sRecette.js
Normal file
129
scripts/sRecette.js
Normal file
|
@ -0,0 +1,129 @@
|
|||
import * as fonc from "./fonctions.js";
|
||||
|
||||
window.onload = function(){
|
||||
|
||||
var iRechercheIngredients = document.getElementById('rechercheIngredients');
|
||||
var ldIngredients = document.getElementsByClassName('divIngredient');
|
||||
|
||||
fonc.setEventSample(iRechercheIngredients, ldIngredients);
|
||||
|
||||
|
||||
var aCheckboxes = document.querySelectorAll('aside input.cb');
|
||||
var liListeIngredients = document.getElementById('listeIngredients');
|
||||
var liListeUstensiles = document.getElementById('listeUstensiles');
|
||||
var liListePreparations = document.getElementById('listePreparations');
|
||||
var ancreNoeudsReutilise = document.getElementById('ancreNoeudsReutilise');
|
||||
if (liListeIngredients){
|
||||
var sampleIngredient = document.getElementById('sampleIngredient');
|
||||
var sampleUstensile = document.getElementById('sampleUstensile');
|
||||
var samplePreparation = document.getElementById('samplePreparation');
|
||||
for (var cb of aCheckboxes){
|
||||
cb.onchange = function(){
|
||||
if(this.checked){
|
||||
this.parentNode.setAttribute('class', 'important')
|
||||
|
||||
}else{
|
||||
this.parentNode.removeAttribute('class');
|
||||
}
|
||||
|
||||
switch(this.className){
|
||||
case 'autorise cb ingredient':
|
||||
var id = this.getAttribute('idIngredient')
|
||||
if (this.checked){
|
||||
var nvlIngredient = sampleIngredient.cloneNode(true);
|
||||
nvlIngredient.removeAttribute('class');
|
||||
nvlIngredient.setAttribute('id', 'ingredient' + id);
|
||||
|
||||
var nomIngredient = this.getAttribute('nom') + ' : ';
|
||||
var label = nvlIngredient.firstElementChild;
|
||||
label.appendChild(document.createTextNode(nomIngredient));
|
||||
label.setAttribute('for', 'ingredient' + id);
|
||||
|
||||
var input = label.nextElementSibling;
|
||||
input.setAttribute('id', 'ingredient' + id);
|
||||
input.setAttribute('name', 'ingredient[' + id + '][quantite]');
|
||||
input.setAttribute('required', '');
|
||||
|
||||
var selectElem = input.nextElementSibling;
|
||||
selectElem.setAttribute('name', 'ingredient[' + id + '][unite]');
|
||||
selectElem.setAttribute('required', '');
|
||||
|
||||
liListeIngredients.appendChild(nvlIngredient);
|
||||
}else{
|
||||
document.getElementById('ingredient' + id).remove();
|
||||
}
|
||||
break;
|
||||
|
||||
case 'autorise cb ustensile':
|
||||
|
||||
var id = this.getAttribute('idUstensile')
|
||||
if(this.checked){
|
||||
var nvlUstensile = sampleUstensile.cloneNode(true);
|
||||
nvlUstensile.removeAttribute('class');
|
||||
nvlUstensile.setAttribute('id', 'ustensile' + id);
|
||||
|
||||
var nomUstensile = this.getAttribute('nom') + ' : ';
|
||||
var label = nvlUstensile.firstElementChild;
|
||||
label.appendChild(document.createTextNode(nomUstensile));
|
||||
label.setAttribute('for', 'ustensile' + id);
|
||||
|
||||
var input = label.nextElementSibling;
|
||||
input.setAttribute('name', 'ustensile[' + id + '][commentaire]');
|
||||
|
||||
liListeUstensiles.appendChild(nvlUstensile);
|
||||
}else{
|
||||
document.getElementById('ustensile' + id).remove();
|
||||
}
|
||||
break;
|
||||
|
||||
case 'autorise cb preparation':
|
||||
|
||||
var id = this.getAttribute('idPreparation')
|
||||
if(this.checked){
|
||||
var nvlPreparation = samplePreparation.cloneNode(true);
|
||||
nvlPreparation.removeAttribute('class');
|
||||
nvlPreparation.setAttribute('id', 'preparation' + id);
|
||||
|
||||
var nomPreparation = this.getAttribute('nom') + ' : ';
|
||||
var label = nvlPreparation.firstElementChild;
|
||||
label.appendChild(document.createTextNode(nomPreparation));
|
||||
|
||||
var inputDuree = label.nextElementSibling;
|
||||
inputDuree.setAttribute('name', 'preparation[' + id + '][duree]');
|
||||
inputDuree.setAttribute('required', true);
|
||||
|
||||
var inputTemp = label.nextElementSibling.nextElementSibling;
|
||||
inputTemp.setAttribute('name', 'preparation[' + id + '][temp]');
|
||||
inputTemp.setAttribute('required', true);
|
||||
|
||||
liListePreparations.appendChild(nvlPreparation);
|
||||
}else{
|
||||
document.getElementById('preparation' + id).remove();
|
||||
}
|
||||
break;
|
||||
|
||||
case 'autorise cb reutilise':
|
||||
|
||||
var id = this.getAttribute('idRecette');
|
||||
if(this.checked){
|
||||
var nvlInputReutilise = document.createElement('input');
|
||||
nvlInputReutilise.setAttribute('name','reutilise[' + id + ']');
|
||||
nvlInputReutilise.setAttribute('value', true);
|
||||
nvlInputReutilise.setAttribute('type', 'hidden');
|
||||
|
||||
var nvlSpan = document.createElement('span');
|
||||
nvlSpan.setAttribute('id', 'reutilise' + id);
|
||||
var nvlText1 = document.createTextNode(this.getAttribute('nom') + String.fromCharCode(0x0020,0x00B7,0x0020));
|
||||
nvlSpan.appendChild(nvlInputReutilise);
|
||||
nvlSpan.appendChild(nvlText1);
|
||||
|
||||
ancreNoeudsReutilise.appendChild(nvlSpan);
|
||||
}else{
|
||||
document.getElementById('reutilise' + id).remove();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
0
scripts/void.js
Normal file
0
scripts/void.js
Normal file
5
static/entete.php
Normal file
5
static/entete.php
Normal file
|
@ -0,0 +1,5 @@
|
|||
<header>
|
||||
<h1><a href= "index.php">
|
||||
Cuisine et pâtisserie
|
||||
</a></h1>
|
||||
</header>
|
5
static/footer.php
Normal file
5
static/footer.php
Normal file
|
@ -0,0 +1,5 @@
|
|||
<footer>
|
||||
<p>Réalisé par <a href="https://timotheehuneau.fr">Timothée Huneau</a></p>
|
||||
<p>@2022</p>
|
||||
<p>Icons from <a href="https://www.flaticon.com/" title="Flaticon"> www.flaticon.com</a></p>
|
||||
</footer>
|
16
static/menu.php
Normal file
16
static/menu.php
Normal file
|
@ -0,0 +1,16 @@
|
|||
<nav>
|
||||
<a href="index.php" title="Retour à la liste des recettes"><p>Accueil</p></a>
|
||||
<a href="index.php?page=recette&id=0"><p>Ajouter une recette</p></a>
|
||||
<a href="index.php?page=ajouterElement" title="Les ingrédients, unités et ustensiles déjà enregistrés"><p>Les éléments déjà présents</p></a>
|
||||
<a href="index.php?page=statistiques"><p>Statistiques</p></a>
|
||||
<a href="index.php?page=connexion" title="Se connecter permet d'ajouter et de modifier des recettes">
|
||||
<p>
|
||||
<?= !$_SESSION['auth'] ? 'Se connecter' : 'Se déconnecter'?>
|
||||
<span class="<?= $_SESSION['auth'] ? 'lock' : 'unlock' ?>">
|
||||
<img
|
||||
src="contenus/<?= $_SESSION['auth'] ? 'closed_lock' : 'open_lock' ?>.svg"
|
||||
/>
|
||||
</span>
|
||||
</p>
|
||||
</a>
|
||||
</nav>
|
478
style.css
Normal file
478
style.css
Normal file
|
@ -0,0 +1,478 @@
|
|||
:root {
|
||||
--couleur-principale: #d8d8f8;
|
||||
--couleur-vert-1: #d8f0b0;
|
||||
--couleur-rouge-1: #f0c8b0;
|
||||
--couleur-gris-1: #f8f8f8;
|
||||
--couleur-gris-2: #efefef;
|
||||
--couleur-gris-3: #404040;
|
||||
--couleur-gris-4: #242450;
|
||||
--char-oui: '\2726';
|
||||
--char-non: '\2727';
|
||||
--char-fleche-droite: '\27a4';
|
||||
--largeur-minimale: 50em;
|
||||
}
|
||||
|
||||
body{
|
||||
background-color: var(--couleur-gris-1);
|
||||
color: var(--couleur-gris-4);
|
||||
margin: 0px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
||||
h1{
|
||||
font-size: 3em;
|
||||
}
|
||||
h2{
|
||||
font-size: 2em;
|
||||
}
|
||||
h3{
|
||||
font-size: 1.5em;
|
||||
}
|
||||
p{
|
||||
font-size : 1em;
|
||||
}
|
||||
#central{
|
||||
width: 100%;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: start;
|
||||
justify-content: start;
|
||||
}
|
||||
|
||||
#principal{
|
||||
border: 1px var(--couleur-gris-4) solid;
|
||||
border-top: none;
|
||||
border-bottom: none;
|
||||
padding: 10px;
|
||||
background-color: var(--couleur-gris-2);
|
||||
|
||||
margin: 0%;
|
||||
margin-top: 1%;
|
||||
padding: 3%;
|
||||
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
flex-wrap: wrap;
|
||||
align-items: left;
|
||||
|
||||
position: relative;
|
||||
width: 40%;
|
||||
}
|
||||
|
||||
nav, aside, #principal{
|
||||
margin-left: 1%;
|
||||
}
|
||||
header, nav, footer, aside form{
|
||||
margin: 0%;
|
||||
padding: 3%;
|
||||
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: space-around;
|
||||
align-items: center;
|
||||
}
|
||||
nav, aside form{
|
||||
flex-direction: column;
|
||||
align-items: stretch;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
aside form{
|
||||
width: 100%;
|
||||
}
|
||||
nav, aside{
|
||||
width: 20%;
|
||||
background-color: inherit;
|
||||
border: none;
|
||||
}
|
||||
aside{
|
||||
margin-left: 3%;
|
||||
}
|
||||
header, footer{
|
||||
width: 100%;
|
||||
padding: 0%;
|
||||
background-color: var(--couleur-gris-2);
|
||||
}
|
||||
|
||||
footer{
|
||||
margin-top: 1%;
|
||||
}
|
||||
|
||||
a{
|
||||
color: var(--couleur-gris-3);
|
||||
}
|
||||
a:hover{
|
||||
color : var(--couleur-principale);
|
||||
background-color: var(--couleur-gris-3);
|
||||
}
|
||||
footer *, nav a, header a{
|
||||
background-color: var(--couleur-principale);
|
||||
margin: 1%;
|
||||
padding: 1%;
|
||||
border-radius: 20px;
|
||||
font-size : 1em;
|
||||
display: inline-flex;
|
||||
flex-direction: row;
|
||||
flex-wrap: wrap;
|
||||
align-items: baseline;
|
||||
justify-content: center;
|
||||
transition: all 0.5s;
|
||||
}
|
||||
footer a:hover, nav a:hover, aside a:hover, header a:hover{
|
||||
background-color: var(--couleur-gris-3);
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
header h1{
|
||||
width: 100%;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
header a{
|
||||
text-align: center;
|
||||
margin: 0%;
|
||||
padding: 0%;
|
||||
|
||||
min-width: auto;
|
||||
width: 60%;
|
||||
height: 3ex;
|
||||
border-radius: 2em;
|
||||
transition: all 1s;
|
||||
}
|
||||
header a:hover{
|
||||
width: 100%;
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
div.principaleAside, aside .button{
|
||||
display:flex;
|
||||
flex-direction: column;
|
||||
align-items: flex-end;
|
||||
background-color: var(--couleur-gris-2);
|
||||
margin: 1%;
|
||||
padding: 1%;
|
||||
border-radius: 20px;
|
||||
transition: all 0.5s;
|
||||
}
|
||||
|
||||
div.principaleAside div {
|
||||
margin: 0.5em;
|
||||
}
|
||||
|
||||
aside .button{
|
||||
border: none;
|
||||
font-size: 1.2em;
|
||||
font-family: serif;
|
||||
font-weight: bold;
|
||||
padding: 3ex;
|
||||
}
|
||||
div.principaleAside:hover, aside .button:hover{
|
||||
border-radius: 0px;
|
||||
}
|
||||
#asideGenre {
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
|
||||
aside .button:hover {
|
||||
background-color: var(--couleur-gris-3);
|
||||
color: var(--couleur-principale);
|
||||
}
|
||||
|
||||
label.petitLabel:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
aside > label, aside > form > label {
|
||||
font-size: 2em;
|
||||
align-self: flex-start;
|
||||
}
|
||||
|
||||
form ul{
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
div.recetteInfos{
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
div.recette{
|
||||
border: 1px var(--couleur-gris-4) solid;
|
||||
border-left: none;
|
||||
border-right: none;
|
||||
margin: 0px;
|
||||
margin-bottom: -1px;
|
||||
padding: 1%;
|
||||
height: 100%;
|
||||
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
div.recette:hover{
|
||||
background-color: var(--couleur-principale);
|
||||
}
|
||||
div.recette a{
|
||||
align-self: flex-start;
|
||||
padding: 0%;
|
||||
margin: 0%;
|
||||
width: 99%;
|
||||
border-radius: 20px;
|
||||
transition: all 1s;
|
||||
}
|
||||
div.recette a:hover{
|
||||
border-radius: 0px;
|
||||
}
|
||||
.recette a h3{
|
||||
margin: 1%;
|
||||
}
|
||||
|
||||
/*Gestion des input (au niveau du aside)*/
|
||||
|
||||
input[type="radio"]{
|
||||
-webkit-appearance: none;
|
||||
-moz-appearance: none;
|
||||
appearance: none;
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
input[type="radio"]::after, input[type="checkbox"].choixTri::before{
|
||||
border: none;
|
||||
border-radius: 0.5ex;
|
||||
color: var(--couleur-gris-3);
|
||||
font-weight: bold;
|
||||
font-size: 2em;
|
||||
position: relative;
|
||||
top: 0.4ex;
|
||||
|
||||
content: var(--char-non);
|
||||
|
||||
transition: all 0.2s;
|
||||
}
|
||||
|
||||
input[type="radio"]:hover::after, input[type="checkbox"].choixTri:hover::before{
|
||||
color: var(--couleur-gris-1);
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
input[type="radio"]:checked::after{
|
||||
content: var(--char-oui);
|
||||
}
|
||||
|
||||
input[type="radio"].autorise::after, input[type="checkbox"].choixTri.ustensile::before{
|
||||
background-color: var(--couleur-principale);
|
||||
}
|
||||
input[type="radio"].interdit::after{
|
||||
background-color: var(--couleur-rouge-1);
|
||||
margin: 0px;
|
||||
}
|
||||
input[type="radio"].requis::after, input[type="checkbox"].choixTri.genre::before {
|
||||
background-color: var(--couleur-vert-1);
|
||||
}
|
||||
|
||||
span.choixTri {
|
||||
width: 0px;
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
input[type="checkbox"].choixTri {
|
||||
appearance: none;
|
||||
-webkit-appearance: none;
|
||||
-moz-appearance: none;
|
||||
}
|
||||
|
||||
|
||||
input[type="checkbox"].choixTri.genre:checked::before, input[type="checkbox"].choixTri.ustensile:not(:checked)::before{
|
||||
content: var(--char-oui);
|
||||
}
|
||||
|
||||
input[type="checkbox"].choixTri.genre:not(:checked)::before, input[type="checkbox"].choixTri.ustensile:checked::before{
|
||||
background-color: var(--couleur-rouge-1);
|
||||
}
|
||||
|
||||
.centre{
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/*Gestion des dropdowns*/
|
||||
|
||||
input[type="checkbox"].cb{
|
||||
-webkit-appearance: none;
|
||||
-moz-appearance: none;
|
||||
appearance: none;
|
||||
}
|
||||
|
||||
input[type="checkbox"].cb + label::before,
|
||||
input[type="checkbox"].cb + label::after {
|
||||
font-size: 1em;
|
||||
padding: 0.2ex;
|
||||
}
|
||||
|
||||
input[type="checkbox"].cb:not(:checked) + label::before,
|
||||
input[type="checkbox"].cb:not(:checked) + label::after{
|
||||
content: var(--char-non);
|
||||
}
|
||||
|
||||
input[type="checkbox"].cb:checked + label::before,
|
||||
input[type="checkbox"].cb:checked + label::after{
|
||||
content: var(--char-oui);
|
||||
}
|
||||
|
||||
input[type="checkbox"].dropdown {
|
||||
-webkit-appearance: none;
|
||||
appearance: none;
|
||||
}
|
||||
|
||||
input[type="checkbox"].dropdown + label::before{
|
||||
transition: all 0.2s;
|
||||
display: inline-block;
|
||||
content: ' ' var(--char-fleche-droite) ' ';
|
||||
}
|
||||
|
||||
input[type="checkbox"].dropdown + label:hover::before{
|
||||
color: var(--couleur-principale);
|
||||
}
|
||||
|
||||
input[type="checkbox"].dropdown:checked + label::before {
|
||||
transform: rotate(0.25turn);
|
||||
}
|
||||
|
||||
input[type="checkbox"].dropdown:checked + * + div {
|
||||
animation-duration: 0.2s;
|
||||
animation-name: montrer;
|
||||
}
|
||||
|
||||
input[type="checkbox"].dropdown:not(:checked) + * + div {
|
||||
opacity: 0;
|
||||
display: none;
|
||||
}
|
||||
|
||||
@keyframes montrer {
|
||||
0%{
|
||||
opacity: 0;
|
||||
}
|
||||
100%{
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
#modifs{
|
||||
align-self: flex-end;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: flex-end;
|
||||
}
|
||||
|
||||
#modifs>*{
|
||||
border-radius: 1em;
|
||||
transition: all 0.5s;
|
||||
}
|
||||
|
||||
#edition, #suppression, #important {
|
||||
padding: 0.5em;
|
||||
text-decoration: underline;
|
||||
border: none;
|
||||
margin: 0px;
|
||||
font-family: serif;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
#edition {
|
||||
background-color: var(--couleur-vert-1);
|
||||
|
||||
}
|
||||
|
||||
#edition:hover {
|
||||
color: var(--couleur-vert-1);
|
||||
background-color: var(--couleur-gris-3);
|
||||
}
|
||||
|
||||
#suppression {
|
||||
background-color: var(--couleur-rouge-1);
|
||||
}
|
||||
|
||||
#suppression:hover {
|
||||
color: var(--couleur-rouge-1);
|
||||
background-color: var(--couleur-gris-3);
|
||||
}
|
||||
|
||||
#important{
|
||||
background-color: var(--couleur-principale);
|
||||
}
|
||||
|
||||
#important:hover {
|
||||
color: var(--couleur-principale);
|
||||
background-color: var(--couleur-gris-3);
|
||||
}
|
||||
|
||||
.important {
|
||||
color: var(--couleur-principale);
|
||||
background-color: var(--couleur-gris-3);
|
||||
}
|
||||
div:hover > span.important{
|
||||
color: var(--couleur-gris-3);
|
||||
background-color: var(--couleur-principale);
|
||||
}
|
||||
|
||||
|
||||
.lock img, .unlock img{
|
||||
border-radius: 1em;
|
||||
height: 1em;
|
||||
}
|
||||
.lock img{
|
||||
background-color: var(--couleur-vert-1);
|
||||
}
|
||||
.unlock img{
|
||||
background-color: var(--couleur-rouge-1);
|
||||
}
|
||||
|
||||
select{
|
||||
border: none;
|
||||
}
|
||||
textarea{
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.sample{
|
||||
display: none;
|
||||
}
|
||||
|
||||
@media (max-width: 75em){
|
||||
#central {
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
#principal{
|
||||
width: 90%;
|
||||
}
|
||||
|
||||
|
||||
nav, footer{
|
||||
flex-direction: row;
|
||||
justify-content: center;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
aside form{
|
||||
width: 100%;
|
||||
}
|
||||
nav, aside{
|
||||
width: 90%;
|
||||
}
|
||||
|
||||
header a {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
div.recetteInfos{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
3
vues/pageManquante.php
Normal file
3
vues/pageManquante.php
Normal file
|
@ -0,0 +1,3 @@
|
|||
<section>
|
||||
<h2>La page recherchée n'existe pas (encore ?). Vous pouvez retourner à <a href="index.php">l'accueil</a></h2>
|
||||
</section>
|
18
vues/vAccueil.php
Normal file
18
vues/vAccueil.php
Normal file
|
@ -0,0 +1,18 @@
|
|||
<section id="principal">
|
||||
|
||||
<h2>Bienvenue dans le classeur de recettes familiales !</h2>
|
||||
<?php if (isset($listeRecettes)): ?>
|
||||
<?= empty($listeRecettes) ? "Il n'y a pas de recette correspondant à ces critères ! Vous pouvez néanmoins en ajouter ..." : "" ?>
|
||||
<?php foreach ($listeRecettes as $idRecette => $recette): ?>
|
||||
<div id="<?= $idRecette ?>" class="recette">
|
||||
<a href="index.php?page=recette&id=<?= $idRecette ?>"><h3><?= $recette['nom'] ?></h3></a>
|
||||
<div class="recetteInfos">
|
||||
<p><?= $recette['genre'] ?></p>
|
||||
<p>Réalisation : <?= $recette['duree'] ?></p>
|
||||
</div>
|
||||
</div>
|
||||
<?php endforeach ?>
|
||||
<?php else: ?>
|
||||
<?= !isset($listeRecettes) ? "Petit problème interne ..." : "" ?>
|
||||
<?php endif ?>
|
||||
</section>
|
60
vues/vAjouterElement.php
Normal file
60
vues/vAjouterElement.php
Normal file
|
@ -0,0 +1,60 @@
|
|||
<section id="principal">
|
||||
<h2>Liste des ingrédients existants :</h2>
|
||||
<ul>
|
||||
<?php foreach($listeIngredient as $ingredient): ?>
|
||||
<li><a href="index.php?page=element&type=ingredient&id=<?=$ingredient[0]?>"><?=$ingredient[1]?></a> (<?=$ingredient[2]?>)</li>
|
||||
<?php endforeach ?>
|
||||
</ul>
|
||||
|
||||
<?php if($_SESSION['auth']): ?>
|
||||
<p>Ajouter un ingrédient :</p>
|
||||
<form method="POST" action="index.php?page=ajouterElement">
|
||||
<label for="nomIngredient">Nom :</label>
|
||||
<input type="text" name="nomIngredient" pattern="<?=PATTERN_CHAMPS_NOM?>" title="<?=DESC_CHAMPS_NOM?>" required />
|
||||
<br/>
|
||||
<p>Disponibilité :</p>
|
||||
<?php foreach (lANNEE as $mois):?>
|
||||
·
|
||||
<input type="checkbox" name="<?=$mois?>" id="<?=$mois?>" checked="true"/>
|
||||
<label for="<?=$mois?>"><?=$mois?></label>
|
||||
<?php endforeach ?>
|
||||
·
|
||||
<br/>
|
||||
<input type="submit" value="Ajouter l'ingrédient"/>
|
||||
</form>
|
||||
<?php endif ?>
|
||||
|
||||
<h2>Liste des ustensiles existants :</h2>
|
||||
<ul>
|
||||
<?php foreach($listeUstensile as $ustensile): ?>
|
||||
<li><a href="index.php?page=element&type=ustensile&id=<?=$ustensile[1]?>"><?=$ustensile[0]?></a></li>
|
||||
<?php endforeach ?>
|
||||
</ul>
|
||||
|
||||
<?php if($_SESSION['auth']): ?>
|
||||
<p>Ajouter un ustensile :</p>
|
||||
<form method="POST" action="index.php?page=ajouterElement">
|
||||
<label for="nomUstensile">Nom :</label>
|
||||
<input type="text" name="nomUstensile" pattern="<?=PATTERN_CHAMPS_NOM?>" title="<?=DESC_CHAMPS_NOM?>" required />
|
||||
<br/>
|
||||
<input type="submit" value="Ajouter l'ustensile"/>
|
||||
</form>
|
||||
<?php endif ?>
|
||||
|
||||
<h2>Liste des unités existantes :</h2>
|
||||
<ul>
|
||||
<?php foreach($listeUnite as $unite): ?>
|
||||
<li><a href="index.php?page=element&type=unite&id=<?=$unite[1]?>"><?=$unite[0]?></a></li>
|
||||
<?php endforeach ?>
|
||||
</ul>
|
||||
|
||||
<?php if($_SESSION['auth']): ?>
|
||||
<p>Ajouter une unité :</p>
|
||||
<form method="POST" action="index.php?page=ajouterElement">
|
||||
<label for="nomUnite">Symbole :</label>
|
||||
<input type="text" name="nomUnite" required />
|
||||
<br/>
|
||||
<input type="submit" value="Ajouter l'unité"/>
|
||||
</form>
|
||||
<?php endif ?>
|
||||
</section>
|
20
vues/vConnexion.php
Normal file
20
vues/vConnexion.php
Normal file
|
@ -0,0 +1,20 @@
|
|||
<section id='principal'>
|
||||
|
||||
<?php switch($typePage): ?>
|
||||
<?php case 0 ?>
|
||||
<form method="POST" action="index.php?page=connexion">
|
||||
<input type="password" required name="motdepasse"/>
|
||||
<input type="submit">
|
||||
</form>
|
||||
<?php break; ?>
|
||||
<?php case 1 ?>
|
||||
<p>Vous êtes connecté.e !</p>
|
||||
<form method="POST" action="index.php?page=connexion">
|
||||
<input type="submit" value="Se déconnecter ?" name="deconnexion">
|
||||
</form>
|
||||
<?php break; ?>
|
||||
<?php case -1 ?>
|
||||
<p>Echec de la connexion ... Vous pouvez <a href="index.php?page=connexion">rééssayer</a>.</p>
|
||||
<?php break; ?>
|
||||
<?php endswitch ?>
|
||||
</section>
|
38
vues/vElement.php
Normal file
38
vues/vElement.php
Normal file
|
@ -0,0 +1,38 @@
|
|||
<?php if ($pageExiste): ?>
|
||||
<section id='principal'>
|
||||
<form method="POST" action="index.php?page=element&type=<?=$type?>&id=<?=$infoElement['id']?>">
|
||||
<?php if($_SESSION['auth']): ?>
|
||||
<div id="modifs">
|
||||
<a href="index.php?page=supprimerElement&delete=true" id="suppression">Supprimer <?=$determinant . $type?></a>
|
||||
<input type="submit" value="Enregistrer les valeurs" id="edition"/>
|
||||
</div>
|
||||
<?php else: ?>
|
||||
<div id="modifs">
|
||||
<a href="index.php?page=connexion" id="important">Pour effectuer des modification, vous devez vous connecter</a>
|
||||
</div>
|
||||
<?php endif ?>
|
||||
|
||||
<input
|
||||
type="text"
|
||||
value="<?=$infoElement['nom']?>"
|
||||
name="nom"
|
||||
<?= $_SESSION['auth'] ? '' : 'disabled' ?>
|
||||
/>
|
||||
|
||||
<?php if ($type == 'ingredient'): ?>
|
||||
<br/>
|
||||
<?=SEPARATEUR?>
|
||||
<?php foreach (lANNEE as $mois): ?>
|
||||
<input type="checkbox" name="<?=$mois?>" id="<?=$mois?>" <?=$infoElement[$mois]?'checked="true"':''?> <?= $_SESSION['auth'] ? '' : 'disabled' ?>/>
|
||||
<label for="<?=$mois?>"><?=$mois?></label>
|
||||
<?=SEPARATEUR?>
|
||||
<?php endforeach ?>
|
||||
<?php endif ?>
|
||||
|
||||
<br/>
|
||||
</form>
|
||||
</section>
|
||||
|
||||
<?php else: ?>
|
||||
<?php include('pageManquante.php')?>
|
||||
<?php endif ?>
|
318
vues/vRecette.php
Normal file
318
vues/vRecette.php
Normal file
|
@ -0,0 +1,318 @@
|
|||
<section id='principal'>
|
||||
<?php switch($pageExiste): ?>
|
||||
<?php case 0 ?>
|
||||
<?php include('pageManquante.php')?>
|
||||
<?php break; ?>
|
||||
|
||||
<?php case 1 ?> <!-- Simple affichage de la recette -->
|
||||
<div id="modifs">
|
||||
<a id="edition" href="index.php?page=recette&id=<?= $infoRecette['idRecette']?>&mode=edit"><span>Modifier la recette</span></a>
|
||||
<a id="suppression" href="index.php?page=recette&id=<?= $infoRecette['idRecette']?>&mode=suppr"><span>Supprimer la recette</span></a>
|
||||
</div>
|
||||
|
||||
<h1><?= $infoRecette['nom'] ?></h1>
|
||||
<p>Pour <?= $infoRecette['portions'] . " " . $infoRecette['unite'] ?>
|
||||
<br/>
|
||||
Réalisation : <?= $infoRecette['tempsTotal'] ?>
|
||||
<br/>
|
||||
Genre : <?= $infoRecette['genre'] ?></p>
|
||||
|
||||
<h3>Ingrédient(s) :</h3>
|
||||
<ul>
|
||||
<?php foreach ($listeIngredientsRecette as $id => $infos): ?>
|
||||
<li id="ingredient<?=D.$id?>">
|
||||
<?= $infos['nom'] . " : " . $infos['quantite'] . " " . $infos['unite'] ?>
|
||||
</li>
|
||||
<?php endforeach ?>
|
||||
</ul>
|
||||
|
||||
<h3>Ustensile(s) :</h3>
|
||||
<ul>
|
||||
<?php foreach ($listeUstensilesRecette as $id => $infos): ?>
|
||||
<li id="ustensile<?=D.$id?>">
|
||||
<?= $infos['nom'] . ($infos['commentaire'] ? (" : " . $infos['commentaire']) : "") ?>
|
||||
</li>
|
||||
<?php endforeach ?>
|
||||
</ul>
|
||||
|
||||
<h3>Mode(s) de préparation :</h3>
|
||||
<ul>
|
||||
<?php foreach ($listePreparationsRecette as $id => $infos): ?>
|
||||
<li id="preparation<?=D.$id?>">
|
||||
<?= $infos['nom'] . " : " . $infos['duree'] . ($infos['temperature'] == '-' ? '' :" à " . $infos['temperature']) ?>
|
||||
</li>
|
||||
<?php endforeach ?>
|
||||
</ul>
|
||||
|
||||
<h3>Procédure :</h3>
|
||||
<p>
|
||||
<?= $infoRecette['realisation'] ?>
|
||||
</p>
|
||||
|
||||
<h3>Recette(s) liée(s) :</h3>
|
||||
<p>
|
||||
<?php if(!empty($listeReutiliseRecette)): ?>
|
||||
<?=SEPARATEUR?>
|
||||
<?php foreach ($listeReutiliseRecette as $infos): ?>
|
||||
<a href="index.php?page=recette&id=<?=$infos['id']?>"><?= $infos['nom'] ?></a>
|
||||
<?=SEPARATEUR?>
|
||||
<?php endforeach ?>
|
||||
<?php else: ?> Aucune
|
||||
<?php endif ?>
|
||||
|
||||
</p>
|
||||
<?php break; ?>
|
||||
<?php case 2 ?> <!-- Cas de modification d'une recette -->
|
||||
<?php case -1 ?> <!-- Cas de création d'une recette -->
|
||||
<?php if($_SESSION['auth']): ?>
|
||||
<div id="modifs">
|
||||
<?php if($pageExiste == 2): ?>
|
||||
<a id="important" href="index.php?page=recette&id=<?= $infoRecette['idRecette']?>"><span>Annuler</span></a>
|
||||
<?php endif ?>
|
||||
</div>
|
||||
<form
|
||||
method="POST"
|
||||
<?php if($pageExiste == 2): ?>
|
||||
action="index.php?page=recette&id=<?=$infoRecette['idRecette']?>"
|
||||
<?php else: ?>
|
||||
action="index.php?page=recette&id=0&mode=crea"
|
||||
<?php endif ?>
|
||||
>
|
||||
<h1>
|
||||
<input
|
||||
type="text"
|
||||
name="nom"
|
||||
pattern="<?= PATTERN_CHAMPS_NOM ?>"
|
||||
placeholder="Nom de la recette"
|
||||
<?php if($pageExiste == 2): ?>
|
||||
value="<?= $infoRecette['nom'] ?>"
|
||||
<?php endif ?>
|
||||
required
|
||||
/>
|
||||
</h1>
|
||||
|
||||
Pour
|
||||
<input
|
||||
type="text"
|
||||
name="nbPortion"
|
||||
pattern="<?=PATTERN_CHAMPS_QUANTITE?>"
|
||||
title="<?=DESC_CHAMPS_QUANTITE?>"
|
||||
placeholder="Quantité"
|
||||
<?php if($pageExiste == 2): ?>
|
||||
value="<?= $infoRecette['portions'] ?>"
|
||||
<?php endif ?>
|
||||
required
|
||||
|
||||
/>
|
||||
<select name="unitePortion" required>
|
||||
<option disabled selected value="NULL"><span>Unité</span></option>
|
||||
<?php foreach ($listeUnite as $id => $nom): ?>
|
||||
<option value="<?=$id?>" <?= ($pageExiste == 2 and $infoRecette['idU'] == $id) ? 'selected' : '' ?>>
|
||||
<?=$nom?>
|
||||
</option>
|
||||
<?php endforeach ?>
|
||||
</select>
|
||||
<br/>
|
||||
Réalisation :
|
||||
<input
|
||||
type="text"
|
||||
name="tempsTotal"
|
||||
pattern="<?=PATTERN_CHAMPS_DUREE?>"
|
||||
title="<?=DESC_CHAMPS_DUREE?>"
|
||||
placeholder="Durée total de réalisation"
|
||||
<?php if($pageExiste == 2): ?>
|
||||
value="<?= $infoRecette['tempsTotal'] ?>"
|
||||
<?php endif ?>
|
||||
required
|
||||
/>
|
||||
<br/>
|
||||
Genre :
|
||||
<select required name="genre">
|
||||
<option disabled selected>Genre</option>
|
||||
<?php foreach($listeGenre as $id => $genre): ?>
|
||||
<option value="<?=$id?>" <?= ($pageExiste == 2 and $infoRecette['genre'] == $genre) ? 'selected' : '' ?> ><?=$genre?></option>
|
||||
<?php endforeach ?>
|
||||
</select>
|
||||
|
||||
|
||||
<h3>Ingrédient(s) :</h3>
|
||||
<ul id="listeIngredients">
|
||||
<li class="sample" id="sampleIngredient">
|
||||
<label></label>
|
||||
<input
|
||||
type="text"
|
||||
pattern="<?=PATTERN_CHAMPS_QUANTITE?>"
|
||||
title="<?=DESC_CHAMPS_QUANTITE?>"
|
||||
placeholder="Quantité"
|
||||
/>
|
||||
<select name="">
|
||||
<option disabled selected value="NULL"><span>Unité</span></option>
|
||||
<?php foreach ($listeUnite as $idU => $unite): ?>
|
||||
<option value="<?=$idU?>">
|
||||
<?=$unite?>
|
||||
</option>
|
||||
<?php endforeach ?>
|
||||
</select>
|
||||
</li>
|
||||
<?php if($pageExiste == 2): ?>
|
||||
<?php foreach($listeIngredientsRecette as $idI => $ingredient): ?>
|
||||
<li id="ingredient<?= $idI ?>">
|
||||
<label for="ingredient[<?= $idI ?>]"><?=$ingredient['nom']?></label>
|
||||
:
|
||||
<input
|
||||
type="text"
|
||||
name="ingredient[<?= $idI?>][quantite]"
|
||||
pattern="<?=PATTERN_CHAMPS_QUANTITE?>"
|
||||
title="<?=DESC_CHAMPS_QUANTITE?>"
|
||||
value="<?= $ingredient['quantite'] ?>"
|
||||
placeholder="Quantité"
|
||||
required
|
||||
/>
|
||||
<select name="ingredient[<?=$idI?>][unite]" required>
|
||||
<option disabled selected value="NULL"><span>Unité</span></option>
|
||||
<?php foreach ($listeUnite as $idU => $unite): ?>
|
||||
<option value="<?=$idU?>"
|
||||
<?= $listeIngredientsRecette[$idI]['idU'] == $idU ? 'selected' : '' ?>>
|
||||
<?=$unite?>
|
||||
</option>
|
||||
<?php endforeach ?>
|
||||
</select>
|
||||
</li>
|
||||
<?php endforeach ?>
|
||||
|
||||
<?php endif ?>
|
||||
</ul>
|
||||
|
||||
<h3>Ustensile(s) :</h3>
|
||||
<ul id="listeUstensiles">
|
||||
<li class="sample" id="sampleUstensile">
|
||||
<label></label>
|
||||
<input
|
||||
type="text"
|
||||
pattern="<?=PATTERN_CHAMPS_COMM?>"
|
||||
title="<?=DESC_CHAMPS_COMM?>"
|
||||
placeholder="Decription (éventuelle)"
|
||||
/>
|
||||
</li>
|
||||
<?php if($pageExiste == 2): ?>
|
||||
<?php foreach($listeUstensilesRecette as $id => $ustensile): ?>
|
||||
<li id="ustensile<?=$id?>">
|
||||
<label for="ustensile<?=D.$id?>"><?=$ustensile['nom']?></label>
|
||||
:
|
||||
<input
|
||||
type="text"
|
||||
name="ustensile[<?=$id?>][commentaire]"
|
||||
pattern="<?=PATTERN_CHAMPS_COMM?>"
|
||||
title="<?=DESC_CHAMPS_COMM?>"
|
||||
placeholder="Description (éventuelle)"
|
||||
value="<?= $ustensile['commentaire'] ?>"
|
||||
/>
|
||||
</li>
|
||||
<?php endforeach ?>
|
||||
<?php endif ?>
|
||||
</ul>
|
||||
|
||||
<h3>Mode(s) de préparation :</h3>
|
||||
<ul id="listePreparations">
|
||||
<li class="sample" id="samplePreparation">
|
||||
<label></label>
|
||||
pendant
|
||||
<input
|
||||
type="text"
|
||||
pattern="<?=PATTERN_CHAMPS_DUREE?>"
|
||||
title="<?=DESC_CHAMPS_DUREE?>"
|
||||
/>
|
||||
minutes, à
|
||||
<input
|
||||
type="text"
|
||||
pattern="<?=PATTERN_CHAMPS_TEMP?>"
|
||||
title="<?=DESC_CHAMPS_TEMP?>"
|
||||
/>
|
||||
</li>
|
||||
<?php if($pageExiste == 2): ?>
|
||||
<?php foreach($listePreparationsRecette as $id => $preparation): ?>
|
||||
<li id="preparation<?=$id?>">
|
||||
<label><?=$preparation['nom']?></label>
|
||||
pendant
|
||||
<input
|
||||
type="text"
|
||||
required
|
||||
value="<?= $preparation['duree'] ?>"
|
||||
name="preparation[<?=$id?>][duree]"
|
||||
pattern="<?=PATTERN_CHAMPS_DUREE?>"
|
||||
title="<?=DESC_CHAMPS_DUREE?>"
|
||||
/>
|
||||
minutes, à
|
||||
<input
|
||||
type="text"
|
||||
required
|
||||
value="<?= $preparation['temperature'] ?>"
|
||||
name="preparation[<?=$id?>][temp]"
|
||||
pattern="<?=PATTERN_CHAMPS_TEMP?>"
|
||||
title="<?=DESC_CHAMPS_TEMP?>"
|
||||
/>
|
||||
</li>
|
||||
<?php endforeach ?>
|
||||
<?php endif ?>
|
||||
</ul>
|
||||
|
||||
<h3>Procédure :</h3>
|
||||
<textarea name="procedure" rows="5"><?php if($pageExiste == 2): ?><?= $infoRecette['realisation'] ?><?php endif ?></textarea>
|
||||
|
||||
<h3>Recette(s) liée(s) :</h3>
|
||||
<p id="ancreNoeudsReutilise"> <?=SEPARATEUR?>
|
||||
<?php foreach ($listeReutiliseRecette as $id => $infos) :?>
|
||||
<span id="reutilise<?=$id?>">
|
||||
<input
|
||||
type="hidden"
|
||||
value="true"
|
||||
name="reutilise[<?=$id?>]"
|
||||
/>
|
||||
<?=$infos['nom']?> <?=SEPARATEUR?>
|
||||
</span>
|
||||
<?php endforeach ?>
|
||||
</p>
|
||||
|
||||
<div class="centre">
|
||||
<input type="hidden" name="edit" value="1"/>
|
||||
|
||||
<input id="edition" type="submit" value="Sauvegarder les modifications" title="Attention ! C'est définitif, il n'est pas possible de revenir en arrière."/>
|
||||
</div>
|
||||
</form>
|
||||
<?php else: ?>
|
||||
<p>Vous devez être connecté pour faire ça ! Vous pouvez le faire <a href="index.php?page=connexion">ici</a>.</p>
|
||||
<?php endif ?>
|
||||
<?php break; ?>
|
||||
<?php case 3 ?>
|
||||
<?php if($_SESSION['auth']): ?>
|
||||
<div class="centre">
|
||||
<p>Attention ! La suppression d'une recette est définitive. Voulez vous continuer ?</p>
|
||||
|
||||
<form method="GET" action="index.php?">
|
||||
<span>
|
||||
<input type="hidden" value="supprimerRecette" name="page"/>
|
||||
<input type="hidden" value="<?= $infoRecette['idRecette'] ?>" name="id"/>
|
||||
<input type="submit" value="Oui, supprimer la recette !" id="suppression"/>
|
||||
<a href="index.php?page=recette&id=<?= $infoRecette['idRecette']?>" id="important" >Non, en fait<a/>
|
||||
</span>
|
||||
</form>
|
||||
</div>
|
||||
<?php else: ?>
|
||||
<p>Vous devez être connecté pour faire ça ! Vous pouvez le faire <a href="index.php?page=connexion">ici</a>.</p>
|
||||
<?php endif ?>
|
||||
|
||||
<?php break; ?>
|
||||
<?php case -2 ?>
|
||||
<div class="centre">
|
||||
|
||||
<p>La recette a bien été ajoutée !</p>
|
||||
|
||||
<span>
|
||||
<a id="important" href="index.php?page=recette&id=<?=$idRecette?>" >Voir la recette</a>
|
||||
<a id="edition" href="index.php?page=recette&id=0">Ajouter une autre recette</a>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<?php break; ?>
|
||||
<?php endswitch ?>
|
||||
</section>
|
3
vues/vStatistiques.php
Normal file
3
vues/vStatistiques.php
Normal file
|
@ -0,0 +1,3 @@
|
|||
<section id='principal'>
|
||||
<p>Il y a actuellement <?=$nbRecettes?> recettes enregistrée(s).</p>
|
||||
</section>
|
10
vues/vSupprimerElement.php
Normal file
10
vues/vSupprimerElement.php
Normal file
|
@ -0,0 +1,10 @@
|
|||
<section id="principal">
|
||||
<h2>
|
||||
<?php if($reussi): ?>
|
||||
La suppresion s'est bien déroulée.</h2>
|
||||
<?php else: ?>
|
||||
L'élément n'a pas pû être supprimé</h2>
|
||||
<p>Vérifiez qu'il existe (encore) et qu'il n'est utilisé dans aucune recette.</p>
|
||||
<?php endif ?>
|
||||
<p>Vous pouvez retourner à <a href="index.php">l'accueil</a> ou à <a href="index.php?page=ajouterElement" >la liste des ingrédients</a></p>
|
||||
</section>
|
10
vues/vSupprimerRecette.php
Normal file
10
vues/vSupprimerRecette.php
Normal file
|
@ -0,0 +1,10 @@
|
|||
<section id="principal">
|
||||
<h2>
|
||||
<?php if($reussi): ?>
|
||||
La suppresion s'est bien déroulée.</h2>
|
||||
<?php else: ?>
|
||||
La recette n'a pas pû être supprimée</h2>
|
||||
<p>Vérifiez qu'elle existe (encore) et qu'elle n'est utilisée nul part ailleur.</p>
|
||||
<?php endif ?>
|
||||
<p>Vous pouvez retourner à <a href="index.php">l'accueil</a> ou à <a href="index.php?page=ajouterElement" >la liste des ingrédients</a></p>
|
||||
</section>
|
7
vues/vTests.php
Normal file
7
vues/vTests.php
Normal file
|
@ -0,0 +1,7 @@
|
|||
<section id='principal'>
|
||||
<form method="POST" action="index.php?page=test">
|
||||
<input type="text" required name="textTest" value="100" title="<?=DESC_CHAMPS_DUREE?>"/>
|
||||
<input type="submit">
|
||||
</form>
|
||||
<a href="index.php?page=ajouterElement">Retourner à la liste</a>
|
||||
</section>
|
Loading…
Add table
Add a link
Reference in a new issue