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