diff --git a/commandes_njv_mySql.sql b/commandes_njv_mySql.sql index 1bab82c222349f776cc91fb682af385f4c7b01f5..e1c5972ee75d969799aca980a5f221275c27f5a4 100644 --- a/commandes_njv_mySql.sql +++ b/commandes_njv_mySql.sql @@ -164,7 +164,7 @@ CREATE TABLE IF NOT EXISTS `commande` ( PRIMARY KEY (`idCommande`) ) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1; ----REM FOREIGNS KEYS DE LA TABLE commande--- +-- FOREIGNS KEYS DE LA TABLE commande--- ALTER TABLE commande ADD CONSTRAINT fk_commande_user FOREIGN KEY (userID) @@ -199,12 +199,13 @@ CREATE TABLE IF NOT EXISTS `foods` ( `nomFood` varchar(100) NOT NULL, `priceIIE` decimal(4,2) NOT NULL, `pricePart` decimal(4,2) NOT NULL, + `isAvailable` tinyint(1) NOT NULL, PRIMARY KEY (`foodID`), UNIQUE KEY `nomFood` (`nomFood`) ) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1; ----REM FOREIGNS KEYS DE LA TABLE foods--- +-- FOREIGNS KEYS DE LA TABLE foods--- ALTER TABLE foods ADD CONSTRAINT fk_food_type FOREIGN KEY (foodTypeID) @@ -213,15 +214,16 @@ ALTER TABLE foods ALTER TABLE foods ADD CONSTRAINT fk_food_part FOREIGN KEY (partID) - REFERENCES partenariat(idPartenariat) + REFERENCES partenariat(idPartenariat); -- -- Déchargement des données de la table `foods` -- -INSERT INTO `foods` (`foodID`, `foodTypeID`, `partID`, `nomFood`, `priceIIE`, `pricePart`) VALUES -(1, 1, 1, 'Calzone (Tomate, fromage, jambon, oeuf)', '6.50', '6.00'), -(3, 2, 2, 'Tacos XL (3 Viandes)', '8.50', '8.00'); +INSERT INTO `foods` (`foodID`, `foodTypeID`, `partID`, `nomFood`, `priceIIE`, `pricePart`, `isAvailable`) VALUES +(1, 1, 1, 'Calzone (Tomate, fromage, jambon, oeuf)', '6.50', '6.00', 1), +(3, 2, 2, 'Tacos XL (3 Viandes)', '8.50', '8.00', 1), +(4, 2, 2, 'Tacos XXL (4 Viandes)', '12.50', '11.00', 1); -- -------------------------------------------------------- @@ -239,16 +241,16 @@ CREATE TABLE IF NOT EXISTS `commande_item` ( UNIQUE KEY `idCommande` (`idCommande`,`idFood`) ) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1; ----REM FOREIGNS KEYS DE LA TABLE commande_item--- +-- FOREIGNS KEYS DE LA TABLE commande_item--- ALTER TABLE commande_item ADD CONSTRAINT fk_commande_item_idCommande FOREIGN KEY (idCommande) - REFERENCES commande(commandeID) + REFERENCES commande(commandeID); ALTER TABLE commande_item ADD CONSTRAINT fk_commande_item_idFood FOREIGN KEY (idFood) - REFERENCES foods(foodID) + REFERENCES foods(foodID); -- -- Déchargement des données de la table `commande_item` @@ -268,32 +270,34 @@ INSERT INTO `commande_item` (`idItemCommande`, `idCommande`, `idFood`) VALUES DROP TABLE IF EXISTS `food_has_special`; CREATE TABLE IF NOT EXISTS `food_has_special` ( - `foodTypeID` int(11) NOT NULL, + `foodID` int(11) NOT NULL, `specialTypeID` int(11) NOT NULL, `nbSpecialMin` int(11) NOT NULL, `nbSpecialMax` int(11) NOT NULL, - PRIMARY KEY (`foodTypeID`,`specialTypeID`) + PRIMARY KEY (`foodID`,`specialTypeID`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; ----REM FOREIGNS KEYS DE LA TABLE food_has_special--- +-- FOREIGNS KEYS DE LA TABLE food_has_special--- ALTER TABLE food_has_special ADD CONSTRAINT fk_food_special_specialType FOREIGN KEY (specialTypeID) - REFERENCES special_type(specialTypeID) + REFERENCES special_type(specialTypeID); ALTER TABLE food_has_special - ADD CONSTRAINT fk_food_special_foodType - FOREIGN KEY (foodTypeID) - REFERENCES foodyype(foodTypeID) + ADD CONSTRAINT fk_food_special_foodID + FOREIGN KEY (foodID) + REFERENCES foods(foodID); -- -- Déchargement des données de la table `food_has_special` -- -INSERT INTO `food_has_special` (`foodTypeID`, `specialTypeID`, `nbSpecialMin`, `nbSpecialMax`) VALUES +INSERT INTO `food_has_special` (`foodID`, `specialTypeID`, `nbSpecialMin`, `nbSpecialMax`) VALUES (1, 2, 1, 1), -(2, 3, 1, 4), -(2, 1, 0, 2); +(3, 3, 1, 3), +(3, 1, 0, 2), +(4, 1, 0, 2), +(4, 3, 1, 4); -- -------------------------------------------------------- @@ -310,11 +314,11 @@ CREATE TABLE IF NOT EXISTS `special_item` ( PRIMARY KEY (`specialItemID`) ) ENGINE=MyISAM AUTO_INCREMENT=10 DEFAULT CHARSET=latin1; ----REM FOREIGNS KEYS DE LA TABLE special_item--- +-- FOREIGNS KEYS DE LA TABLE special_item--- ALTER TABLE special_item ADD CONSTRAINT fk_special_item_part FOREIGN KEY (specialTypeID) - REFERENCES special_type(specialTypeID) + REFERENCES special_type(specialTypeID); -- @@ -345,16 +349,16 @@ CREATE TABLE IF NOT EXISTS `item_commande_has_special` ( PRIMARY KEY (`idItemCommande`,`idItemSpecial`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; ----REM FOREIGNS KEYS DE LA TABLE item_commande_has_special--- +-- FOREIGNS KEYS DE LA TABLE item_commande_has_special--- ALTER TABLE item_commande_has_special ADD CONSTRAINT fk_itemItemsCommandeSpecial_idCommande FOREIGN KEY (idItemCommande) - REFERENCES commande_item(idItemCommande) + REFERENCES commande_item(idItemCommande); ALTER TABLE item_commande_has_special ADD CONSTRAINT fk_itemItemsCommandeSpecial_idSpecial FOREIGN KEY (idItemSpecial) - REFERENCES special_item(specialItemID) + REFERENCES special_item(specialItemID); -- diff --git a/ensiie-project/src/Model/db_connect.php b/ensiie-project/src/Model/db_connect.php index 7d54cbb59093a87e8094b0f361ad913d9b792b0d..d49391cc025bfd80caa972dea4a144c4aa9d0de4 100644 --- a/ensiie-project/src/Model/db_connect.php +++ b/ensiie-project/src/Model/db_connect.php @@ -16,7 +16,7 @@ $engine = "mysql"; try{ if($engine == "mysql"){ - $conn = new PDO("mysql:$servername;dbname=$dbName", $username, $password); + $conn = new PDO("mysql:server=$servername;dbname=$dbName", $username, $password); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); }else if ($engine == "pgsql"){ $conn = new PDO("pgsql:$servername;port=5432;dbname=$dbName;user=$username;password=$password"); diff --git a/ensiie-project/src/Model/db_data.php b/ensiie-project/src/Model/db_data.php index bcaca346d28fac70f37127177b6e68c529a7b78e..4981a4271a207dc571c9b1c1df85645ecc33d07b 100644 --- a/ensiie-project/src/Model/db_data.php +++ b/ensiie-project/src/Model/db_data.php @@ -29,6 +29,78 @@ function db_getActuelEvenement(){ return $evenement; } +function db_getAllFoods(){ + $pdo = $GLOBALS['connection']; + $statement = $pdo->prepare( + "SELECT idPartenariat, nomPartenariat FROM partenariat" + ); + $statement->execute(); + $parts = array(); + while($part = $statement->fetch()){ + $typeFoods = array(); + $typeFoods['Nom'] = $part['nomPartenariat']; + $typeFoods['idPart'] = $part['idPartenariat']; + $typeFoods['typeFood'] = array(); + $statement_typeFoods = $pdo->prepare( + "SELECT TF.foodTypeID, TF.nomTypeFood + FROM foods AS F INNER JOIN foodtype AS TF ON F.foodTypeID = TF.foodtypeID + WHERE F.partID = ? + GROUP BY foodTypeID" + ); + $statement_typeFoods->execute([$typeFoods['idPart']]); + while($type_db = $statement_typeFoods->fetch()){ + $type = array(); + $type['idType'] = $type_db['foodTypeID']; + $type['nomType'] = $type_db['nomTypeFood']; + $type['foods'] = array(); + $statement_foods = $pdo->prepare( + "SELECT F.isAvailable, F.nomFood, F.priceIIE, F.pricePart, F.foodID + FROM foods AS F + WHERE foodTypeID = ? AND partID = ?" + ); + $statement_foods->execute([$type['idType'], $typeFoods['idPart']]); + while($foods_db = $statement_foods->fetch()){ + if($foods_db['isAvailable'] == 0){ + continue; //On ajoute pas la nourriture au tableausi elle n'est pas dispo + } + $food = array(); + $food['foodID'] = $foods_db['foodID']; + $food['nameFood'] = $foods_db['nomFood']; + $food['priceFood'] = $foods_db['priceIIE']; + $food['priceFoodLP'] = $foods_db['pricePart']; + $food['idSpecial'] = array(); + $food['nbMinSpecial'] = array(); + $food['nbMax'] = array(); + $statement_specials = $pdo->prepare( + "SELECT specialTypeID, nbSpecialMin, nbSpecialMax + FROM food_has_special + WHERE foodID = ?" + ); + $statement_specials->execute([$food['foodID']]); + while($spec = $statement_specials->fetch()){ + $idSpecial = $spec['specialTypeID']; + $nbMinSpecial = $spec['nbSpecialMin']; + $nbMax = $spec['nbSpecialMax']; + array_push($food['idSpecial'], $idSpecial); + array_push($food['nbMinSpecial'], $nbMinSpecial); + array_push($food['nbMax'], $nbMax); + } + if(sizeof($food['idSpecial'], 0) == 0){ + $food['idSpecial'] = NULL; + $food['nbMinSpecial'] = NULL; + $food['nbMax'] = NULL; + } + array_push($type['foods'], $food); + } + array_push($typeFoods['typeFood'], $type); + } + array_push($parts, $typeFoods); + } + + + + return $parts; +} function getActuelCommandes($idUtilisateur){ //Get numero de l'evenement actuel