Initial commit

Création de tous les dossiers et fichiers avec mise à part des constantes
This commit is contained in:
Timothée Huneau 2023-04-11 19:11:26 +02:00
commit 4c71fb59b4
42 changed files with 2544 additions and 0 deletions

115
controleurs/cAccueil.php Normal file
View 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);
?>

View 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);
?>

View 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
View 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);
?>

View file

@ -0,0 +1,7 @@
<?php
$c = seConnecter();
deconnectBD($c);
?>

197
controleurs/cRecette.php Normal file
View 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);
?>

View 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);
?>

View 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);
?>

View 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
View 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
View file