2023-04-11 19:11:26 +02:00
|
|
|
<?php
|
|
|
|
|
|
|
|
$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'];
|
2025-02-23 23:56:23 +01:00
|
|
|
$_SESSION['tri']['ustensile'] = !isset($_POST['ustensile']) ? [] : $_POST['ustensile'];
|
2023-04-11 19:11:26 +02:00
|
|
|
$_SESSION['tri']['genre'] = !isset($_POST['genre']) ? [] : $_POST['genre'];
|
|
|
|
|
|
|
|
$whereClause = '';
|
|
|
|
|
2025-02-23 23:56:23 +01:00
|
|
|
//clause des ingrédients
|
2023-04-11 19:11:26 +02:00
|
|
|
$clauseIngredientsRequis = '';
|
|
|
|
$clauseIngredientsInterdits = '';
|
2025-02-23 23:56:23 +01:00
|
|
|
foreach($_SESSION['tri']['ingredient'] as $id => $demande){
|
2023-04-11 19:11:26 +02:00
|
|
|
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;
|
|
|
|
|
2025-02-23 23:56:23 +01:00
|
|
|
//clause des utensiles
|
2023-04-11 19:11:26 +02:00
|
|
|
$clauseUstensilesAutorises = '';
|
2025-02-23 23:56:23 +01:00
|
|
|
foreach($_SESSION['tri']['ustensile'] as $id => $demande){
|
2023-04-11 19:11:26 +02:00
|
|
|
if($demande){
|
|
|
|
$clauseUstensilesAutorises .= " OR ustensile = $id";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$clauseUstensilesAutorises = " AND r.id NOT IN (SELECT recette FROM RecetteUstensile WHERE 0=1 $clauseUstensilesAutorises)";
|
|
|
|
$whereClause .= $clauseUstensilesAutorises;
|
2025-02-23 23:56:23 +01:00
|
|
|
|
|
|
|
//clause des genres
|
2023-04-11 19:11:26 +02:00
|
|
|
$clauseGenre = ' AND (1=0 ';
|
2025-02-23 23:56:23 +01:00
|
|
|
foreach($_SESSION['tri']['genre'] as $id => $demande){
|
|
|
|
$clauseGenre .= " OR genre = $id";
|
2023-04-11 19:11:26 +02:00
|
|
|
}
|
|
|
|
$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;
|
|
|
|
";
|
|
|
|
|
2025-02-23 23:56:23 +01:00
|
|
|
//récupération des différentes recettes correspondant aux POST, si il est défini
|
|
|
|
$resultatListeRecettes = getAssocFromQueryString($requeteListeRecettes);
|
2023-04-11 19:11:26 +02:00
|
|
|
if ($resultatListeRecettes){
|
|
|
|
$listeRecettes = [];
|
2025-02-23 23:56:23 +01:00
|
|
|
foreach ($resultatListeRecettes as $key => $recette) {
|
2023-04-11 19:11:26 +02:00
|
|
|
$idRecette = $recette['idRecette'];
|
|
|
|
$listeRecettes[$idRecette] = [];
|
|
|
|
foreach ($recette as $clef => $info){
|
|
|
|
if ($clef != 'idRecette'){
|
|
|
|
if($clef == 'duree'){$info = calculeTexteFromMinutes($info);}
|
|
|
|
$listeRecettes[$idRecette][$clef] = $info;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2025-02-23 23:56:23 +01:00
|
|
|
//recuperation des différentes tables
|
|
|
|
$listeIngredient = getAllIngredients();
|
|
|
|
$listeUstensile = getAllUstensiles();
|
|
|
|
$listePreparation = getAllPreparations();
|
|
|
|
$listeGenre = getAllGenres();
|
2023-04-11 19:11:26 +02:00
|
|
|
|
|
|
|
?>
|