Refactorisation passage à SLQite3 (début)

Pages faites :
- accueil
- statistiques
- ajouterElement
This commit is contained in:
Timothée Huneau 2025-02-23 23:56:23 +01:00
parent c3ab5baad7
commit 90be5dd519
17 changed files with 1224 additions and 412 deletions

View file

@ -1,70 +1,63 @@
<?php
function transformeCharsAutorises($entree){
$transformations = [
'#Œ#' => 'Oe',
'#œ#' => 'oe',
'#Æ#' => 'Ae',
'#æ#' => 'ae',
'#[^a-zàâäéèêëîïôöùûüÿçñA-ZÀÂÄÉÈÊËÎÏÔÖÙÛÜŸÇÑ ,\'-]#' => '',
'#^[ ,-]+#' => '',
'#[ ]+$#' => '',
'#\'#' => '\\\''
];
foreach ($transformations as $reEtape => $remplacement){
$entree = preg_replace($reEtape, $remplacement, $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);
// $entree = mb_strtoupper(mb_substr($entree, 0, 1)) . mb_substr($entree, 1);
return $entree;
}
function calculeMinutesFromTexte($texteDuree){
$texteDuree = preg_replace("/ /", "", $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) ;
// 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;
// $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);}
}
// 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;
return $texteDuree;
}
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)' : '';
// $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;
return $minute;
}
function lectureVersEcriture($texte){
$texte = preg_replace("#<br/>#","##",$texte);
$texte = preg_replace("#</p><p>#","\n",$texte);
$texte = preg_replace("#⌀#","#diam",$texte);
function lectureVersEcriture($texte){// no-op
return $texte;
}
function ecritureVersLecture($texte){
$texte = preg_replace("/##/","<br/>",$texte);
$texte = preg_replace("/\n/","</p><p>",$texte);
$texte = preg_replace("/#diam/","",$texte);
function ecritureVersLecture($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);
function echappementBDD($texte){ // no-op
return $texte;
}
?>

View file

@ -1,124 +1,192 @@
<?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;
}
function getDB() {return new SQLite3("db/cuisine.db");}
// déconnexion de la BD
function deconnectBD($connexion) {
mysqli_close($connexion);
function getAssocFromQueryString($qs){
$db = getDB();
$stmt = $db->prepare($qs);
$result = $stmt->execute();
$assocArray = [];
while ($ligne = $result->fetchArray(SQLITE3_ASSOC)){
$assocArray[] = $ligne;
}
return $assocArray;
}
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;
$requeteListeIngredient = "SELECT nom, id FROM Ingredient ORDER BY nom;";
$resultatListeIngredient = getAssocFromQueryString($requeteListeIngredient);
$listeIngredient = [];
foreach ($resultatListeIngredient as $infoIngredient){
$listeIngredient[$infoIngredient['id']] = $infoIngredient;
}
deconnectBD($c);
return $listeIngredients;
return $listeIngredient;
}
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;
$requete = "SELECT nom, id FROM Ustensile ORDER BY nom;";
$resultatListeUstensile = getAssocFromQueryString($requete);
$listeUstensile = [];
foreach ($resultatListeUstensile as $infoUstensile){
$listeUstensile[$infoUstensile['id']] = $infoUstensile;
}
deconnectBD($c);
return $listeUstensiles;
return $listeUstensile;
}
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;
$requete = "SELECT nom, id FROM Preparation ORDER BY nom;";
$resultatListePreparation = getAssocFromQueryString($requete);
$listePreparation = [];
foreach ($resultatListePreparation as $infoPreparation){
$listePreparation[$infoPreparation['id']] = $infoPreparation;
}
deconnectBD($c);
return $listePreparations;
return $listePreparation;
}
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;
$requete = "SELECT * FROM Recette ORDER BY nom;";
$resultatRecettes = getAssocFromQueryString($requete);
$listeRecette = [];
foreach($resultatRecettes as $infoRecette){
$listeRecette[$infoRecette['id']] = $infoRecette;
}
deconnectBD($c);
return $listeRecettes;
return $listeRecette;
}
function recupereGenres($c){
$requete = "
SELECT *
FROM Genre
;";
$resultatGenre = mysqli_query($c,$requete);
$listeGenres = [];
while ($genre = mysqli_fetch_assoc($resultatGenre)){
$listeGenres[$genre['id']] = $genre['nom'];
function getAllGenres(){
$requete = "SELECT nom, id FROM Genre;";
$resultatGenre = getAssocFromQueryString($requete);
$listeGenre = [];
foreach ($resultatGenre as $infoGenre){
$listeGenre[$infoGenre['id']] = $infoGenre;
}
return $listeGenres;
return $listeGenre;
}
function recupereUnites($c){
$requete = "
SELECT *
FROM Unite
;";
$resultatUnite = mysqli_query($c,$requete);
$listeUnites = [];
while ($unite = mysqli_fetch_assoc($resultatUnite)){
$listeUnites[$unite['id']] = $unite['nom'];
function getAllUnites(){
$requete = "SELECT * FROM Unite;";
$resultatUnite = getAssocFromQueryString($requete);
$listeUnite = [];
foreach ($resultatUnite as $unite){
$listeUnite[$unite['id']] = $unite;
}
return $listeUnites;
return $listeUnite;
}
// 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 getRecetteFromId($id){
$requete = "SELECT * FROM Recette WHERE id=$id;";
$resultat = getAssocFromQueryString($requete);
return ($resultat ? $resultat[0] : false);
}
function getRecetteFullFromId($id){
$requete =
"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 = $id";
$resultat = getAssocFromQueryString($requete);
return ($resultat ? $resultat[0] : false);
}
function getAllIngredientsWithRecetteId($id){
$requete =
"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 = $id
ORDER BY nom;";
$resultat = getAssocFromQueryString($requete);
$listeIngredient = [];
foreach ($resultat as $key => $value) {
$listeIngredient[] = $value;
}
return $listeIngredient;
}
function getAllUstensileWithRecetteId($id){
$requete =
"SELECT ru.ustensile idUstensile, u.nom nom, ru.commentaire commentaire
FROM Ustensile u JOIN RecetteUstensile ru ON u.id = ru.ustensile
WHERE ru.recette = $id
ORDER BY nom;";
$resultat = getAssocFromQueryString($requete);
$listeUstensile = [];
foreach ($resultat as $key => $value) {
$listeUstensile[] = $value;
}
return $listeUstensile;
}
function getAllPreparationWithRecetteId($id){
$requete =
"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 = $id
ORDER BY nom;";
$resultat = getAssocFromQueryString($requete);
$listePreparation = [];
foreach ($resultat as $key => $value) {
$listePreparation[] = $value;
}
return $listePreparation;
}
function getGenreWithRecetteId($id){
$requete =
"SELECT g.id id, g.nom nom
FROM Genre g JOIN Recette r ON g.id = r.genre
WHERE r.id = $id;";
$resultat = getAssocFromQueryString($requete);
return ($resultat ? $resultat[0] : false);
}
function getAllReutiliseeWithRecetteId($id){
$requete =
"SELECT reu.utilisee id, rec.nom nom
FROM Reutilise reu JOIN Recette rec ON reu.utilisee = rec.id
WHERE reu.utilisant = $id
ORDER BY nom;";
$resultat = getAssocFromQueryString($requete);
$listeReutilisee = [];
foreach ($resultat as $key => $value) {
$listePreparation[] = $value;
}
return $listeReutilisee;
}
function getRecetteCount(){
$requete = "SELECT COUNT(*) nb FROM Recette;";
$ret = getAssocFromQueryString($requete)[0]["nb"];
return $ret;
}
function safePutIngredient($nom, $dispo){
$db = getDB();
$nomSafe = $db->escapeString($nom);
$requete = "INSERT INTO Ingredient (nom, " . implode(', ', lANNEE) . ") VALUES ('$nomSafe'";
foreach (lANNEE as $mois){
$requete .= ", " . ($dispo[$mois] ? "1" : "0");
}
$requete .= ");";
return $db->exec($requete);
}
function safePutUstensile($nom){
$db = getDB();
$nomSafe = $db->escapeString($nom);
$requete = "INSERT INTO Ustensile (nom) VALUES ('$nomSafe');";
return $db->exec($requete);
}
function safePutUnite($nom){
$db = getDB();
$nomSafe = $db->escapeString($nom);
$requete = "INSERT INTO Unite (nom) VALUES ('$nomSafe');";
return $db->exec($requete);
}
// 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 {
@ -237,4 +305,5 @@ function insererRecette($infosRecette, $listeIngredients, $listeUstensile, $list
}
?>