diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..8f1faeea389f96bda98113f6a1ee0c9569540dbf --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/.vscode/ diff --git a/Donnees.inc.php b/Donnees.inc.php new file mode 100644 index 0000000000000000000000000000000000000000..46c897b81bb13a6c2e372ac1b2e03c7d73cace41 --- /dev/null +++ b/Donnees.inc.php @@ -0,0 +1,3725 @@ +<?php $Recettes=array ( + 0 => + array ( + 'titre' => 'Alerte à Malibu (Boisson de la couleurs des fameux maillots de bains... ou presque)', + 'ingredients' => '50 cl de malibu coco|50 cl de gloss cerise|1 l de jus de goyave blanche|1 poignée de griottes', + 'preparation' => 'Mélanger tous les ingrédients ensemble dans un grand pichet. Placer au frais au moins 3 heures avant de déguster. Tchin tchin !!', + 'index' => + array ( + 0 => 'Malibu', + 1 => 'Cerise', + 2 => 'Jus de goyave', + 3 => 'Cerise griotte', + ), + ), + 1 => + array ( + 'titre' => 'Aperol Spritz : Boisson italien pétillant', + 'ingredients' => '1 verre d\'aperol|3 verres de vin blanc pétillant type prosecco|5 glaçons|1 orange sanguine|2 verres d\'eau pétillante', + 'preparation' => 'Préparer la quantité de Boisson souhaitée en respectant les proportions ! Garnir de glaçons et d\'un morceau d\'orange (sanguine si possible). Santé !', + 'index' => + array ( + 0 => 'Aperol', + 1 => 'Prosecco', + 2 => 'Glaçon', + 3 => 'Orange sanguine', + 4 => 'Eau gazeuse', + ), + ), + 2 => + array ( + 'titre' => 'Aquarium', + 'ingredients' => '1/5 de curaçao|1/5 de rhum blanc|1/5 de tequila|1/5 de martini dry|1/5 de sirop de sucre de canne', + 'preparation' => 'Préparer le mélange dans un récipient transparent, ressemblant le plus possible à un aquarium, si vous n\'en avez pas! Mélanger. Ajouter des glaçons, et placer le tout au frigo. Décorer votre récipient, en y incorporant les éléments de déco. L\'effet aquarium doit être surprenant!Les proportions sont à adapter en fonction du nombre de personnes. Ce Boisson se boit normalement à la paille.', + 'index' => + array ( + 0 => 'Curaçao', + 1 => 'Rhum blanc', + 2 => 'Tequila', + 3 => 'Martini', + 4 => 'Sirop de sucre de canne', + ), + ), + 3 => + array ( + 'titre' => 'Black velvet', + 'ingredients' => '12 cl de stout|12 cl de champagne', + 'preparation' => 'Verser le champagne dans un verre et ajouter la bière', + 'index' => + array ( + 0 => 'Stout (bière)', + 1 => 'Champagne', + ), + ), + 4 => + array ( + 'titre' => 'Bloody Mary', + 'ingredients' => '4 cl de vodka|12 cl de jus de tomates|0.5 cl de jus de citron|0.5 cl de sauce worcestershire|tabasco|sel de céleri|poivre', + 'preparation' => 'Mélanger les 4 premiers ingrédients directement dans un verre ou dans un verre à mélange avec des glaçons (pour refroidir sans trop diluer). Ajouter à convenance tabasco, sel de céleri et poivre.', + 'index' => + array ( + 0 => 'Vodka', + 1 => 'Jus de tomates', + 2 => 'Jus de citron', + 3 => 'Sauce worcestershire', + 4 => 'Sauce tabasco', + 5 => 'Sel de céleri', + 6 => 'Poivre', + ), + ), + 5 => + array ( + 'titre' => 'Bora bora', + 'ingredients' => '10 cl de jus d\'ananas|6 cl de jus de fruits de la passion|2 cl de sirop de grenadine|1 cl de jus de citrons|3 glaçons', + 'preparation' => 'Réaliser cette recette au shaker. Servir dans un verre contenant des glaçons avec une rondelle d\'orange.', + 'index' => + array ( + 0 => 'Jus d\'ananas', + 1 => 'Jus de fruits de la passion', + 2 => 'Sirop de grenadine', + 3 => 'Jus de citron', + 4 => 'Glaçon', + ), + ), + 6 => + array ( + 'titre' => 'Builder', + 'ingredients' => '1 concombre|1 citron|1 cuillère à soupe de sucre|3 glaçons', + 'preparation' => 'Mixer le concombre dans la centrifugeuse, ajouter le jus du citron, le sucre et les glaçons. Servir dans un verre décoré d\'une tranche de citron.', + 'index' => + array ( + 0 => 'Concombre', + 1 => 'Citron', + 2 => 'Sucre', + 3 => 'Glaçon', + ), + ), + 7 => + array ( + 'titre' => 'Caïpirinha', + 'ingredients' => '4 cl de cachaça|1/2 citron vert|1 cuillère à soupe de sucre en poudre|glaçons', + 'preparation' => 'Couper le citron vert en deux, puis en quartier en enlevant la partie blanche centrale, responsable de l\'amertume. Mettre le citron découpé et le sucre dans un verre et piler. Ajouter la glace et la cachaça. Mélanger à la cuillère.', + 'index' => + array ( + 0 => 'Cachaça', + 1 => 'Citron vert', + 2 => 'Sucre en poudre', + 3 => 'Glaçon', + ), + ), + 8 => + array ( + 'titre' => 'Champagne en Boisson', + 'ingredients' => '1 morceau de sucre roux|3 traits d\'angostura|1 cl de cognac|c 8 cl de champagne', + 'preparation' => 'Placer les ingrédients directement dans un verre de type flûte à champagne dans l\'ordre suivant : Imbiber le morceau de sucre d\'angostura, puis le mettre au fond d\'une flûte à champagne. Verser doucement le cognac (il doit recouvrir le morceau de sucre). Compléter avec du champagne bien frais.', + 'index' => + array ( + 0 => 'Sucre roux', + 1 => 'Angostura', + 2 => 'Cognac', + 3 => 'Champagne', + ), + ), + 9 => + array ( + 'titre' => 'Citrouillette (Boisson au champagne)', + 'ingredients' => 'noilly prat|champagne', + 'preparation' => 'Verser 1/3 de Nouilly Prat dans un verre puis 2/3 de Champagne bien frais. Déguster, c\'est excellent.', + 'index' => + array ( + 0 => 'Noilly Prat', + 1 => 'Champagne', + ), + ), + 10 => + array ( + 'titre' => 'Boisson Bacardi', + 'ingredients' => '24 cl de rhum bacardi|6 cl de sirop de grenadine|12 cl de jus de citron', + 'preparation' => '1. Mettez le bacardi,le sirop de grenadine et le jus de citron dans un shaker.Secouez énergiquement. 2. Versez dans des verres et servez aussitôt.', + 'index' => + array ( + 0 => 'Rhum', + 1 => 'Sirop de grenadine', + 2 => 'Jus de citron', + ), + ), + 11 => + array ( + 'titre' => 'Boisson Bacardi, grenadine, citron', + 'ingredients' => '24 cl de rhum bacardi|6 cl de sirop de grenadine|12 cl de jus de citron', + 'preparation' => 'Mettez le sirop de grenadine,le jus de citron et le Bacardi dans un shaker. Secouez fortement. Versez dans des verres et servez tout de suite.', + 'index' => + array ( + 0 => 'Rhum', + 1 => 'Sirop de grenadine', + 2 => 'Jus de citron', + ), + ), + 12 => + array ( + 'titre' => 'Boisson Balalaïka', + 'ingredients' => '4 cl de vodka|2 cl de cointreau|4 cl de jus de citron|rondelles de citron|quelques glaçons', + 'preparation' => 'Verser les alcools et le jus de citron dans un verre haut, sur des glaçons. Décorer avec les rondelles de citron.', + 'index' => + array ( + 0 => 'Vodka', + 1 => 'Cointreau', + 2 => 'Jus de citron', + 3 => 'Citron', + 4 => 'Glaçon', + ), + ), + 13 => + array ( + 'titre' => 'Boisson Cava Vodka Lemon', + 'ingredients' => '10 cl de cava|2 cl de vodka|2 cl de sirop de citron vert|1 zeste de citron vert', + 'preparation' => ' Mélanger la vodka et le sirop de citron vert. Verser le cava dans une flûte. Ajouter délicatement le mélange vodka citron vert. Décorer avec le zeste de citron vert. ', + 'index' => + array ( + 0 => 'Cava', + 1 => 'Vodka', + 2 => 'Citron vert', + 3 => 'Zeste de citron vert', + ), + ), + 14 => + array ( + 'titre' => 'Boisson Champagne et saké', + 'ingredients' => '75 cl de champagne|16 cl de saké|4 brins de coriandre fraîche', + 'preparation' => ' Dans une flûte à Champagne, verser 4 cl de saké et compléter avec le Champagne. Ajouter un brin de coriandre par verre. A votre santé. ', + 'index' => + array ( + 0 => 'Champagne', + 1 => 'Saké', + 2 => 'Coriandre', + ), + ), + 15 => + array ( + 'titre' => 'Boisson Eau de mer', + 'ingredients' => '6 bouteilles de mousseux|20 cl de curaçao|70 cl de triple sec|35 cl de sirop de citrons|35 cl de sirop d\'oranges|25 cl de sucre de canne', + 'preparation' => 'Dans un grand récipient mélanger le triple sec, le curacao, le pulco citron, le pulco orange et le sucre de canne. Ensuite, ajouter les bouteilles de mousseux bien fraîches. Servir aussitôt.', + 'index' => + array ( + 0 => 'Vin effervescent', + 1 => 'Curaçao', + 2 => 'Triple sec', + 3 => 'Sirop de citrons', + 4 => 'Sirop d\'oranges', + 5 => 'Sucre de canne en poudre', + ), + ), + 16 => + array ( + 'titre' => 'Boisson Fraisalia (sans alcool)', + 'ingredients' => '500 g de fraises|50 cl de jus d\'orange|10 cl de sirop de fraise|2 l de limonade|10 glaçons', + 'preparation' => ' Placer dans un saladier les fraises coupées en morceaux, le jus d\'orange et le sirop de fraise. Laisser reposer au frais au moins 2 heures. Au moment de servir, ajouter le limonade et les glaçons. ', + 'index' => + array ( + 0 => 'Fraise', + 1 => 'Jus d\'orange', + 2 => 'Sirop de fraises', + 3 => 'Limonade', + 4 => 'Glaçon', + ), + ), + 17 => + array ( + 'titre' => 'Boisson Grand Paradis', + 'ingredients' => '1 cl de cognac|c 5 cl de jus d\'abricot|10 cl environ de champagne', + 'preparation' => 'Mélanger au shaker le cognac et le jus d\'abricot. Verser dans un verre (type verre tulipe) et remplir de champagne.', + 'index' => + array ( + 0 => 'Cognac', + 1 => 'Jus d\'abricots', + 2 => 'Champagne', + ), + ), + 18 => + array ( + 'titre' => 'Boisson Lion rouge', + 'ingredients' => '2 cl de whisky|2 cl de crème de cassis|2 traits de bénédictine|2 traits de pastis|glaçons', + 'preparation' => ' Remplir un shaker de glaçons, y verser les différents alcools. Fermer, puis agiter fortement quelques secondes. Servir. ', + 'index' => + array ( + 0 => 'Whisky', + 1 => 'Crème de cassis', + 2 => 'Bénédictine', + 3 => 'Pastis', + 4 => 'Glaçon', + ), + ), + 19 => + array ( + 'titre' => 'Boisson MAP', + 'ingredients' => '1/3 de martini blanc|1 trait d\'angostura|2/3 de jus de pamplemousse', + 'preparation' => 'Mettre les flûtes au congélateur. Presser le pamplemousse ou ouvrir la bouteille ou le berlingot... Verser 1/3 martini, 2/3 jus de pamplemousse et 1 trait d\'angustura. Pour la déco : poser sur chaque verre une torsade de pain aux graines de pavot et sucre dorée au four mais pétrie d\'amour et à la MAP of course...', + 'index' => + array ( + 0 => 'Martini blanc', + 1 => 'Angostura', + 2 => 'Jus de pamplemousse', + ), + ), + 20 => + array ( + 'titre' => 'Boisson MTS', + 'ingredients' => '50 cl de martini|25 cl de triple sec|c 25 cl de sucre de canne|50 cl de jus de fruits multivitaminés', + 'preparation' => 'Dans un grand pichet, verser tous les ingrédients et les mélanger. Laisser reposer une heure au réfrigérateur. A déguster très frais.', + 'index' => + array ( + 0 => 'Martini', + 1 => 'Triple sec', + 2 => 'Sucre de canne en poudre', + 3 => 'Jus multivitaminé', + ), + ), + 21 => + array ( + 'titre' => 'Boisson Madras', + 'ingredients' => '40 cl jus d\'orange|20 cl de vin blanc|sirop de grenadine', + 'preparation' => 'Mélanger le jus d\'orange avec le vin blanc. Verser le mélange dans des verres. Ajouter un filet de sirop de grenadine.', + 'index' => + array ( + 0 => 'Jus d\'orange', + 1 => 'Vin blanc', + 2 => 'Sirop de grenadine', + ), + ), + 22 => + array ( + 'titre' => 'Boisson Mexicain à ma façon', + 'ingredients' => '40 cl de tequila|1 l de jus de goyave|1 l de jus d\'ananas|30 cl de jus de pomme|1 sachet de sucre vanillé|3 ou 4 feuilles de menthe', + 'preparation' => 'Mélanger les jus de goyave et d\'ananas. Ajouter la téquila et le jus de pomme. Mélanger. Ajouter le sucre vanillé et secouer jusqu\'à ce que le sucre soit fondu. Ciseler les feuilles de menthe et les incorporer au Boisson. Réserver au frigo pendant 12 à 24 heures. Attention, l\'alcool de la téquila s\'évanouit vite. On ne le sent presque plus au bout de 48 heures, ne le préparer donc pas trop tôt. Filtrer le mélange et servir bien frais.', + 'index' => + array ( + 0 => 'Tequila', + 1 => 'Jus de goyave', + 2 => 'Jus d\'ananas', + 3 => 'Jus de pommes', + 4 => 'Sucre vanillé', + 5 => 'Menthe', + ), + ), + 23 => + array ( + 'titre' => 'Boisson Pomabricotine', + 'ingredients' => '45 cl de jus d\'abricots|45 cl de jus de pommes|35 cl d\'eau gazeuse|2.5 cl de liqueur|5 cl de sirop de grenadine', + 'preparation' => 'Mélanger tous les ingrédients, mettre au frais et ajouter l\'eau gazeuse fraîche au dernier moment pour conserver le pétillant.', + 'index' => + array ( + 0 => 'Jus d\'abricots', + 1 => 'Jus de pommes', + 2 => 'Eau gazeuse', + 3 => 'Liqueur', + 4 => 'Sirop de grenadine', + ), + ), + 24 => + array ( + 'titre' => 'Boisson Pomenas', + 'ingredients' => '20 cl de jus de pamplemousse|20 cl de jus d\'ananas|20 cl de jus de pommes|quelques framboises|des glaçons', + 'preparation' => 'Verser les jus dans une cruche, ajouter les framboises pour donner la couleur et des glaçons pour la fraîcheur. Servir frais.', + 'index' => + array ( + 0 => 'Jus de pamplemousse', + 1 => 'Jus d\'ananas', + 2 => 'Jus de pommes', + 3 => 'Framboise', + 4 => 'Glaçon', + ), + ), + 25 => + array ( + 'titre' => 'Boisson Whisky Cranberries', + 'ingredients' => '1 dose de whisky|2 doses de jus de cranberries', + 'preparation' => 'Simplement mélanger le tout et... Santé!', + 'index' => + array ( + 0 => 'Whisky', + 1 => 'Jus de canneberge', + ), + ), + 26 => + array ( + 'titre' => 'Boisson anapomise', + 'ingredients' => '25 cl de jus de cerises|25 cl de jus de pommes|25 cl de jus d\'ananas|2,5 cl d\'alcool de prune|2,5 cl de sirop de sucre de canne', + 'preparation' => 'Mélangez tous les ingrédients et servir bien frais.', + 'index' => + array ( + 0 => 'Jus de cerises', + 1 => 'Jus de pommes', + 2 => 'Jus d\'ananas', + 3 => 'Alcool de prune', + 4 => 'Sirop de sucre de canne', + ), + ), + 27 => + array ( + 'titre' => 'Boisson apéritif', + 'ingredients' => '2 l de vin blanc sec|200 g sucre|2 citrons|2 oranges|2 grands verres de rhum|1 grande bouteille de perrier', + 'preparation' => 'Mélanger tous les ingrédients et servir très frais.', + 'index' => + array ( + 0 => 'Vin blanc sec', + 1 => 'Sucre', + 2 => 'Citron', + 3 => 'Orange', + 4 => 'Rhum', + 5 => 'Perrier', + ), + ), + 28 => + array ( + 'titre' => 'Boisson apéritif aux framboises', + 'ingredients' => '1 l de vin blanc|2 l de mousseux|250 g de framboises surgelées|4 à 5 cuillères à soupe de sucre', + 'preparation' => 'Mélanger le vin blanc, les mousseux et le sucre. Ajouter les framboises surgelées... Déguster bien frais...', + 'index' => + array ( + 0 => 'Vin blanc', + 1 => 'Vin effervescent', + 2 => 'Framboise', + 3 => 'Sucre', + ), + ), + 29 => + array ( + 'titre' => 'Boisson au Martini', + 'ingredients' => '1 l de martini blanc|1.5 l de schweppes aux agrumes|1 citron', + 'preparation' => 'Mélanger les liquides. Couper le citron en gros morceaux et l\'ajouter. Servir très frais avec des glaçons.', + 'index' => + array ( + 0 => 'Martini', + 1 => 'Agrume', + 2 => 'Citron', + ), + ), + 30 => + array ( + 'titre' => 'Boisson au cidre', + 'ingredients' => '1 bouteille de cidre brut|1/2 verre de crème de cassis|1/2 verre de cointreau', + 'preparation' => ' Mélanger le cassis et le cointreau. Tenir au frais tous les ingrédients. Et au dernier moment ajouter le cidre. ', + 'index' => + array ( + 0 => 'Cidre brut', + 1 => 'Crème de cassis', + 2 => 'Cointreau', + ), + ), + 31 => + array ( + 'titre' => 'Boisson au kumquat et au litchi', + 'ingredients' => '5 kumquats|5 litchis|1 clémentine|1/2 orange|1/2 l d\'eau|1 l de limonade', + 'preparation' => ' Mixer au mixeur tous les fruits ainsi que l\'eau jusqu\'à obtenir un mélange homogène. Ajouter le litre de limonade. Mettre au réfrigérateur 1 h. ', + 'index' => + array ( + 0 => 'Kumquat', + 1 => 'Litchi', + 2 => 'Clémentine', + 3 => 'Orange', + 4 => 'Eau', + 5 => 'Limonade', + ), + ), + 32 => + array ( + 'titre' => 'Boisson au limoncello', + 'ingredients' => '2 oranges|5 cl de rhum ambré|1 trait de limoncello|glaçons', + 'preparation' => 'Verser le rhum ambré dans le verre. Presser les 2 oranges, puis ajouter le jus au rhum. Ajouter ensuite le trait de Limoncello, remuer et ajouter quelques glaçons. C\'est prêt !', + 'index' => + array ( + 0 => 'Orange', + 1 => 'Rhum ambré', + 2 => 'Limoncello', + 3 => 'Glaçon', + ), + ), + 33 => + array ( + 'titre' => 'Boisson aux agrumes sans alcool', + 'ingredients' => '6 cl jus d\'orange|4.5 cl jus de citron jaune|2 cuillères à café de sirop de grenadine ou de fraise', + 'preparation' => ' Mesurer chacun des ingrédients et les verser dans un shaker. Bien secouer. Verser le tout dans un verre à Boisson ou une flûte à champagne. Réitérer l\'opération pour chaque personne. ', + 'index' => + array ( + 0 => 'Jus d\'orange', + 1 => 'Jus de citron', + 2 => 'Fraise', + ), + ), + 34 => + array ( + 'titre' => 'Boisson aux framboise', + 'ingredients' => '450 g de framboise surgelés|1 bouteille de sirop de sucre de canne|50 cl de kirsch|1 l de limonade|1 citron|3 bouteilles de crémant d’alsace', + 'preparation' => 'La veille : mettre les framboises, le citron en tranches, 3 verres de sirop de sucre de canne, le kirsch et la moitié de la limonade dans un gros recipient, puis laisser macérer au frigo. Mettre le reste de limonade et les bouteilles de crémant au frigo. Juste avant de servir : Rajouter à la préparation de la veille le reste de limonade et les bouteilles de Crémant. Goûter et rajouter du sucre de canne si besoin car certain crémants son plus amers que d’autre.', + 'index' => + array ( + 0 => 'Framboise', + 1 => 'Sirop de sucre de canne', + 2 => 'Kirsch', + 3 => 'Limonade', + 4 => 'Citron', + 5 => 'Crémant', + ), + ), + 35 => + array ( + 'titre' => 'Boisson bulles de melon', + 'ingredients' => '2 melons|1 bouteille de crémant ou de champagne|sirop de sucre de canne|1 citron|glaçons', + 'preparation' => 'Otez les pépins des melons et mixez le melon. Pressez le citron. Mélangez le tout avec le vin pétillant, puis rajoutez des glacons et sucrez à votre goût. Servez de suite.', + 'index' => + array ( + 0 => 'Melon', + 1 => 'Crémant', + 2 => 'Sirop de sucre de canne', + 3 => 'Citron', + 4 => 'Glaçon', + ), + ), + 36 => + array ( + 'titre' => 'Boisson café au lait', + 'ingredients' => '4 à 6 cl de liqueur de café|4 à 6 cl de whisky|30 cl de lait|2 à 6 cl de sucre de canne|4 glaçons', + 'preparation' => 'Dans un shaker, verser tous les ingrédients + 2 glaçons. (répartir les autres glaçons dans le verre). Agiter le shaker jusqu\'à ce que les glaçons soient quasimment fondus. Verser dans un verre large voire évasé afin d\'obtenir une mousse onctueuse.', + 'index' => + array ( + 0 => 'Liqueur de café', + 1 => 'Whisky', + 2 => 'Lait', + 3 => 'Sucre de canne en poudre', + 4 => 'Glaçon', + ), + ), + 37 => + array ( + 'titre' => 'Boisson cardinal', + 'ingredients' => 'glace pilée|3 cl de campari|3 cl de noilly prat original dry|3 cl de gin', + 'preparation' => 'Dans un shaker, remplir de glace à moitié.Verser les ingrédients. Frapper. Servir dans un verre à Boisson et ajouter un zeste de citron.', + 'index' => + array ( + 0 => 'Glace pilée', + 1 => 'Campari', + 2 => 'Noilly Prat', + 3 => 'Gin', + ), + ), + 38 => + array ( + 'titre' => 'Boisson champagne menthe citron vert', + 'ingredients' => '1 bouteille de champagne|glaçons|1 cuillère à café de jus de citron vert|2 feuilles de menthe|1 zeste de citron', + 'preparation' => ' Mettre dans un verre des glaçons à volonté. Ajouter une feuille découpée en deux et une entière pour la déco. Joindre le jus de citron vert et submerger de Champagne. Laisser reposer 2 min le temps que la saveur monte. Puis savourer ! ', + 'index' => + array ( + 0 => 'Champagne', + 1 => 'Glaçon', + 2 => 'Jus de citrons verts', + 3 => 'Menthe', + 4 => 'Zeste de citron', + ), + ), + 39 => + array ( + 'titre' => 'Boisson champanisé', + 'ingredients' => '4 bouteilles de mousseux|1/2 bouteille cointreau|10 citrons pressés avec pulpe|2 verres de sirop de sucre de canne|des glaçons', + 'preparation' => 'Dans un grand récipient, verser le Cointreau, le jus des citrons avec leur pulpe et le sirop de sucre de canne. Verser le mousseux en dernier. Ajouter des glaçons. Servez dans des verres frais (l\'idéal est de les placer au réfrigérateur avant).', + 'index' => + array ( + 0 => 'Vin effervescent', + 1 => 'Cointreau', + 2 => 'Citron', + 3 => 'Sirop de sucre de canne', + 4 => 'Glaçon', + ), + ), + 40 => + array ( + 'titre' => 'Boisson citron-menthe (sans alcool)', + 'ingredients' => '4 cl de sirop de menthe|1 trait de sirop de sucre de canne|2 cl de jus de citron vert|3 cl de jus de citron jaune|1 branche de menthe fraîche|1 tranche de citron', + 'preparation' => 'Mettre dans un shaker, avec de la glace, le sirop de menthe, le sirop de sucre et les jus de citron. Bien agiter. Verser dans un verre, décorer d\'une branche de menthe et d\'une tranche de citron.', + 'index' => + array ( + 0 => 'Sirop à la menthe', + 1 => 'Sirop de sucre de canne', + 2 => 'Jus de citrons verts', + 3 => 'Jus de citron', + 4 => 'Menthe', + 5 => 'Tranche de citron', + ), + ), + 41 => + array ( + 'titre' => 'Boisson coco', + 'ingredients' => '30 cl de vodka|1/2 l de lait|2 boules de glace à la noix de coco|2 boules de vanille|sirop de coco ou sirop de sucre de canne|5 glaçons', + 'preparation' => 'Mettre le tout dans un mixeur et dégustez.', + 'index' => + array ( + 0 => 'Vodka', + 1 => 'Lait', + 2 => 'Crème glacée à la noix de coco', + 3 => 'Vanille', + 4 => 'Sirop de sucre de canne', + 5 => 'Glaçon', + ), + ), + 42 => + array ( + 'titre' => 'Boisson coco des amoureux', + 'ingredients' => '1 noix de coco|rhum blanc', + 'preparation' => 'Percer la noix de coco en 3 endroits sur le dessus, et vider l\'eau à l\'intérieur. Remplir entièrement de rhum blanc. Boucher les trous en retaillant un bouchon de liège, et fermer hermétiquement en faisant couler de la cire de bougie dessus.Ranger debout, au frigo, pendant 3 semaines.', + 'index' => + array ( + 0 => 'Noix de coco', + 1 => 'Rhum blanc', + ), + ), + 43 => + array ( + 'titre' => 'Boisson crème de coco et banane', + 'ingredients' => 'crème de coco|jus de banane|sirop de fraise|citron vert', + 'preparation' => 'Dans le fond d\'un verre verser 3 cuillères à café de crème de coco. Diluer avec du jus de banane jusqu\'a ce que le liquide ait un aspect uniforme. Ajouter un peu de sirop de cassis et quelques gouttes de jus de citron vert. Servir très frais.', + 'index' => + array ( + 0 => 'Crème de noix de coco', + 1 => 'Jus de bananes', + 2 => 'Sirop de fraises', + 3 => 'Citron vert', + ), + ), + 44 => + array ( + 'titre' => 'Boisson de fruits', + 'ingredients' => '1 banane|1 pomme|2 kiwis|1 petit bol d\'eau|1 sachet de sucre vanillé|3 cuillères à soupe de cassonade', + 'preparation' => ' Peler et couper les fruits en morceaux. Les mettre dans le blender (ou tout autre récipient à Boisson), puis mixer le tout, en rajoutant peu à peu l\'eau, jusqu\'à obtention de la consistance voulue (moi j\'aime bien quand c\'est un peu épais). Rajouter ensuite le sucre vanillé et la cassonade, selon le goût. Mixer une dernière fois pour que le sucre s\'intègre bien au mélange. Mettre au frais pendant une petite heure et déguster ! ', + 'index' => + array ( + 0 => 'Banane', + 1 => 'Pomme', + 2 => 'Kiwi', + 3 => 'Eau', + 4 => 'Sucre vanillé', + 5 => 'Cassonade', + ), + ), + 45 => + array ( + 'titre' => 'Boisson de fruits au citron vert', + 'ingredients' => '10 cl de de lait de coco|20 cl de jus multivitaminé|1 cuillère à café de jus de citron vert|quelques glaçons|1 rondelle de citron vert', + 'preparation' => 'Versez 10 cl de lait de coco et 20 cl de jus multivitaminé dans un shaker. Ajoutez une cuillère à café de jus de citron vert et quelques glaçons. Mélangez bien et servez dans un verre à cockail; décorez avec une rondelle de citron vert.', + 'index' => + array ( + 0 => 'Lait de coco', + 1 => 'Jus multivitaminé', + 2 => 'Jus de citrons verts', + 3 => 'Glaçon', + 4 => 'Citron vert', + ), + ), + 46 => + array ( + 'titre' => 'Boisson de jus de fruits pour les enfants', + 'ingredients' => '5 cuillères à soupe de jus d\'ananas|3 cuillère à soupe de jus de pommes|2 glaçons|1 rondelle d\'ananas|1 rondelle de pomme|1 cuillère à café de sucre en poudre', + 'preparation' => 'Mettre le jus de pomme et le jus d\'ananas dans un grand verre, puis mélanger. Ajouter le sucre et remuer à nouveau, puis ajouter les glaçons. Mettre 5 min au frigo. Au moment de servir, mettre les rondelles d\'ananas et de pommes sur le bord du verre pour la déco.', + 'index' => + array ( + 0 => 'Jus d\'ananas', + 1 => 'Jus de pommes', + 2 => 'Glaçon', + 3 => 'Ananas', + 4 => 'Pomme', + 5 => 'Sucre en poudre', + ), + ), + 47 => + array ( + 'titre' => 'Boisson de pomme ambrée', + 'ingredients' => '1 pomme|1 citron|6 glaçons|10 cl de jus de pomme|5 cl de calvados|10 cl de crème de cassis|champagne|un peu de cassis|morceaux de pommes|morceaux d\'ananas', + 'preparation' => 'Taillez une pomme en fines tranches et arrosez-les avec le jus d\'un citron. Réservez. Mettez 6 glaçons dans votre shaker, versez 10 cl de jus de pomme, 5 cl de calvados et 10 cl de crème de cassis. Agitez pendant 10 secondes. Répartissez dans 4 verres à Boisson, puis remplissez de champagne. Décorez de cassis, pomme et ananas.', + 'index' => + array ( + 0 => 'Pomme', + 1 => 'Citron', + 2 => 'Glaçon', + 3 => 'Jus de pommes', + 4 => 'Calvados', + 5 => 'Crème de cassis', + 6 => 'Champagne', + 7 => 'Cassis', + 8 => 'Pomme', + 9 => 'Ananas', + ), + ), + 48 => + array ( + 'titre' => 'Boisson des dimanches de neige', + 'ingredients' => 'une poignée de framboises|2 cuillères à café de sirop de gratte-cul|1/2 pamplemousse|1 orange', + 'preparation' => ' Mettre au fond d\'un joli verre, les framboises et le sirop. Ajouter le jus d\'orange et de pamplemousse pressés. Servir bien frais et regarder la neige par la fenêtre en se demandant si, vraiment, on va sortir aujourd\'hui. ', + 'index' => + array ( + 0 => 'Framboise', + 1 => 'Sirop de gratte cul', + 2 => 'Pamplemousse', + 3 => 'Orange', + ), + ), + 49 => + array ( + 'titre' => 'Boisson des îles Praslin', + 'ingredients' => '40 cl de jus de mangue|30 cl de jus d\'ananas|20 cl de jus de fruit de la passion|10 cl de jus de citron vert|1 cuillère à soupe de sucre', + 'preparation' => 'On mélange le tout dans une bouteille. On secoue bien pendant 20 secondes environ et on met au frigo pour que ça soit bien frais au moment de servir. A servir dans des grands verres à Boisson et avec des jolies pailles colorées.', + 'index' => + array ( + 0 => 'Jus de mangue', + 1 => 'Jus d\'ananas', + 2 => 'Jus de fruit de la passion', + 3 => 'Jus de citrons verts', + 4 => 'Sucre', + ), + ), + 50 => + array ( + 'titre' => 'Boisson du verger', + 'ingredients' => '4 cl de liqueur d\'abricot|5 cl de liqueur de pomme|12 cl de jus de poire|3 glaçons', + 'preparation' => 'Dans un grand verre à Boisson, installer les 3 glacons. Verser chaque ingrédient dans l\'ordre énoncé ci-dessus. Bien mélanger et déguster !!', + 'index' => + array ( + 0 => 'Liqueur d\'abricot', + 1 => 'Liqueur de pommes', + 2 => 'Jus de poires', + 3 => 'Glaçon', + ), + ), + 51 => + array ( + 'titre' => 'Boisson exotique au fruit de la passion', + 'ingredients' => '1 l de limonade|35 cl de sirop de curaçao|35 cl de sirop de fruit de la passion|20 cl de jus de citron|5 glaçons', + 'preparation' => 'Dans un shaker, mélanger le sirop de curaçao, le sirop de fruit de la passion et le jus de citron. Bien secouer puis verser le mélange obtenu dans un récipient. Incorporer le litre de limonade et bien mélanger. Ajouter les 5 glaçons et servir.', + 'index' => + array ( + 0 => 'Limonade', + 1 => 'Curaçao', + 2 => 'Sirop de fruit de la passion', + 3 => 'Jus de citron', + 4 => 'Glaçon', + ), + ), + 52 => + array ( + 'titre' => 'Boisson glacé tropical', + 'ingredients' => '10 cl du jus de citron vert|10 cl de jus de mangue|1/2 banane|100 g de glace à la mangue|coulis de framboise', + 'preparation' => 'Mixez tous les ingrédients (sauf le coulis) jusqu\'à ce que le mélange soit bien onctueux. Décorez votre verre d\'un peu de coulis, et versez votre préparation dans ce même verre.', + 'index' => + array ( + 0 => 'Jus de citrons verts', + 1 => 'Jus de mangue', + 2 => 'Banane', + 3 => 'Mangue', + 4 => 'Framboise', + ), + ), + 53 => + array ( + 'titre' => 'Boisson italien prosecco', + 'ingredients' => '75 cl de prosecco|20 litchis|30 cl de jus de litchis|10 cl de jus de baies|1 l à 1,5 l de limonade au pamplemousse pétillante, impérativement', + 'preparation' => 'Mélanger les ingrédients juste avant de servir. Verser dans des verres hauts. Éventuellement, préparer une petite brochette avec un litchi et une cerise par personne.', + 'index' => + array ( + 0 => 'Prosecco', + 1 => 'Litchi', + 2 => 'Jus de litchis', + 3 => 'Jus de baies', + 4 => 'Limonade', + ), + ), + 54 => + array ( + 'titre' => 'Boisson la variante (à base de rosé)', + 'ingredients' => '5,33l de vin rosé|0,66l de sirop d\'agrumes|4l de jus d\'orange', + 'preparation' => 'mélangez le tout Boire très frais "à consommer avec modération"', + 'index' => + array ( + 0 => 'Vin rosé', + 1 => 'Sirop d\'agrumes', + 2 => 'Jus d\'orange', + ), + ), + 55 => + array ( + 'titre' => 'Boisson light fraîcheur à la pastèque', + 'ingredients' => '300 g de pastèque|1 yaourt 0%|2 cuillères de sirop de roses', + 'preparation' => 'Enlevez les pépins de la pastèque. Dans un mixeur, mettez la pastèque coupée en morceaux, le yaourt et le sirop de rose. Mixez le tout ! Servez aussitôt !!!', + 'index' => + array ( + 0 => 'Pastèque', + 1 => 'Yaourt', + 2 => 'Sirop de roses', + ), + ), + 56 => + array ( + 'titre' => 'Boisson léger au martini', + 'ingredients' => '1 bouteille de martini rosé|1 bouteille d\'eau minérale gazeuse|2 citrons verts|une poignée de feuilles de menthe fraîche|2 cuillères à soupe de sucre', + 'preparation' => 'Verser le martini dans un grand pichet, ajouter le sucre et faire fondre.Ajouter ensuite les citrons coupés en morceaux et la menthe. Mélanger et mettre au frais au moins 4 heures (une nuit c\'est mieux). Au moment de servir, verser la bouteille d\'eau gazeuse.', + 'index' => + array ( + 0 => 'Martini rosé', + 1 => 'Eau minérale gazeuse', + 2 => 'Citron vert', + 3 => 'Menthe', + 4 => 'Sucre', + ), + ), + 57 => + array ( + 'titre' => 'Boisson mexicanos', + 'ingredients' => '12 cl de bière "desperados"|12 cl de jus d\'ananas|1 trait de sirop de fraises', + 'preparation' => 'Dans un verre à bière, verser un trait de sirop de fraise. Compléter avec la bière, en penchant le verre pour éviter de faire trop de mousse, et verser ensuite le jus d\'ananas. Boire très frais.', + 'index' => + array ( + 0 => 'Bière', + 1 => 'Jus d\'ananas', + 2 => 'Sirop de fraises', + ), + ), + 58 => + array ( + 'titre' => 'Boisson mousseux fraise citron vert (sans alcool)', + 'ingredients' => '400 g de fraises|2 c.à s.de sucre|10 cl de jus de citron vert|30 cl de limonade', + 'preparation' => 'Laver, équeuter les fraises.Les mettre dans un mixer.Ajouter le jus des citrons verts et le sucre.Mixer.Verser la limonade et mixer de nouveau.Réserver au frais jusqu\'au moment de servir. Voilà c\'est terminé !!! Bonne dégustation !!', + 'index' => + array ( + 0 => 'Fraise', + 1 => 'Sucre', + 2 => 'Jus de citrons verts', + 3 => 'Limonade', + ), + ), + 59 => + array ( + 'titre' => 'Boisson noix de coco-café', + 'ingredients' => '2,5 cl malibu coco|2,5 cl lait de coco|2 cl de lait de soja|1 demi tasse à c. de café bien serré|1 cl de sirop de sucre de canne|5 glaçons pillés', + 'preparation' => 'Mettre les ingrédients dans un shaker. Agiter énergiquement en maintenant fermement et à deux mains le shaker et ses bouchons. Verser dans de jolis verres à Boisson.Décorer cette préparation de poudre de noisette.', + 'index' => + array ( + 0 => 'Malibu', + 1 => 'Lait de coco', + 2 => 'Lait de soja', + 3 => 'Café', + 4 => 'Sirop de sucre de canne', + 5 => 'Glaçon', + ), + ), + 60 => + array ( + 'titre' => 'Boisson pamplemousse menthe', + 'ingredients' => '1 pamplemousse|2 cuillères à soupe de glace pilée|2 cuillères à soupe de sucre roux|10 feuilles de menthe', + 'preparation' => 'Retirer le jus des pamplemousses, verser ce jus dans le blender, ajouter le reste des ingrédients et mixer le tout!!', + 'index' => + array ( + 0 => 'Pamplemousse', + 1 => 'Glace pilée', + 2 => 'Sucre roux', + 3 => 'Menthe', + ), + ), + 61 => + array ( + 'titre' => 'Boisson paradise', + 'ingredients' => '10 cl de jus d\'orange|4 cl de vodka|2 cl de pisang ambon|2 cl de sucre de canne', + 'preparation' => 'Réunir les ingrédients, hormis le Pisang, dans un shaker. Frapper. Verser dans un verre à Boisson, puis ajouter le Pisang. Servir frais.', + 'index' => + array ( + 0 => 'Jus d\'orange', + 1 => 'Vodka', + 2 => 'Pisang Ambon', + 3 => 'Sucre de canne en poudre', + ), + ), + 62 => + array ( + 'titre' => 'Boisson pour les amoureux', + 'ingredients' => '12 cl de jus d\'oranges|18 cl de cointreau|10 cl de cognac|3 traits de grenadine|10 cl de champagne|quelques framboises', + 'preparation' => 'Mélanger tous les ingrédients (si possible préalablement mis au frigo) à la cuillère ou au shaker. Ajouter uniquement avant de servir les framboises (pour qu\'elles gardent leur consistance) ou une heure avant si vous les souhaitées bien imbibées.', + 'index' => + array ( + 0 => 'Jus d\'orange', + 1 => 'Cointreau', + 2 => 'Cognac', + 3 => 'Grenadine', + 4 => 'Champagne', + 5 => 'Framboise', + ), + ), + 63 => + array ( + 'titre' => 'Boisson rose au whisky', + 'ingredients' => '400 g de framboises|6 brins de coriandre fraîche|5 cl de whisky|15 cl de crème fraîche|3 cuillères à soupe de pistaches non salées concassées', + 'preparation' => '1. Mixez les framboises avec la crème et 15 cl d\'eau glacée.Répartissez le mélange obtenu dans des verres. 2. Ajoutez un trait de whisky et parsemez de pistaches concassées.Décorez d\'une tige de coriandre et réservez au frais jusqu\'au moment de servir.', + 'index' => + array ( + 0 => 'Framboise', + 1 => 'Coriandre', + 2 => 'Whisky', + 3 => 'Crème fraiche', + 4 => 'Pistache', + ), + ), + 64 => + array ( + 'titre' => 'Boisson rose rosé pamplemousse', + 'ingredients' => '1 bouteille de vin rosé|30 cl de jus de pamplemousse rose|5 cl de grenadine', + 'preparation' => ' Dans une grande carafe, versez le sirop de grenadine puis le vin rosé et le jus de pamplemousse. Servir très frais. ', + 'index' => + array ( + 0 => 'Vin rosé', + 1 => 'Jus de pamplemousse', + 2 => 'Grenadine', + ), + ), + 65 => + array ( + 'titre' => 'Boisson rose sucré', + 'ingredients' => '150 g de framboises|1 citron|8 glaçons|10 cl de jus de raisin|15 cl de jus d\'orange|schweppes|fruits des bois, baie', + 'preparation' => 'Versez dans le bol d\'un mixeur les framboises et le jus du citron. Mixez pour obtenir un fin coulis. Refroidissez un shaker avec 6 glaçons. Jetez l\'eau puis remettez 2 glaçons, le coulis de framboise filtré, le jus de raisin et le jus d\'orange. Ajoutez 10 secondes puis versez dans 4 verres hauts. Complétez avec le schweppes. Décorez de fruits des bois.', + 'index' => + array ( + 0 => 'Framboise', + 1 => 'Citron', + 2 => 'Glaçon', + 3 => 'Jus de raisins', + 4 => 'Jus d\'orange', + 5 => 'Schweppes', + 6 => 'Baie', + ), + ), + 66 => + array ( + 'titre' => 'Boisson rouge', + 'ingredients' => 'liqueur de litchi|liqueur de fraise|jus d\'orange', + 'preparation' => 'Mélanger dans un verre les proportions suivantes: 40% de liqueur de litchi 20% de liqueur de fraise 40% de jus d\'orange. Et vive l\'apéro!', + 'index' => + array ( + 0 => 'Liqueur de litchi', + 1 => 'Liqueur de fraises', + 2 => 'Jus d\'orange', + ), + ), + 67 => + array ( + 'titre' => 'Boisson sans alcool Cranberry-orange', + 'ingredients' => '25 cl de jus de cranberry|10 cl de jus d\'orange|150 g de framboises|2 rondelles de citron ou d\'orange|1 cuillère à soupe de jus de citron', + 'preparation' => 'Mélanger les deux jus. Ajouter les framboises et le jus de citron. Mixer le tout en purée. Servir frappé ou avec quelques glaçons. Décorer vos verres d\'une rondelle de citron ou d\'orange. A votre santé !', + 'index' => + array ( + 0 => 'Jus de canneberge', + 1 => 'Jus d\'orange', + 2 => 'Framboise', + 3 => 'Citron', + 4 => 'Jus de citron', + ), + ), + 68 => + array ( + 'titre' => 'Boisson sans alcool KidiCana', + 'ingredients' => '5 cl de jus de pomme pétillant kidibul|gingembre|1 cl de sirop de cassis|1 brin de citronnelle|1 pointe de couteau de gingembre en poudre|5 à 6 cuillères à soupe de glace pilée', + 'preparation' => 'Ciseler la citronnelle. Mettre tous les ingrédients dans un shaker. Ajouter la moitié de la glace pilée. Secouer et verser dans un verre garni du reste de la glace pilée. A votre santé !', + 'index' => + array ( + 0 => 'Jus de pommes', + 1 => 'Gingembre', + 2 => 'Sirop de cassis', + 3 => 'Citronnelle', + 4 => 'Gingembre', + 5 => 'Glace pilée', + ), + ), + 69 => + array ( + 'titre' => 'Boisson sans alcool Sweet Melon', + 'ingredients' => '1 melon vert ovale|2 citrons verts|1 litre de jus d\'oranges|1 litre de jus d\'ananas|1/2 litre d\'eau pétillante', + 'preparation' => 'Couper la chair du melon en dès. Presser les citrons verts. Verser tous les jus de fruits dans un saladier. Ajouter les dès de melon et laisser reposer au frais pendant 2 heures. Ajouter l\'eau pétillante juste avant de servir.', + 'index' => + array ( + 0 => 'Melon vert', + 1 => 'Citron vert', + 2 => 'Jus d\'orange', + 3 => 'Jus d\'ananas', + 4 => 'Eau gazeuse', + ), + ), + 70 => + array ( + 'titre' => 'Boisson sans alcool Tropical Sunshine', + 'ingredients' => '10 cl de jus d\'ananas|5 cl de jus d\'oranges|2 cl de sirop de cassis|1 cuillère à café de noix de coco râpée|glaçons', + 'preparation' => 'Verser les jus de fruits bien frais et le sirop de cassis dans un verre large. Ajouter quelques glaçons et parsemer de noix de coco râpée.', + 'index' => + array ( + 0 => 'Jus d\'ananas', + 1 => 'Jus d\'orange', + 2 => 'Sirop de cassis', + 3 => 'Noix de coco', + 4 => 'Glaçon', + ), + ), + 71 => + array ( + 'titre' => 'Boisson tropical délicieux', + 'ingredients' => '1/4 de l de jus d\'orange|1/4 de litre de jus de pamplemousse|1/4 de litre de jus d\'ananas|1 gros citron|20 cl de malibu|sirop de grenadine', + 'preparation' => 'Pour 1 verre : verser 5 cl de malibu, ajouter ensuite 1/3 de pamplemousse, 1/3 d\'orange et 1/3 d\'ananas ; ajouter ensuite un zeste de jus de citron et 1 trait de grenadine pour la déco.', + 'index' => + array ( + 0 => 'Jus d\'orange', + 1 => 'Jus de pamplemousse', + 2 => 'Jus d\'ananas', + 3 => 'Citron', + 4 => 'Malibu', + 5 => 'Sirop de grenadine', + ), + ), + 72 => + array ( + 'titre' => 'Boisson white russian', + 'ingredients' => '30 cl de vodka|20 cl de crème de café|30 cl de lait entier|quelques glaçons', + 'preparation' => ' Mettre dans un blender 20 cl de crème de café, 30 cl de vodka et 30 cl de lait. Rajouter des glaçons et mixer quelques secondes afin que le lait mousse. Déguster ce Boisson bien frais ! ', + 'index' => + array ( + 0 => 'Vodka', + 1 => 'Crème de café', + 2 => 'Lait entier', + 3 => 'Glaçon', + ), + ), + 73 => + array ( + 'titre' => 'Coconut kiss', + 'ingredients' => '3 cl de jus d\'ananas|4 cl de jus d\'oranges|2 cl de sirop de noix de coco|3 cl de crème fraîche|1 tranche d\'ananas|1 morceau d\'orange', + 'preparation' => 'Mélangez les ingrédients dans un shaker. Servir dans un verre décoré d\'un morceau d\'orange et un tranche d\'ananas', + 'index' => + array ( + 0 => 'Jus d\'ananas', + 1 => 'Jus d\'orange', + 2 => 'Sirop de noix de coco', + 3 => 'Crème fraiche', + 4 => 'Ananas', + 5 => 'Orange', + ), + ), + 74 => + array ( + 'titre' => 'Creole cream (Boisson)', + 'ingredients' => '1 tiers de rhum blanc|1 tiers de vermouth frais mais non glacé|jus de citron|grenadine', + 'preparation' => 'Verser le rhum blanc, le vermouth, le jus de citron, puis la grenadine.', + 'index' => + array ( + 0 => 'Rhum blanc', + 1 => 'Vermouth', + 2 => 'Jus de citron', + 3 => 'Grenadine', + ), + ), + 75 => + array ( + 'titre' => 'Cuba libre', + 'ingredients' => '6 cl de rhum blanc|1/2 citron vert|15 cl de coca-cola|glaçons', + 'preparation' => 'Extraire le jus du citron vert en le pressant. Ajouter les cubes de glace, puis le coca, et remuer', + 'index' => + array ( + 0 => 'Rhum blanc', + 1 => 'Citron vert', + 2 => 'Coca-cola', + 3 => 'Glaçon', + ), + ), + 76 => + array ( + 'titre' => 'Frosty lime', + 'ingredients' => '1 boule de sorbet citron vert|2 cl de jus de pamplemousse|2 cl de sirop à la menthe|menthe fraîche', + 'preparation' => 'Mixer les ingrédients et servir le mélange dans un verre à coupe décoré d\'une feuille de menthe.', + 'index' => + array ( + 0 => 'Sorbet citron vert', + 1 => 'Jus de pamplemousse', + 2 => 'Sirop à la menthe', + 3 => 'Menthe', + ), + ), + 77 => + array ( + 'titre' => 'Gin fizz facile', + 'ingredients' => '6 cl de gin|1/2 citron vert|1 cuillère à café de sirop de sucre de canne|eau gazeuse', + 'preparation' => 'Mettez tous les ingrédients dans un shaker puis agitez énergiquement jusqu\'à ce que les parois du shaker se couvrent de buée. Versez le contenu du shaker dans les deux verres puis allongez d\'eau gazeuse. Servez frais avec de la glace pilée, une paille et une rondelle de citron vert.', + 'index' => + array ( + 0 => 'Gin', + 1 => 'Citron vert', + 2 => 'Sirop de sucre de canne', + 3 => 'Eau gazeuse', + ), + ), + 78 => + array ( + 'titre' => 'Ginger cosmo', + 'ingredients' => '12 g de gingembre frais de préférence|3 cl de vodka|2 cl de triple sec|2,5 cl de jus de citrons verts|2 cl de jus de cranberry', + 'preparation' => 'Cette recette se prépare au shaker et avec un pilon. Peler le gingembre et le concasser grossièrement. Le piler dans le fond du shaker afin de faire ressortir un maximum de jus. Ajouter les autres ingrédients avec des glaçons, fermer le shaker puis shaker pendant au moins 10 secondes. Verser dans un verre à Boisson type martini en filtrant bien.', + 'index' => + array ( + 0 => 'Gingembre', + 1 => 'Vodka', + 2 => 'Triple sec', + 3 => 'Jus de citrons verts', + 4 => 'Jus de canneberge', + ), + ), + 79 => + array ( + 'titre' => 'Grand Marnier sour (Boisson)', + 'ingredients' => '3 cl de grand marnier cordon rouge|3 cl de jus de citron', + 'preparation' => ' Dans un shaker mettre le Grand Marnier et le jus de citron, frappez et servir dan un grand verre à Boisson ', + 'index' => + array ( + 0 => 'Grand marnier', + 1 => 'Jus de citron', + ), + ), + 80 => + array ( + 'titre' => 'Hulk ( Boisson )', + 'ingredients' => '7 cl de martini blanc|5 cl de get 27|6 cl de jus de pamplemousse', + 'preparation' => 'Mélanger tous les ingrédients précités dans une petite coupe à Boisson. Ajouter un glaçon ou deux et ... déguster !!', + 'index' => + array ( + 0 => 'Martini blanc', + 1 => 'Get 27', + 2 => 'Jus de pamplemousse', + ), + ), + 81 => + array ( + 'titre' => 'Le baiser de la Schtroumpfette', + 'ingredients' => '2cl de vodka|2cl de curaçao|5cl de limonade|5cl de jus de banane', + 'preparation' => 'Verser tous les ingrédients dans l\'ordre dans un verre à martini ou à Boisson et servir très très frais!', + 'index' => + array ( + 0 => 'Vodka', + 1 => 'Curaçao', + 2 => 'Limonade', + 3 => 'Jus de bananes', + ), + ), + 82 => + array ( + 'titre' => 'Le vandetta', + 'ingredients' => '15 cl de jus d\'ananas|2 cl de sirop d\'orgeat|2 cl de sirop de fraises|5 fraises', + 'preparation' => 'Lavez et équeutez les fraises. Mixer tous les ingrédients et servez dans un verre rapidement.', + 'index' => + array ( + 0 => 'Jus d\'ananas', + 1 => 'Sirop d\'orgeat', + 2 => 'Sirop de fraises', + 3 => 'Fraise', + ), + ), + 83 => + array ( + 'titre' => 'Margarita', + 'ingredients' => '5 cl de tequila|3 cl de triple sec|2 cl de jus de citrons verts|sel', + 'preparation' => 'Dans un shaker, frapper les ingrédients avec des glaçons puis verser dans un verre givré au citron et au sel fin.', + 'index' => + array ( + 0 => 'Tequila', + 1 => 'Triple sec', + 2 => 'Jus de citrons verts', + 3 => 'Sel', + ), + ), + 84 => + array ( + 'titre' => 'Margarita à la fraise', + 'ingredients' => 'glace pilée|2 à 3 citrons verts|1 barquette de fraise fraîche|20 cl de tequila|12 cl de cointreau ou triple x|2 cuillères à soupe de sucre', + 'preparation' => ' Laver et équeuter les fraises. Mettre les glacons dans un robot et mixer avec les fraises. Presser les citrons verts. Mettre la téquila, le cointreau et le jus de citron dans un doseur avec les 2 cuillères à soupe de sucre. Mélanger puis verser dans le mixer avec la glace pilée et les fraises. Décorer les verres de sucre (mouiller les verres dans du jus de citron puis les tremper dans du sucre). Répartir le Boisson dans les verres et santé ! ', + 'index' => + array ( + 0 => 'Glace pilée', + 1 => 'Citron vert', + 2 => 'Fraise', + 3 => 'Tequila', + 4 => 'Cointreau', + 5 => 'Sucre', + ), + ), + 85 => + array ( + 'titre' => 'Mojito', + 'ingredients' => '6 cl de rhum cubain|1/2 citron vert|8 feuilles de menthe|eau gazeuse|2 cuillères à café de sucre', + 'preparation' => 'Mettre dans un verre, les feuilles de menthe le sucre et le citron vert coupé en cubes Piler. Ajouter le rhum, de la glce pilé ou des glaçons, l\'eau gazeuse et mélanger.', + 'index' => + array ( + 0 => 'Rhum', + 1 => 'Citron vert', + 2 => 'Menthe', + 3 => 'Eau gazeuse', + 4 => 'Sucre', + ), + ), + 86 => + array ( + 'titre' => 'Mojito au Basilic', + 'ingredients' => '5 cl de rhum blanc|eau gazeuse|5 cl de sirop de sucre de canne|1/2 cuillère de sucre roux|1/2 citron vert|feuilles de basilic|glace pilée ou glaçons', + 'preparation' => 'Couper une rondelle de Citron Vert et la déposer au fond du verre à Boisson.Mettre des glaçons dans un torchon propre, et les piler avec un marteau.Couper les feuilles de basilic en petits morceaux et les mélanger à la glace pilée.Remplir le verre de glace pilée/basilic aux 2 tiers.Ajouter les 5 cl de rhum, 5 cl de sucre de canne liquide et le jus du reste de citron vert, puis compléter avec l\'eau gazeuse.Saupoudrer de sucre roux.', + 'index' => + array ( + 0 => 'Rhum blanc', + 1 => 'Eau gazeuse', + 2 => 'Sirop de sucre de canne', + 3 => 'Sucre roux', + 4 => 'Citron vert', + 5 => 'Basilic', + 6 => 'Glaçon', + ), + ), + 87 => + array ( + 'titre' => 'Mojito cubain', + 'ingredients' => '3 cuillères à café de sucre de canne en poudre|1/2 citron vert|1 branche de menthe bien fournie|eau gazeuse|rhum|glaçons', + 'preparation' => 'Dans un verre de taille moyenne (contenance 40 cl environ), mettez 3 cuillères à café de sucre de canne. Ajoutez-y le jus d\'1/2 citron vert. Coupez en 3 ou 4 votre branche de menthe et mettez-la dans le verre (le fait de la couper permet à la saveur de la menthe de mieux se diffuser). Ajoutez un peu d\'eau gazeuse (environ 3 cl) puis avec une cuillère à café, remuez bien le tout et écrasez la menthe (insistez sur les branches plus que sur les feuilles, sinon il y aura pleins de petits bouts de menthe assez désagréables au moment de déguster votre Boisson!). Ajoutez 5 glaçons environ. Ensuite versez 6 cl de rhum (en versant à débit moyen). Pour la dose plutôt chargée, comptez jusqu\'à 5; pour la dose légère jusqu\'à 4. Enfin, complétez avec de l\'eau gazeuse.', + 'index' => + array ( + 0 => 'Sucre de canne en poudre', + 1 => 'Citron vert', + 2 => 'Menthe', + 3 => 'Eau gazeuse', + 4 => 'Rhum', + 5 => 'Glaçon', + ), + ), + 88 => + array ( + 'titre' => 'Negroni Boisson', + 'ingredients' => '3 volumes de campari|3 volumes de martini rouge|3 volumes de gin|3 gouttes d\'angostura|1 soda|glace pilée|1 rondelle d\'orange pour décorer', + 'preparation' => 'Mélanger les ingrédients dans un verre à whisky (tumbler) et servir.', + 'index' => + array ( + 0 => 'Campari', + 1 => 'Martini rouge', + 2 => 'Gin', + 3 => 'Angostura', + 4 => 'Soda', + 5 => 'Glace pilée', + 6 => 'Orange', + ), + ), + 89 => + array ( + 'titre' => 'Pink 3x6 (Boisson sans alcool)', + 'ingredients' => '3 citrons verts|3 citrons jaunes|3 verres de jus de framboises|3 verres de jus de pamplemousses roses|3 cuillères à soupe de sirop de roses|3 verres de limonade|glaçons', + 'preparation' => 'Pressez les trois citrons verts et les trois citrons jaunes, mettez le jus dans un saladier. Ajoutez le jus de framboise et de pamplemousse rose. Versez trois cuillères à soupe de sirop de rose. Mélangez et gardez la préparation au frais. Juste avant de servir, versez la limonade bien fraîche et ajoutez les glaçons.', + 'index' => + array ( + 0 => 'Citron vert', + 1 => 'Citron', + 2 => 'Jus de framboises', + 3 => 'Jus de pamplemousse', + 4 => 'Sirop de roses', + 5 => 'Limonade', + 6 => 'Glaçon', + ), + ), + 90 => + array ( + 'titre' => 'Piña Colada', + 'ingredients' => '4 cl de rhum blanc|2 cl de rhum ambré|12 cl de jus d\'ananas|4 cl de lait de coco', + 'preparation' => 'Mélanger tous les ingrédients directement dans un verre, ou dans un blender pour les mixer. C\'est prêt !', + 'index' => + array ( + 0 => 'Rhum blanc', + 1 => 'Rhum ambré', + 2 => 'Jus d\'ananas', + 3 => 'Lait de coco', + ), + ), + 91 => + array ( + 'titre' => 'Piña Colada (Boisson)', + 'ingredients' => '125 g de crème liquide|150 g de crème de noix de coco|20 cl de jus d\'ananas non sucré|20 cl de rhum blanc|glaçons', + 'preparation' => 'Mettre tous les ingrédients, sauf les glaçons, dans un mixer et faire tourner à très grande vitesse pendant 30 sec environ. Mettre les glaçons dans les verres et verser par-dessus la crème obtenue.', + 'index' => + array ( + 0 => 'Crème liquide', + 1 => 'Crème de noix de coco', + 2 => 'Jus d\'ananas', + 3 => 'Rhum blanc', + 4 => 'Glaçon', + ), + ), + 92 => + array ( + 'titre' => 'Porto Flip', + 'ingredients' => '4 cl de porto|2 cl de cognac|1 oeuf|cannelle|sirop de canne|noix de muscade|glaçons', + 'preparation' => 'Dans un shaker, mettre les alcools et le sirop de canne. Ensuite ajouter les épices. Melanger avec une longue cuillère. Rajouter un oeuf et les glacons. Fermer le shaker et mixer. Servir dans un verre a Boisson, saupodrer d\'un peu de cannelle. On peut le faire uniquement avec du porto aussi.', + 'index' => + array ( + 0 => 'Porto', + 1 => 'Cognac', + 2 => 'Oeuf', + 3 => 'Cannelle', + 4 => 'Sirop de sucre de canne', + 5 => 'Noix de muscade', + 6 => 'Glaçon', + ), + ), + 93 => + array ( + 'titre' => 'Punch-sangria de pastèque', + 'ingredients' => '1 pastèque de 2 kg|1 orange|2 pêches|6 fraises|10 feuilles de menthe|1 l de vin blanc au choix|1/2 cuillère à café de gingembre frais ou en poudre|curaçao ou rhum', + 'preparation' => 'Laver la pastèque. Découper un "couvercle", vider la pastèque avec une cuillère {si possible créer des petites boules de la grosseur de billes} Laisser 1/2 cm de chair pour ne pas crever la peau. Refroidir la pastèque vide 1 bonne heure. Réduire la moitié de la pulpe retirée en jus, y ajouter : 1 litre de vin blanc les feuilles de menthe + l orange avec sa peau et les pêches en fines tranches, laisser macérer 3 heures au réfrigérateur dans un récipient fermé. Au moment de servir ce Boisson, verser dans la pastèque avec quelques feuilles de menthe et des petites billes de pastèque.', + 'index' => + array ( + 0 => 'Pastèque', + 1 => 'Orange', + 2 => 'Pêche', + 3 => 'Fraise', + 4 => 'Menthe', + 5 => 'Vin blanc', + 6 => 'Gingembre', + 7 => 'Rhum', + ), + ), + 94 => + array ( + 'titre' => 'Raifortissimo', + 'ingredients' => '5 cl de jus de pommes|3 cl de jus de citrons verts|10 g de raifort|1 kiwi|3 glaçons', + 'preparation' => 'Mixez tous les ingrédients et versez dans un verre.', + 'index' => + array ( + 0 => 'Jus de pommes', + 1 => 'Jus de citrons verts', + 2 => 'Raifort', + 3 => 'Kiwi', + 4 => 'Glaçon', + ), + ), + 95 => + array ( + 'titre' => 'Rainbow', + 'ingredients' => '10 cl de jus d\'orange|3 cl de vodka|3 cl de sirop de grenadine|2 cl de curaçao bleu', + 'preparation' => 'Recette pour 10 verres. versez la grenadine dans le shaker, remplissez le shaker de glaçons aux 2/3, versez la vodka, versez le jus d\'orange. Finissez de remplir le shaker de glaçons. Versez délicatement le curaçao, de mélangez pas, versez en filtrant dans tous les verres alignés sans vous arrêter. Servir dans des verres de type "shooter". La couleur du contenu de chaque verre sera différente en créant un très bel effet visuel dégradé de type arc-en-ciel d\'un verre à l\'autre. Appelé aussi Rainbow Shot, ou Double Rainbow.', + 'index' => + array ( + 0 => 'Jus d\'orange', + 1 => 'Vodka', + 2 => 'Sirop de grenadine', + 3 => 'Curaçao bleu', + ), + ), + 96 => + array ( + 'titre' => 'Red Boisson', + 'ingredients' => '2 cl de sirop de fraise|10 cl de jus de pêche|4 cl de vodka|2 cl de liqueur de poire|glaçons', + 'preparation' => 'Verser tous les ingrédients, hormis le sirop de fraise, dans un shaker avec 3 cubes de glace. Secouer pendant 20 secondes. Verser dans le verre, et ajouter le sirop de fraise.', + 'index' => + array ( + 0 => 'Sirop de fraises', + 1 => 'Jus de pêches', + 2 => 'Vodka', + 3 => 'Liqueur de poire', + 4 => 'Glaçon', + ), + ), + 97 => + array ( + 'titre' => 'Rhum arrangé à la pomme', + 'ingredients' => '25 cl de rhum|1 l de jus de pommes|10 cl de sucre de canne|cannelle', + 'preparation' => 'Dans une bouteille, mélanger les 25 cl de rhum ambré avec le litre de jus de Pomme et compléter par une rasade de Sucre de canne. Aromatisé de cannelle ou autre suivant vos goûts, puis laisser reposer au moins une journée pour que la macération soit complète.', + 'index' => + array ( + 0 => 'Rhum', + 1 => 'Jus de pommes', + 2 => 'Sucre de canne en poudre', + 3 => 'Cannelle', + ), + ), + 98 => + array ( + 'titre' => 'Rince-gouttes (Boisson)', + 'ingredients' => '1,5 l de cidre|25 cl de cognac|25 cl de crème de cassis|glaçons', + 'preparation' => 'Dans un grand saladier, commencer par mettre la crème de cassis, ensuite ajoutez le cognac et finalement la bouteille de cidre. Ajoutez en dernier lieu les glaçons pour que l\'apéro reste frais.', + 'index' => + array ( + 0 => 'Cidre de pommes', + 1 => 'Cognac', + 2 => 'Crème de cassis', + 3 => 'Glaçon', + ), + ), + 99 => + array ( + 'titre' => 'Sangria sans alcool', + 'ingredients' => '8 cl de sirop de sangria|100 cl de jus de raisins|20 cl de jus d\'oranges|10 cl de jus de citrons|fruits de saisons', + 'preparation' => 'Mélangez le sirop et les jus dans un grand récipient. Ajoutez ensuite les fruits de saisons coupés en petits morceaux. Mettez le tout au réfrigérateur pendant 4h avant de servir.', + 'index' => + array ( + 0 => 'Sirop de sangria', + 1 => 'Jus de raisins', + 2 => 'Jus d\'orange', + 3 => 'Jus de citron', + 4 => 'Fruit', + ), + ), + 100 => + array ( + 'titre' => 'Screwdriver', + 'ingredients' => '4 cl de vodka|12 cl de jus d\'orange', + 'preparation' => 'Dans un verre, mélanger la vodka et le jus d\'orange.', + 'index' => + array ( + 0 => 'Vodka', + 1 => 'Jus d\'orange', + ), + ), + 101 => + array ( + 'titre' => 'Shoot up', + 'ingredients' => '1 cl de mangalore|eau gazeuse|3 cl de sirop d\'abricot', + 'preparation' => 'Versez le mangalore et le sirop d\'abricot dans un verre et finissez par l\'eau gazeuse bien fraiche.', + 'index' => + array ( + 0 => 'Mangalore', + 1 => 'Eau gazeuse', + 2 => 'Sirop d\'abricot', + ), + ), + 102 => + array ( + 'titre' => 'Shot piquant', + 'ingredients' => 'sirop de grenadine|tabasco|vodka', + 'preparation' => ' Dans un petit verre (environ 4 cm de diamètre et 5 cm de hauteur), versez 3 mm de sirop de grenadine. Ajoutez 4-6 gouttes de tabasco, puis versez très lentement 2-3 cm de vodka (froide, de préférence), pour ne pas mélanger les ingrédients. Ce Boisson se boit "cul-sec". On sent relativement peu l\'alcool au départ, car la grenadine est au fond du verre. Après quelques secondes, on ressent le piquant du tabasco. ', + 'index' => + array ( + 0 => 'Sirop de grenadine', + 1 => 'Sauce tabasco', + 2 => 'Vodka', + ), + ), + 103 => + array ( + 'titre' => 'Soupe au Champagne (Boisson)', + 'ingredients' => '8 cl de cointreau|16 cl de sirop de sucre de canne|2 citrons verts pressés|1 bac de glaçons|75 cl de champagne', + 'preparation' => 'Verser dans un récipient le Cointreau, le sucre de canne et le jus de citron. Faire macérer pendant une nuit. Ajouter le Champagne au moment de servir avec les glaçons.', + 'index' => + array ( + 0 => 'Cointreau', + 1 => 'Sirop de sucre de canne', + 2 => 'Citron vert', + 3 => 'Glaçon', + 4 => 'Champagne', + ), + ), + 104 => + array ( + 'titre' => 'Tequila sunrise', + 'ingredients' => '6 cl de tequila|12 cl de jus d\'orange|2 cl de sirop de grenadine', + 'preparation' => 'Verser la tequila sur des glaçons dans le verre. Compléter avec le jus d\'orange et remuer. Verser doucement le sirop de grenadine dans le verre pour qu\'il tombe au fond.', + 'index' => + array ( + 0 => 'Tequila', + 1 => 'Jus d\'orange', + 2 => 'Sirop de grenadine', + ), + ), + 105 => + array ( + 'titre' => 'Ti\'punch', + 'ingredients' => '6 cl de rhum blanc|2 cl de sirop de sucre de canne|citron vert|glace pilée', + 'preparation' => 'Couper les extrémités du citron vert et couper le en demi-rondelles. Mettre 4 demi-rondelles dans un verre et écraser avec un pilon ou une cuillère. Ajouter le rhum et le sirop de sucre de canne. Ajouter de la glace pilée et mélanger.', + 'index' => + array ( + 0 => 'Rhum blanc', + 1 => 'Sirop de sucre de canne', + 2 => 'Citron vert', + 3 => 'Glace pilée', + ), + ), + 106 => + array ( + 'titre' => 'Tutti Boisson', + 'ingredients' => '2 cl de sirop de fraise|2 cl de sirop de pêche|4 cl de vodka|4 cl de liqueur de pomme|5 glaçons', + 'preparation' => 'Mélanger au shaker puis ajouter les glaçons. Pour un petit effet, mettre le sirop de fraise après le mélange.', + 'index' => + array ( + 0 => 'Fraise', + 1 => 'Sirop de pêche', + 2 => 'Vodka', + 3 => 'Liqueur de pommes', + 4 => 'Glaçon', + ), + ), + 107 => + array ( + 'titre' => 'Virevoltage', + 'ingredients' => '1 cl de malibu|1 cl de liqueur de litchi|jus d\'ananas|jus de pomme|sirop de fraise', + 'preparation' => 'Dans un verre à Boisson rempli de glaçons, mettre le Malibu et le Soho. Remplir la moitié du verre de jus d\'ananas et l\'autre moitié de jus de pomme, ajouter une goutte de sirop de fraise ou grenadine. Servir très frais. Bon cokctail à tous!', + 'index' => + array ( + 0 => 'Malibu', + 1 => 'Liqueur de litchi', + 2 => 'Jus d\'ananas', + 3 => 'Jus de pommes', + 4 => 'Sirop de fraises', + ), + ), +); + $Hierarchie=array ( + 'Épice' => + array ( + 'sous-categorie' => + array ( + 6 => 'Épice commune', + 7 => 'Épice européenne', + 16 => 'Vanille', + ), + 'super-categorie' => + array ( + 0 => 'Assaisonnement', + ), + ), + 'Boisson gazeuse non alcoolisée' => + array ( + 'sous-categorie' => + array ( + 1 => 'Coca-cola', + 3 => 'Limonade', + 6 => 'Schweppes', + 7 => 'Soda', + ), + 'super-categorie' => + array ( + 0 => 'Boisson gazeuse', + ), + ), + 'Fruit à noyau' => + array ( + 'sous-categorie' => + array ( + 2 => 'Cerise', + 5 => 'Pêche', + ), + 'super-categorie' => + array ( + 0 => 'Fruit', + ), + ), + 'Eau de vie de fruits' => + array ( + 'sous-categorie' => + array ( + 2 => 'Alcool de prune', + 4 => 'Brandy de pommes', + 5 => 'Cachaça', + 7 => 'Kirsch', + ), + 'super-categorie' => + array ( + 0 => 'Brandy', + ), + ), + 'Fruit sec' => + array ( + 'sous-categorie' => + array ( + 31 => 'Pistache', + ), + 'super-categorie' => + array ( + 0 => 'Fruit', + ), + ), + 'Liqueur anisée' => + array ( + 'sous-categorie' => + array ( + 4 => 'Pastis', + ), + 'super-categorie' => + array ( + 0 => 'Liqueur', + ), + ), + 'Fruit' => + array ( + 'sous-categorie' => + array ( + 0 => 'Agrume', + 2 => 'Baie', + 3 => 'Cannelle', + 4 => 'Fruit à noyau', + 5 => 'Fruit à pepin', + 7 => 'Fruit sec', + 8 => 'Fruit tropical commun', + 9 => 'Fruit tropical exotique', + 10 => 'Melon', + ), + 'super-categorie' => + array ( + 0 => 'Aliment', + ), + ), + 'Agrume' => + array ( + 'super-categorie' => + array ( + 0 => 'Fruit', + ), + 'sous-categorie' => + array ( + 1 => 'Citron', + 2 => 'Citron vert', + 3 => 'Kumquat', + 4 => 'Mandarine', + 5 => 'Orange', + 6 => 'Pamplemousse', + 7 => 'Partie d\'agrumes', + ), + ), + 'Assaisonnement' => + array ( + 'sous-categorie' => + array ( + 6 => 'Épice', + 9 => 'Condiment', + 15 => 'Herbe', + 16 => 'Liqueur', + 21 => 'Rhizome', + 22 => 'Sel', + 23 => 'Sirop', + 24 => 'Sucre', + ), + 'super-categorie' => + array ( + 0 => 'Aliment', + ), + ), + 'Légume' => + array ( + 'sous-categorie' => + array ( + 5 => 'Jus de légumes', + 6 => 'Légume-fruit', + 10 => 'Légume tige', + 15 => 'Rhizome', + ), + 'super-categorie' => + array ( + 0 => 'Aliment', + ), + ), + 'Condiment Européen' => + array ( + 'sous-categorie' => + array ( + 10 => 'Raifort', + 17 => 'Sauce worcestershire', + ), + 'super-categorie' => + array ( + 0 => 'Condiment', + ), + ), + 'Lait' => + array ( + 'sous-categorie' => + array ( + 9 => 'Lait de coco', + 11 => 'Lait de soja', + 12 => 'Lait entier', + ), + 'super-categorie' => + array ( + 0 => 'Produit laitier', + 1 => 'Liquide', + ), + ), + 'Liquide' => + array ( + 'sous-categorie' => + array ( + 0 => 'Alcool', + 1 => 'Boisson gazeuse', + 2 => 'Bouillons', + 3 => 'Café', + 4 => 'Eau', + 5 => 'Jus', + 6 => 'Lait', + 8 => 'Sirop', + ), + 'super-categorie' => + array ( + 0 => 'Aliment', + ), + ), + 'Alcool' => + array ( + 'super-categorie' => + array ( + 0 => 'Liquide', + ), + 'sous-categorie' => + array ( + 0 => 'Amer', + 1 => 'Boisson gazeuse alcoolisée', + 2 => 'Jus d\'ananas', + 3 => 'Liqueur', + 4 => 'Vin', + ), + ), + 'Spiritueux' => + array ( + 'sous-categorie' => + array ( + 0 => 'Alcool de grain', + 2 => 'Brandy', + 3 => 'Cidre de pommes', + 4 => 'Rhum', + 5 => 'Tequila', + 6 => 'Vodka', + 7 => 'Whisky', + ), + 'super-categorie' => + array ( + 0 => 'Liqueur', + ), + ), + 'Alcool de grain' => + array ( + 'super-categorie' => + array ( + 0 => 'Spiritueux', + ), + 'sous-categorie' => + array ( + 1 => 'Gin', + ), + ), + 'Alcool de prune' => + array ( + 'super-categorie' => + array ( + 0 => 'Eau de vie de fruits', + ), + ), + 'Vin' => + array ( + 'sous-categorie' => + array ( + 1 => 'Saké', + 3 => 'Vin blanc', + 5 => 'Vin de dessert', + 6 => 'Vin effervescent', + 7 => 'Vin rosé', + ), + 'super-categorie' => + array ( + 0 => 'Alcool', + ), + ), + 'Noix et graine oléagineuse' => + array ( + 'sous-categorie' => + array ( + 16 => 'Pistache', + ), + 'super-categorie' => + array ( + 0 => 'Aliment', + ), + ), + 'Amer' => + array ( + 'sous-categorie' => + array ( + 1 => 'Angostura', + ), + 'super-categorie' => + array ( + 0 => 'Alcool', + ), + ), + 'Oeuf' => + array ( + 'super-categorie' => + array ( + 0 => 'Aliment', + ), + ), + 'Fruit tropical commun' => + array ( + 'sous-categorie' => + array ( + 0 => 'Ananas', + 1 => 'Banane', + 4 => 'Mangue', + 5 => 'Noix de coco', + ), + 'super-categorie' => + array ( + 0 => 'Fruit', + ), + ), + 'Ananas' => + array ( + 'super-categorie' => + array ( + 0 => 'Fruit tropical commun', + ), + ), + 'Herbe commune' => + array ( + 'sous-categorie' => + array ( + 2 => 'Menthe', + ), + 'super-categorie' => + array ( + 0 => 'Herbe', + ), + ), + 'Angostura' => + array ( + 'super-categorie' => + array ( + 0 => 'Amer', + ), + ), + 'Liqueur amère' => + array ( + 'sous-categorie' => + array ( + 0 => 'Aperol', + 1 => 'Campari', + ), + 'super-categorie' => + array ( + 0 => 'Liqueur', + ), + ), + 'Aperol' => + array ( + 'super-categorie' => + array ( + 0 => 'Liqueur amère', + ), + ), + 'Brandy' => + array ( + 'sous-categorie' => + array ( + 1 => 'Cognac', + 2 => 'Eau de vie de fruits', + ), + 'super-categorie' => + array ( + 0 => 'Spiritueux', + ), + ), + 'Herbe' => + array ( + 'sous-categorie' => + array ( + 5 => 'Herbe Africaine', + 7 => 'Herbe Asiatique', + 8 => 'Herbe commune', + ), + 'super-categorie' => + array ( + 0 => 'Assaisonnement', + ), + ), + 'Légume tige' => + array ( + 'sous-categorie' => + array ( + 1 => 'Céleri', + ), + 'super-categorie' => + array ( + 0 => 'Légume', + ), + ), + 'Condiment' => + array ( + 'sous-categorie' => + array ( + 2 => 'Condiment Américain', + 4 => 'Condiment Européen', + ), + 'super-categorie' => + array ( + 0 => 'Assaisonnement', + ), + ), + 'Vin effervescent' => + array ( + 'sous-categorie' => + array ( + 1 => 'Cava', + 2 => 'Champagne', + 3 => 'Crémant', + ), + 'super-categorie' => + array ( + 0 => 'Vin', + 1 => 'Boisson gazeuse alcoolisée', + ), + ), + 'Aliments divers' => + array ( + 'sous-categorie' => + array ( + 7 => 'Glaçon', + 8 => 'Glace pilée', + 13 => 'Ingrédient glacé', + ), + 'super-categorie' => + array ( + 0 => 'Aliment', + ), + ), + 'Légume-fruit' => + array ( + 'sous-categorie' => + array ( + 2 => 'Concombre', + ), + 'super-categorie' => + array ( + 0 => 'Légume', + ), + ), + 'Bouillon' => + array ( + 'sous-categorie' => + array ( + 3 => 'Jus de tomates', + ), + 'super-categorie' => + array ( + 0 => 'Bouillons', + ), + ), + 'Liqueur' => + array ( + 'sous-categorie' => + array ( + 0 => 'Autre liqueur', + 1 => 'Crème de liqueur', + 2 => 'Liqueur amère', + 3 => 'Liqueur anisée', + 4 => 'Liqueur à base de plantes', + 6 => 'Liqueur de fruit', + 9 => 'Spiritueux', + ), + 'super-categorie' => + array ( + 0 => 'Assaisonnement', + 1 => 'Alcool', + ), + ), + 'Autre liqueur' => + array ( + 'super-categorie' => + array ( + 0 => 'Liqueur', + ), + 'sous-categorie' => + array ( + 2 => 'Get 27', + 4 => 'Liqueur de café', + 5 => 'Malibu', + ), + ), + 'Sirop' => + array ( + 'sous-categorie' => + array ( + 0 => 'Autre sirop', + 6 => 'Sirop aux fruits', + 7 => 'Sirop à la menthe', + 9 => 'Sirop d\'orgeat', + 14 => 'Sirop de sangria', + 15 => 'Sirop de sucre de canne', + ), + 'super-categorie' => + array ( + 0 => 'Assaisonnement', + 1 => 'Liquide', + ), + ), + 'Autre sirop' => + array ( + 'super-categorie' => + array ( + 0 => 'Sirop', + ), + 'sous-categorie' => + array ( + 1 => 'Sirop de gratte cul', + 2 => 'Sirop de roses', + ), + ), + 'Épice commune' => + array ( + 'super-categorie' => + array ( + 0 => 'Épice', + ), + 'sous-categorie' => + array ( + 0 => 'Cannelle', + 6 => 'Muscade', + 7 => 'Poivre', + ), + ), + 'Épice européenne' => + array ( + 'super-categorie' => + array ( + 0 => 'Épice', + ), + 'sous-categorie' => + array ( + 0 => 'Gingembre', + ), + ), + 'Partie d\'orange' => + array ( + 'sous-categorie' => + array ( + 1 => 'Jus d\'orange', + ), + 'super-categorie' => + array ( + 0 => 'Partie d\'agrumes', + ), + ), + 'Partie de citron' => + array ( + 'sous-categorie' => + array ( + 2 => 'Jus de citron', + 5 => 'Tranche de citron', + 6 => 'Zeste de citron', + ), + 'super-categorie' => + array ( + 0 => 'Citron', + 1 => 'Partie d\'agrumes', + ), + ), + 'Rhum blanc' => + array ( + 'super-categorie' => + array ( + 0 => 'Rhum', + ), + ), + 'Baie' => + array ( + 'super-categorie' => + array ( + 0 => 'Fruit', + ), + 'sous-categorie' => + array ( + 2 => 'Cassis', + 3 => 'Fraise', + 4 => 'Framboise', + 7 => 'Kiwi', + ), + ), + 'Banane' => + array ( + 'super-categorie' => + array ( + 0 => 'Fruit tropical commun', + ), + ), + 'Vin de dessert' => + array ( + 'sous-categorie' => + array ( + 5 => 'Vin muté', + ), + 'super-categorie' => + array ( + 0 => 'Vin', + ), + ), + 'Bouillons' => + array ( + 'sous-categorie' => + array ( + 1 => 'Bouillon', + ), + 'super-categorie' => + array ( + 0 => 'Liquide', + ), + ), + 'Herbe Asiatique' => + array ( + 'sous-categorie' => + array ( + 0 => 'Basilic', + 2 => 'Citronnelle', + 3 => 'Coriandre', + ), + 'super-categorie' => + array ( + 0 => 'Herbe', + ), + ), + 'Basilic' => + array ( + 'super-categorie' => + array ( + 0 => 'Herbe Asiatique', + ), + ), + 'Cannelle' => + array ( + 'super-categorie' => + array ( + 0 => 'Fruit', + 1 => 'Épice commune', + ), + ), + 'Liqueur à base de plantes' => + array ( + 'sous-categorie' => + array ( + 0 => 'Bénédictine', + 2 => 'Mangalore', + ), + 'super-categorie' => + array ( + 0 => 'Liqueur', + ), + ), + 'Bénédictine' => + array ( + 'super-categorie' => + array ( + 0 => 'Liqueur à base de plantes', + ), + ), + 'Boisson gazeuse alcoolisée' => + array ( + 'sous-categorie' => + array ( + 0 => 'Bière', + 1 => 'Cidre de pommes', + 2 => 'Vin effervescent', + ), + 'super-categorie' => + array ( + 0 => 'Alcool', + 1 => 'Boisson gazeuse', + ), + ), + 'Bière' => + array ( + 'super-categorie' => + array ( + 0 => 'Boisson gazeuse alcoolisée', + ), + 'sous-categorie' => + array ( + 3 => 'Bière de fermentation haute', + ), + ), + 'Bière de fermentation haute' => + array ( + 'super-categorie' => + array ( + 0 => 'Bière', + ), + 'sous-categorie' => + array ( + 1 => 'Stout (bière)', + ), + ), + 'Whisky' => + array ( + 'super-categorie' => + array ( + 0 => 'Spiritueux', + ), + ), + 'Boisson gazeuse' => + array ( + 'super-categorie' => + array ( + 0 => 'Liquide', + ), + 'sous-categorie' => + array ( + 0 => 'Boisson gazeuse alcoolisée', + 1 => 'Boisson gazeuse non alcoolisée', + ), + ), + 'Vin blanc' => + array ( + 'sous-categorie' => + array ( + 7 => 'Prosecco', + 10 => 'Vin blanc sec', + ), + 'super-categorie' => + array ( + 0 => 'Vin', + ), + ), + 'Céleri' => + array ( + 'sous-categorie' => + array ( + 1 => 'Sel de céleri', + ), + 'super-categorie' => + array ( + 0 => 'Légume tige', + ), + ), + 'Brandy de pommes' => + array ( + 'super-categorie' => + array ( + 0 => 'Eau de vie de fruits', + ), + 'sous-categorie' => + array ( + 0 => 'Calvados', + ), + ), + 'Cachaça' => + array ( + 'super-categorie' => + array ( + 0 => 'Eau de vie de fruits', + ), + ), + 'Café' => + array ( + 'super-categorie' => + array ( + 0 => 'Liquide', + ), + ), + 'Calvados' => + array ( + 'super-categorie' => + array ( + 0 => 'Brandy de pommes', + ), + ), + 'Campari' => + array ( + 'super-categorie' => + array ( + 0 => 'Liqueur amère', + ), + ), + 'Cassis' => + array ( + 'super-categorie' => + array ( + 0 => 'Baie', + ), + ), + 'Sucre roux' => + array ( + 'sous-categorie' => + array ( + 0 => 'Cassonade', + ), + 'super-categorie' => + array ( + 0 => 'Sucre', + ), + ), + 'Cassonade' => + array ( + 'super-categorie' => + array ( + 0 => 'Sucre roux', + ), + ), + 'Cava' => + array ( + 'super-categorie' => + array ( + 0 => 'Vin effervescent', + ), + ), + 'Cerise' => + array ( + 'super-categorie' => + array ( + 0 => 'Fruit à noyau', + ), + 'sous-categorie' => + array ( + 2 => 'Cerise griotte', + ), + ), + 'Cerise griotte' => + array ( + 'super-categorie' => + array ( + 0 => 'Cerise', + ), + ), + 'Champagne' => + array ( + 'super-categorie' => + array ( + 0 => 'Vin effervescent', + ), + ), + 'Cidre de pommes' => + array ( + 'sous-categorie' => + array ( + 0 => 'Cidre brut', + ), + 'super-categorie' => + array ( + 0 => 'Spiritueux', + 1 => 'Boisson gazeuse alcoolisée', + ), + ), + 'Cidre brut' => + array ( + 'super-categorie' => + array ( + 0 => 'Cidre de pommes', + ), + ), + 'Citron vert' => + array ( + 'sous-categorie' => + array ( + 1 => 'Partie de citron vert', + ), + 'super-categorie' => + array ( + 0 => 'Agrume', + ), + ), + 'Citron' => + array ( + 'super-categorie' => + array ( + 0 => 'Agrume', + ), + 'sous-categorie' => + array ( + 0 => 'Partie de citron', + ), + ), + 'Citronnelle' => + array ( + 'super-categorie' => + array ( + 0 => 'Herbe Asiatique', + ), + ), + 'Mandarine' => + array ( + 'sous-categorie' => + array ( + 0 => 'Clémentine', + ), + 'super-categorie' => + array ( + 0 => 'Agrume', + ), + ), + 'Clémentine' => + array ( + 'super-categorie' => + array ( + 0 => 'Mandarine', + ), + ), + 'Coca-cola' => + array ( + 'super-categorie' => + array ( + 0 => 'Boisson gazeuse non alcoolisée', + ), + ), + 'Cognac' => + array ( + 'super-categorie' => + array ( + 0 => 'Brandy', + ), + ), + 'Triple sec' => + array ( + 'sous-categorie' => + array ( + 0 => 'Cointreau', + ), + 'super-categorie' => + array ( + 0 => 'Liqueur d\'orange', + ), + ), + 'Cointreau' => + array ( + 'super-categorie' => + array ( + 0 => 'Triple sec', + ), + ), + 'Concombre' => + array ( + 'super-categorie' => + array ( + 0 => 'Légume-fruit', + ), + ), + 'Condiment Américain' => + array ( + 'super-categorie' => + array ( + 0 => 'Condiment', + ), + 'sous-categorie' => + array ( + 4 => 'Sauce au piment rouge', + ), + ), + 'Coriandre' => + array ( + 'super-categorie' => + array ( + 0 => 'Herbe Asiatique', + 1 => 'Herbe Africaine', + ), + ), + 'Herbe Africaine' => + array ( + 'sous-categorie' => + array ( + 0 => 'Coriandre', + ), + 'super-categorie' => + array ( + 0 => 'Herbe', + ), + ), + 'Produit laitier' => + array ( + 'sous-categorie' => + array ( + 0 => 'Crème', + 3 => 'Lait', + 7 => 'Yaourt', + ), + 'super-categorie' => + array ( + 0 => 'Aliment', + ), + ), + 'Crème' => + array ( + 'super-categorie' => + array ( + 0 => 'Produit laitier', + ), + 'sous-categorie' => + array ( + 4 => 'Crème fraiche', + ), + ), + 'Crème de liqueur' => + array ( + 'sous-categorie' => + array ( + 3 => 'Crème de café', + 4 => 'Crème de cassis', + 13 => 'Crème de noix de coco', + ), + 'super-categorie' => + array ( + 0 => 'Liqueur', + ), + ), + 'Crème de café' => + array ( + 'super-categorie' => + array ( + 0 => 'Crème de liqueur', + ), + ), + 'Crème de cassis' => + array ( + 'super-categorie' => + array ( + 0 => 'Crème de liqueur', + 1 => 'Sirop aux fruits', + ), + ), + 'Sirop aux fruits' => + array ( + 'sous-categorie' => + array ( + 0 => 'Crème de cassis', + 1 => 'Grenadine', + 4 => 'Sirop d\'abricot', + 5 => 'Sirop d\'agrumes', + 6 => 'Sirop d\'oranges', + 7 => 'Sirop de baies', + 8 => 'Sirop de citrons', + 9 => 'Sirop de fruit de la passion', + 11 => 'Sirop de grenadine', + 12 => 'Sirop de noix de coco', + 13 => 'Sirop de pêche', + ), + 'super-categorie' => + array ( + 0 => 'Sirop', + ), + ), + 'Crème de noix de coco' => + array ( + 'super-categorie' => + array ( + 0 => 'Crème de liqueur', + ), + ), + 'Crème fraiche' => + array ( + 'super-categorie' => + array ( + 0 => 'Crème', + ), + 'sous-categorie' => + array ( + 1 => 'Crème liquide', + ), + ), + 'Ingrédient glacé' => + array ( + 'sous-categorie' => + array ( + 0 => 'Crème glacée', + 2 => 'Sorbet', + ), + 'super-categorie' => + array ( + 0 => 'Aliments divers', + ), + ), + 'Crème glacée' => + array ( + 'super-categorie' => + array ( + 0 => 'Ingrédient glacé', + ), + 'sous-categorie' => + array ( + 0 => 'Crème glacée à la noix de coco', + ), + ), + 'Crème glacée à la noix de coco' => + array ( + 'super-categorie' => + array ( + 0 => 'Crème glacée', + ), + ), + 'Crème liquide' => + array ( + 'super-categorie' => + array ( + 0 => 'Crème fraiche', + ), + ), + 'Crémant' => + array ( + 'super-categorie' => + array ( + 0 => 'Vin effervescent', + ), + ), + 'Liqueur d\'orange' => + array ( + 'sous-categorie' => + array ( + 0 => 'Curaçao', + 1 => 'Grand marnier', + 2 => 'Triple sec', + ), + 'super-categorie' => + array ( + 0 => 'Liqueur d\'agrume', + ), + ), + 'Curaçao' => + array ( + 'super-categorie' => + array ( + 0 => 'Liqueur d\'orange', + ), + 'sous-categorie' => + array ( + 0 => 'Curaçao bleu', + ), + ), + 'Curaçao bleu' => + array ( + 'super-categorie' => + array ( + 0 => 'Curaçao', + ), + ), + 'Eau' => + array ( + 'super-categorie' => + array ( + 0 => 'Liquide', + ), + 'sous-categorie' => + array ( + 0 => 'Eau gazeuse', + ), + ), + 'Eau gazeuse' => + array ( + 'super-categorie' => + array ( + 0 => 'Eau', + ), + 'sous-categorie' => + array ( + 0 => 'Eau minérale gazeuse', + 1 => 'Perrier', + ), + ), + 'Eau minérale gazeuse' => + array ( + 'super-categorie' => + array ( + 0 => 'Eau gazeuse', + ), + ), + 'Menthe' => + array ( + 'super-categorie' => + array ( + 0 => 'Herbe commune', + ), + ), + 'Gingembre' => + array ( + 'super-categorie' => + array ( + 0 => 'Épice européenne', + 1 => 'Rhizome', + ), + ), + 'Muscade' => + array ( + 'sous-categorie' => + array ( + 1 => 'Noix de muscade', + ), + 'super-categorie' => + array ( + 0 => 'Épice commune', + ), + ), + 'Fraise' => + array ( + 'super-categorie' => + array ( + 0 => 'Baie', + ), + ), + 'Framboise' => + array ( + 'super-categorie' => + array ( + 0 => 'Baie', + ), + ), + 'Sucre' => + array ( + 'sous-categorie' => + array ( + 8 => 'Sucre en poudre', + 12 => 'Sucre roux', + 13 => 'Sucre vanillé', + ), + 'super-categorie' => + array ( + 0 => 'Assaisonnement', + ), + ), + 'Fruit à pepin' => + array ( + 'super-categorie' => + array ( + 0 => 'Fruit', + ), + 'sous-categorie' => + array ( + 1 => 'Pomme', + ), + ), + 'Fruit tropical exotique' => + array ( + 'sous-categorie' => + array ( + 2 => 'Litchi', + ), + 'super-categorie' => + array ( + 0 => 'Fruit', + ), + ), + 'Rhizome' => + array ( + 'sous-categorie' => + array ( + 1 => 'Gingembre', + ), + 'super-categorie' => + array ( + 0 => 'Assaisonnement', + 1 => 'Légume', + ), + ), + 'Get 27' => + array ( + 'super-categorie' => + array ( + 0 => 'Autre liqueur', + ), + ), + 'Gin' => + array ( + 'super-categorie' => + array ( + 0 => 'Alcool de grain', + ), + ), + 'Glaçon' => + array ( + 'super-categorie' => + array ( + 0 => 'Aliments divers', + ), + ), + 'Glace pilée' => + array ( + 'super-categorie' => + array ( + 0 => 'Aliments divers', + ), + ), + 'Vanille' => + array ( + 'super-categorie' => + array ( + 0 => 'Épice', + ), + ), + 'Grand marnier' => + array ( + 'super-categorie' => + array ( + 0 => 'Liqueur d\'orange', + ), + ), + 'Grenadine' => + array ( + 'super-categorie' => + array ( + 0 => 'Sirop aux fruits', + ), + ), + 'Sel' => + array ( + 'sous-categorie' => + array ( + 4 => 'Sel de céleri', + ), + 'super-categorie' => + array ( + 0 => 'Assaisonnement', + ), + ), + 'Stout (bière)' => + array ( + 'super-categorie' => + array ( + 0 => 'Bière de fermentation haute', + ), + ), + 'Jus' => + array ( + 'super-categorie' => + array ( + 0 => 'Liquide', + ), + 'sous-categorie' => + array ( + 0 => 'Jus de fruits', + 1 => 'Jus de légumes', + 2 => 'Limonade', + ), + ), + 'Jus de fruits' => + array ( + 'sous-categorie' => + array ( + 0 => 'Jus d\'abricots', + 1 => 'Jus d\'agrumes', + 2 => 'Jus d\'ananas', + 3 => 'Jus de baies', + 4 => 'Jus de bananes', + 5 => 'Jus de canneberge', + 6 => 'Jus de cerises', + 7 => 'Jus de fruits de la passion', + 8 => 'Jus de fruit de la passion', + 9 => 'Jus de goyave', + 10 => 'Jus de litchis', + 11 => 'Jus de mangue', + 13 => 'Jus de pêches', + 14 => 'Jus de poires', + 15 => 'Jus de pommes', + 17 => 'Jus de raisins', + 19 => 'Jus de tomates', + 20 => 'Jus multivitaminé', + ), + 'super-categorie' => + array ( + 0 => 'Jus', + ), + ), + 'Jus d\'abricots' => + array ( + 'super-categorie' => + array ( + 0 => 'Jus de fruits', + ), + ), + 'Jus d\'agrumes' => + array ( + 'super-categorie' => + array ( + 0 => 'Jus de fruits', + ), + 'sous-categorie' => + array ( + 0 => 'Jus d\'orange', + 1 => 'Jus de citron', + 2 => 'Jus de citrons verts', + 3 => 'Jus de pamplemousse', + ), + ), + 'Jus de légumes' => + array ( + 'sous-categorie' => + array ( + 3 => 'Jus de tomates', + ), + 'super-categorie' => + array ( + 0 => 'Jus', + 1 => 'Légume', + ), + ), + 'Jus d\'ananas' => + array ( + 'super-categorie' => + array ( + 0 => 'Alcool', + 1 => 'Jus de fruits', + ), + ), + 'Jus d\'orange' => + array ( + 'super-categorie' => + array ( + 0 => 'Partie d\'orange', + 1 => 'Jus d\'agrumes', + ), + ), + 'Jus de baies' => + array ( + 'super-categorie' => + array ( + 0 => 'Jus de fruits', + ), + 'sous-categorie' => + array ( + 1 => 'Jus de framboises', + ), + ), + 'Jus de bananes' => + array ( + 'super-categorie' => + array ( + 0 => 'Jus de fruits', + ), + ), + 'Jus de canneberge' => + array ( + 'super-categorie' => + array ( + 0 => 'Jus de fruits', + ), + ), + 'Jus de cerises' => + array ( + 'super-categorie' => + array ( + 0 => 'Jus de fruits', + ), + ), + 'Jus de citron' => + array ( + 'super-categorie' => + array ( + 0 => 'Partie de citron', + 1 => 'Jus d\'agrumes', + ), + ), + 'Partie de citron vert' => + array ( + 'sous-categorie' => + array ( + 0 => 'Jus de citrons verts', + 2 => 'Zeste de citron vert', + ), + 'super-categorie' => + array ( + 0 => 'Citron vert', + 1 => 'Partie d\'agrumes', + ), + ), + 'Jus de citrons verts' => + array ( + 'super-categorie' => + array ( + 0 => 'Partie de citron vert', + 1 => 'Jus d\'agrumes', + ), + ), + 'Jus de framboises' => + array ( + 'super-categorie' => + array ( + 0 => 'Jus de baies', + ), + ), + 'Jus de fruits de la passion' => + array ( + 'super-categorie' => + array ( + 0 => 'Jus de fruits', + ), + ), + 'Jus de fruit de la passion' => + array ( + 'super-categorie' => + array ( + 0 => 'Jus de fruits', + ), + ), + 'Jus de goyave' => + array ( + 'super-categorie' => + array ( + 0 => 'Jus de fruits', + ), + ), + 'Jus de litchis' => + array ( + 'super-categorie' => + array ( + 0 => 'Jus de fruits', + ), + ), + 'Jus de mangue' => + array ( + 'super-categorie' => + array ( + 0 => 'Jus de fruits', + ), + ), + 'Partie de paplemousse' => + array ( + 'sous-categorie' => + array ( + 0 => 'Jus de pamplemousse', + ), + 'super-categorie' => + array ( + 0 => 'Pamplemousse', + 1 => 'Partie d\'agrumes', + ), + ), + 'Jus de pamplemousse' => + array ( + 'super-categorie' => + array ( + 0 => 'Partie de paplemousse', + 1 => 'Jus d\'agrumes', + ), + ), + 'Jus de pêches' => + array ( + 'super-categorie' => + array ( + 0 => 'Jus de fruits', + ), + ), + 'Jus de poires' => + array ( + 'super-categorie' => + array ( + 0 => 'Jus de fruits', + ), + ), + 'Jus de pommes' => + array ( + 'super-categorie' => + array ( + 0 => 'Jus de fruits', + ), + ), + 'Jus de raisins' => + array ( + 'super-categorie' => + array ( + 0 => 'Jus de fruits', + ), + ), + 'Jus de tomates' => + array ( + 'super-categorie' => + array ( + 0 => 'Jus de fruits', + 1 => 'Bouillon', + 2 => 'Jus de légumes', + ), + ), + 'Jus multivitaminé' => + array ( + 'super-categorie' => + array ( + 0 => 'Jus de fruits', + ), + ), + 'Liqueur de café' => + array ( + 'super-categorie' => + array ( + 0 => 'Autre liqueur', + ), + ), + 'Kirsch' => + array ( + 'super-categorie' => + array ( + 0 => 'Eau de vie de fruits', + ), + ), + 'Kiwi' => + array ( + 'super-categorie' => + array ( + 0 => 'Baie', + ), + ), + 'Kumquat' => + array ( + 'super-categorie' => + array ( + 0 => 'Agrume', + ), + ), + 'Lait de coco' => + array ( + 'super-categorie' => + array ( + 0 => 'Lait', + ), + ), + 'Lait de soja' => + array ( + 'super-categorie' => + array ( + 0 => 'Lait', + ), + ), + 'Lait entier' => + array ( + 'super-categorie' => + array ( + 0 => 'Lait', + ), + ), + 'Limonade' => + array ( + 'super-categorie' => + array ( + 0 => 'Jus', + 1 => 'Boisson gazeuse non alcoolisée', + ), + ), + 'Liqueur de citron' => + array ( + 'sous-categorie' => + array ( + 0 => 'Limoncello', + ), + 'super-categorie' => + array ( + 0 => 'Liqueur d\'agrume', + ), + ), + 'Limoncello' => + array ( + 'super-categorie' => + array ( + 0 => 'Liqueur de citron', + ), + ), + 'Liqueur de fruit' => + array ( + 'sous-categorie' => + array ( + 0 => 'Liqueur d\'abricot', + 1 => 'Liqueur d\'agrume', + 3 => 'Liqueur de fraises', + 5 => 'Liqueur de litchi', + 7 => 'Liqueur de poire', + 8 => 'Liqueur de pommes', + 10 => 'Pisang Ambon', + ), + 'super-categorie' => + array ( + 0 => 'Liqueur', + ), + ), + 'Liqueur d\'abricot' => + array ( + 'super-categorie' => + array ( + 0 => 'Liqueur de fruit', + ), + ), + 'Liqueur d\'agrume' => + array ( + 'super-categorie' => + array ( + 0 => 'Liqueur de fruit', + ), + 'sous-categorie' => + array ( + 0 => 'Liqueur d\'orange', + 1 => 'Liqueur de citron', + ), + ), + 'Liqueur de fraises' => + array ( + 'super-categorie' => + array ( + 0 => 'Liqueur de fruit', + ), + ), + 'Liqueur de litchi' => + array ( + 'super-categorie' => + array ( + 0 => 'Liqueur de fruit', + ), + ), + 'Liqueur de poire' => + array ( + 'super-categorie' => + array ( + 0 => 'Liqueur de fruit', + ), + ), + 'Liqueur de pommes' => + array ( + 'super-categorie' => + array ( + 0 => 'Liqueur de fruit', + ), + ), + 'Litchi' => + array ( + 'super-categorie' => + array ( + 0 => 'Fruit tropical exotique', + ), + ), + 'Vin muté' => + array ( + 'sous-categorie' => + array ( + 2 => 'Porto', + 3 => 'Vermouth', + ), + 'super-categorie' => + array ( + 0 => 'Vin de dessert', + ), + ), + 'Malibu' => + array ( + 'super-categorie' => + array ( + 0 => 'Autre liqueur', + ), + ), + 'Mangalore' => + array ( + 'super-categorie' => + array ( + 0 => 'Liqueur à base de plantes', + ), + ), + 'Mangue' => + array ( + 'super-categorie' => + array ( + 0 => 'Fruit tropical commun', + ), + ), + 'Vermouth' => + array ( + 'sous-categorie' => + array ( + 0 => 'Martini', + 1 => 'Noilly Prat', + ), + 'super-categorie' => + array ( + 0 => 'Vin muté', + ), + ), + 'Martini' => + array ( + 'super-categorie' => + array ( + 0 => 'Vermouth', + ), + 'sous-categorie' => + array ( + 0 => 'Martini blanc', + 1 => 'Martini rosé', + 2 => 'Martini rouge', + ), + ), + 'Martini blanc' => + array ( + 'super-categorie' => + array ( + 0 => 'Martini', + ), + ), + 'Martini rosé' => + array ( + 'super-categorie' => + array ( + 0 => 'Martini', + ), + ), + 'Martini rouge' => + array ( + 'super-categorie' => + array ( + 0 => 'Martini', + ), + ), + 'Melon' => + array ( + 'super-categorie' => + array ( + 0 => 'Fruit', + ), + 'sous-categorie' => + array ( + 3 => 'Melon vert', + 4 => 'Pastèque', + ), + ), + 'Melon vert' => + array ( + 'super-categorie' => + array ( + 0 => 'Melon', + ), + ), + 'Noilly Prat' => + array ( + 'super-categorie' => + array ( + 0 => 'Vermouth', + ), + ), + 'Noix de coco' => + array ( + 'super-categorie' => + array ( + 0 => 'Fruit tropical commun', + ), + ), + 'Noix de muscade' => + array ( + 'super-categorie' => + array ( + 0 => 'Muscade', + ), + ), + 'Orange' => + array ( + 'super-categorie' => + array ( + 0 => 'Agrume', + ), + 'sous-categorie' => + array ( + 1 => 'Orange sanguine', + ), + ), + 'Orange sanguine' => + array ( + 'super-categorie' => + array ( + 0 => 'Orange', + ), + ), + 'Pamplemousse' => + array ( + 'super-categorie' => + array ( + 0 => 'Agrume', + ), + 'sous-categorie' => + array ( + 0 => 'Partie de paplemousse', + ), + ), + 'Partie d\'agrumes' => + array ( + 'super-categorie' => + array ( + 0 => 'Agrume', + ), + 'sous-categorie' => + array ( + 0 => 'Partie d\'orange', + 1 => 'Partie de citron', + 2 => 'Partie de citron vert', + 3 => 'Partie de paplemousse', + ), + ), + 'Pastèque' => + array ( + 'super-categorie' => + array ( + 0 => 'Melon', + ), + ), + 'Pastis' => + array ( + 'super-categorie' => + array ( + 0 => 'Liqueur anisée', + ), + ), + 'Pêche' => + array ( + 'super-categorie' => + array ( + 0 => 'Fruit à noyau', + ), + ), + 'Perrier' => + array ( + 'super-categorie' => + array ( + 0 => 'Eau gazeuse', + ), + ), + 'Pisang Ambon' => + array ( + 'super-categorie' => + array ( + 0 => 'Liqueur de fruit', + ), + ), + 'Pistache' => + array ( + 'super-categorie' => + array ( + 0 => 'Fruit sec', + 1 => 'Noix et graine oléagineuse', + ), + ), + 'Poivre' => + array ( + 'super-categorie' => + array ( + 0 => 'Épice commune', + ), + ), + 'Pomme' => + array ( + 'super-categorie' => + array ( + 0 => 'Fruit à pepin', + ), + ), + 'Porto' => + array ( + 'super-categorie' => + array ( + 0 => 'Vin muté', + ), + ), + 'Prosecco' => + array ( + 'super-categorie' => + array ( + 0 => 'Vin blanc', + ), + ), + 'Raifort' => + array ( + 'super-categorie' => + array ( + 0 => 'Condiment Européen', + ), + ), + 'Rhum' => + array ( + 'super-categorie' => + array ( + 0 => 'Spiritueux', + ), + 'sous-categorie' => + array ( + 0 => 'Rhum ambré', + 1 => 'Rhum blanc', + ), + ), + 'Rhum ambré' => + array ( + 'super-categorie' => + array ( + 0 => 'Rhum', + ), + ), + 'Saké' => + array ( + 'super-categorie' => + array ( + 0 => 'Vin', + ), + ), + 'Sauce au piment rouge' => + array ( + 'super-categorie' => + array ( + 0 => 'Condiment Américain', + ), + 'sous-categorie' => + array ( + 1 => 'Sauce tabasco', + ), + ), + 'Sauce tabasco' => + array ( + 'super-categorie' => + array ( + 0 => 'Sauce au piment rouge', + ), + ), + 'Sauce worcestershire' => + array ( + 'super-categorie' => + array ( + 0 => 'Condiment Européen', + ), + ), + 'Schweppes' => + array ( + 'super-categorie' => + array ( + 0 => 'Boisson gazeuse non alcoolisée', + ), + ), + 'Sel de céleri' => + array ( + 'super-categorie' => + array ( + 0 => 'Sel', + 1 => 'Céleri', + ), + ), + 'Sirop à la menthe' => + array ( + 'super-categorie' => + array ( + 0 => 'Sirop', + ), + ), + 'Sirop d\'abricot' => + array ( + 'super-categorie' => + array ( + 0 => 'Sirop aux fruits', + ), + ), + 'Sirop d\'agrumes' => + array ( + 'super-categorie' => + array ( + 0 => 'Sirop aux fruits', + ), + ), + 'Sirop d\'oranges' => + array ( + 'super-categorie' => + array ( + 0 => 'Sirop aux fruits', + ), + ), + 'Sirop d\'orgeat' => + array ( + 'super-categorie' => + array ( + 0 => 'Sirop', + ), + ), + 'Sirop de baies' => + array ( + 'super-categorie' => + array ( + 0 => 'Sirop aux fruits', + ), + 'sous-categorie' => + array ( + 0 => 'Sirop de cassis', + 2 => 'Sirop de fraises', + ), + ), + 'Sirop de cassis' => + array ( + 'super-categorie' => + array ( + 0 => 'Sirop de baies', + ), + ), + 'Sirop de citrons' => + array ( + 'super-categorie' => + array ( + 0 => 'Sirop aux fruits', + ), + ), + 'Sirop de fraises' => + array ( + 'super-categorie' => + array ( + 0 => 'Sirop de baies', + ), + ), + 'Sirop de fruit de la passion' => + array ( + 'super-categorie' => + array ( + 0 => 'Sirop aux fruits', + ), + ), + 'Sirop de gratte cul' => + array ( + 'super-categorie' => + array ( + 0 => 'Autre sirop', + ), + ), + 'Sirop de grenadine' => + array ( + 'super-categorie' => + array ( + 0 => 'Sirop aux fruits', + ), + ), + 'Sirop de noix de coco' => + array ( + 'super-categorie' => + array ( + 0 => 'Sirop aux fruits', + ), + ), + 'Sirop de pêche' => + array ( + 'super-categorie' => + array ( + 0 => 'Sirop aux fruits', + ), + ), + 'Sirop de roses' => + array ( + 'super-categorie' => + array ( + 0 => 'Autre sirop', + ), + ), + 'Sirop de sangria' => + array ( + 'super-categorie' => + array ( + 0 => 'Sirop', + ), + ), + 'Sirop de sucre de canne' => + array ( + 'super-categorie' => + array ( + 0 => 'Sirop', + ), + ), + 'Soda' => + array ( + 'super-categorie' => + array ( + 0 => 'Boisson gazeuse non alcoolisée', + ), + ), + 'Sorbet' => + array ( + 'super-categorie' => + array ( + 0 => 'Ingrédient glacé', + ), + 'sous-categorie' => + array ( + 0 => 'Sorbet citron vert', + ), + ), + 'Sorbet citron vert' => + array ( + 'super-categorie' => + array ( + 0 => 'Sorbet', + ), + ), + 'Sucre en poudre' => + array ( + 'sous-categorie' => + array ( + 0 => 'Sucre de canne en poudre', + ), + 'super-categorie' => + array ( + 0 => 'Sucre', + ), + ), + 'Sucre de canne en poudre' => + array ( + 'super-categorie' => + array ( + 0 => 'Sucre en poudre', + ), + ), + 'Sucre vanillé' => + array ( + 'super-categorie' => + array ( + 0 => 'Sucre', + ), + ), + 'Vin blanc sec' => + array ( + 'super-categorie' => + array ( + 0 => 'Vin blanc', + ), + ), + 'Tequila' => + array ( + 'super-categorie' => + array ( + 0 => 'Spiritueux', + ), + ), + 'Tranche de citron' => + array ( + 'super-categorie' => + array ( + 0 => 'Partie de citron', + ), + ), + 'Vin rosé' => + array ( + 'super-categorie' => + array ( + 0 => 'Vin', + ), + ), + 'Vodka' => + array ( + 'super-categorie' => + array ( + 0 => 'Spiritueux', + ), + ), + 'Yaourt' => + array ( + 'super-categorie' => + array ( + 0 => 'Produit laitier', + ), + ), + 'Zeste de citron' => + array ( + 'super-categorie' => + array ( + 0 => 'Partie de citron', + ), + ), + 'Zeste de citron vert' => + array ( + 'super-categorie' => + array ( + 0 => 'Partie de citron vert', + ), + ), + 'Aliment' => + array ( + 'sous-categorie' => + array ( + 0 => 'Fruit', + 1 => 'Assaisonnement', + 2 => 'Légume', + 3 => 'Liquide', + 4 => 'Noix et graine oléagineuse', + 5 => 'Oeuf', + 6 => 'Aliments divers', + 7 => 'Produit laitier', + ), + ), +); +?> \ No newline at end of file diff --git a/Photos/Black_velvet.jpg b/Photos/Black_velvet.jpg new file mode 100644 index 0000000000000000000000000000000000000000..edd059f8a3cd1d6b75c523d4f6f23f7634dda9bd Binary files /dev/null and b/Photos/Black_velvet.jpg differ diff --git a/Photos/Bloody_mary.jpg b/Photos/Bloody_mary.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c8fd64ae1176f28cd613ca5e512a8e8143c4c801 Binary files /dev/null and b/Photos/Bloody_mary.jpg differ diff --git a/Photos/Bora_bora.jpg b/Photos/Bora_bora.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5bfb49a7836ccee85b6f653aec92613ec1144b24 Binary files /dev/null and b/Photos/Bora_bora.jpg differ diff --git a/Photos/Builder.jpg b/Photos/Builder.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d83fe17aeab3454512aceafcd58b708a2756474f Binary files /dev/null and b/Photos/Builder.jpg differ diff --git a/Photos/Caipirinha.jpg b/Photos/Caipirinha.jpg new file mode 100644 index 0000000000000000000000000000000000000000..47aac405b4afdbde5f89e2e7f61c9d5f64bd38f2 Binary files /dev/null and b/Photos/Caipirinha.jpg differ diff --git a/Photos/Coconut_kiss.jpg b/Photos/Coconut_kiss.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d0df2e776cfa0b3884237f0a5d075950c4b25b38 Binary files /dev/null and b/Photos/Coconut_kiss.jpg differ diff --git a/Photos/Cuba_libre.jpg b/Photos/Cuba_libre.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7fa24a22365f07d1208347e198a25a207c5e2fd0 Binary files /dev/null and b/Photos/Cuba_libre.jpg differ diff --git a/Photos/Frosty_lime.jpg b/Photos/Frosty_lime.jpg new file mode 100644 index 0000000000000000000000000000000000000000..34b0bcc04a9f5d8bf29ea9fd8467159c1a832f04 Binary files /dev/null and b/Photos/Frosty_lime.jpg differ diff --git a/Photos/Le_vandetta.jpg b/Photos/Le_vandetta.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b69ab6700216873fb16eb434a4488ff005686d57 Binary files /dev/null and b/Photos/Le_vandetta.jpg differ diff --git a/Photos/Margarita.jpg b/Photos/Margarita.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4b5e7e58b61a2ef912bcedf8752edf3b189fed6e Binary files /dev/null and b/Photos/Margarita.jpg differ diff --git a/Photos/Mojito.jpg b/Photos/Mojito.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6b4f16b3ac8edc8bff18d27f6a629f7cb1082e5b Binary files /dev/null and b/Photos/Mojito.jpg differ diff --git a/Photos/Pina_colada.jpg b/Photos/Pina_colada.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a867e5ecee5b28962d0c106e1c49393b3179c682 Binary files /dev/null and b/Photos/Pina_colada.jpg differ diff --git a/Photos/Raifortissimo.jpg b/Photos/Raifortissimo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b1e7c97bd2c8b4d2e820daf7d8aa5f6940df8dc7 Binary files /dev/null and b/Photos/Raifortissimo.jpg differ diff --git a/Photos/Sangria_sans_alcool.jpg b/Photos/Sangria_sans_alcool.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fd69352c81b728a58921c90ab68b338254c106c9 Binary files /dev/null and b/Photos/Sangria_sans_alcool.jpg differ diff --git a/Photos/Screwdriver.jpg b/Photos/Screwdriver.jpg new file mode 100644 index 0000000000000000000000000000000000000000..db9dedb1ed31ce171568b48daed4b92b8948519d Binary files /dev/null and b/Photos/Screwdriver.jpg differ diff --git a/Photos/Shoot_up.jpg b/Photos/Shoot_up.jpg new file mode 100644 index 0000000000000000000000000000000000000000..45345305e131ef525b5ea153ba800265054a6a5c Binary files /dev/null and b/Photos/Shoot_up.jpg differ diff --git a/Photos/Tequila_sunrise.jpg b/Photos/Tequila_sunrise.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9bd6f7ddaee1941523a003c6cb2be33b30d8ca9c Binary files /dev/null and b/Photos/Tequila_sunrise.jpg differ diff --git a/Photos/Thumbs.db b/Photos/Thumbs.db new file mode 100644 index 0000000000000000000000000000000000000000..0e77a29046ced07aa42cf9776787b77f1f1d723b Binary files /dev/null and b/Photos/Thumbs.db differ diff --git a/Photos/Tipunch.jpg b/Photos/Tipunch.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ee675b472bb37b7218c1eb4bc42e62dc56b81578 Binary files /dev/null and b/Photos/Tipunch.jpg differ diff --git a/Profil.php b/Profil.php new file mode 100644 index 0000000000000000000000000000000000000000..d528b37c9f6dfa19938b86b184e5e1af97aeec96 --- /dev/null +++ b/Profil.php @@ -0,0 +1,138 @@ +<?php +include "configuration.php"; +session_start(); +?> + +<!DOCTYPE html> +<html lang="fr"> + <head> + <title>Profil</title> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> + <link href="recettes.css" rel="stylesheet"> + + </head> + + <body> + <form action="" method="post"> + <?php + if (isset($_POST['connexion'])){ + header("location:connexion.php"); + } + + if (isset($_POST['inscription'])){ + header("location:inscription.php"); + } + + if (isset($_POST['panier'])){ + header("location:panier.php"); + } + + if (isset($_POST['home'])){ + header("location:Requete.php"); + } + + if (isset($_POST['deconnecter'])){ + $_SESSION = array(); + session_destroy(); + header("location:Requete.php"); + } + + if (isset($_SESSION['pseudo'])){ + $pseudonyme = ucfirst(strtolower($_SESSION['pseudo'])); + echo "<p id='bienvenue'> Bienvenue ".$pseudonyme."</p>"; + echo "<input type='submit' name='deconnecter' value='Déconnexion'/>"; + }else{ + echo "<input type='submit' name='connexion' value='Connexion'/>"; + echo "<input type='submit' name='inscription' value='Inscription'/>"; + } + echo "<input type='submit' name='panier' id='panier' value='Votre panier'/>"; + echo "<input type='submit' name='home' value='Les recettes'/></br>"; + + + $mysqli = connect_to_db(); + $id = $_SESSION['id']; + + $resultat = $mysqli->query("SELECT * FROM utilisateurs WHERE user_id LIKE '{$id}'"); + $resultat = $resultat->fetch_assoc(); + + $pseudo = $resultat['pseudo']; + $newPseudo = $pseudo; + $password = $resultat['password']; + $email = $resultat['email']; + $nom = $resultat['nom']; + $prenom = $resultat['prenom']; + $sexe = $resultat['sexe']; + $datenaissance = $resultat['datenaissance']; + $adresse = $resultat['adresse']; + $codepostal = $resultat['codepostal']; + $ville = $resultat['ville']; + $numtelephone = $resultat['numtelephone']; + + if(isset($_POST['modifier'])) + { + $mysqli = connect_to_db(); + + if($_POST['pseudo'] != ""){ + $pseudoExists = $mysqli->query("SELECT 1 FROM utilisateurs WHERE pseudo LIKE '{$_POST['pseudo']}'"); + if($pseudoExists->num_rows == 0){ + $newPseudo = $_POST['pseudo']; + } + } + if($_POST['nom'] != ""){ + $nom = $_POST['nom']; + } + if($_POST['prenom'] != ""){ + $prenom = $_POST['prenom']; + } + if($_POST['email'] != ""){ + $email = $_POST['email']; + } + if($_POST['sexe'] != ""){ + $sexe = $_POST['sexe']; + } + if($_POST['adresse'] != ""){ + $adresse = $_POST['adresse']; + } + if($_POST['numtelephone'] != ""){ + $numtelephone = $_POST['numtelephone']; + } + if($_POST['ville'] != ""){ + $ville = $_POST['ville']; + } + if($_POST['codepostal'] != ""){ + $codepostal = $_POST['codepostal']; + } + if($_POST['password'] != ""){ + if(preg_match('/^\S*(?=\S{8,})(?=\S*[a-z])(?=\S*[A-Z])(?=\S*[\d])\S*$/i', $_POST['password'])){ + $password = $_POST['password']; + } + + } + if($_POST['datenaissance'] != ""){ + $datenaissance = $_POST['datenaissance']; + } + + $res = $mysqli->query("UPDATE utilisateurs SET nom = '{$nom}', prenom = '{$prenom}', email = '{$email}', sexe = '{$sexe}', adresse = '{$adresse}', numtelephone = '{$numtelephone}', datenaissance = '{$datenaissance}', ville = '{$ville}', pseudo = '{$newPseudo}', codepostal = '{$codepostal}', password = '{$password}' WHERE pseudo = '{$pseudo}';"); + header("Refresh:0"); + + } + + echo nl2br("Votre pseudo : ".$pseudo." - Modifier en <input name='pseudo' type='text'/>"."\n"); + echo nl2br("Modifiez votre mot de passe en <input name='password' type='password'/>"."\n"); + echo nl2br("Votre email : ".$email." - Modifier en <input name='email' type='email'/>"."\n"); + echo nl2br("Votre nom : ".$nom." - Modifier en <input name='nom' type='text'/>"."\n"); + echo nl2br("Votre prénom : ".$prenom." - Modifier en <input name='prenom' type='text'/>"."\n"); + echo nl2br("Votre sexe : ".$sexe." - Modifier en <input type='radio' id='Homme' value='h' name='sexe' />Homme <input type='radio' id='Femme' value='f' name='sexe' />Femme"."\n"); + echo nl2br("Votre date de naissance : ".$datenaissance." - Modifier en <input name='datenaissance' type='date'/>"."\n"); + echo nl2br("Votre adresse : ".$adresse." - Modifier en <input name='adresse' type='text'/>"."\n"); + echo nl2br("Votre code postal : ".$codepostal." - Modifier en <input name='codepostal' type='text'/>"."\n"); + echo nl2br("Votre ville : ".$ville." - Modifier en <input name='ville' type='text'/>"."\n"); + echo nl2br("Votre numéro de téléphone : ".$numtelephone." - Modifier en <input name='numtelephone' type='text'/>"."\n"); + + ?> + <input type="submit" name="modifier" class="button" value="Modifier"/> + </form> + + + </body> +</html> diff --git a/Projet.zip b/Projet.zip new file mode 100644 index 0000000000000000000000000000000000000000..4d3c8496848dbede64bf05d8bbc6bedb59c66541 Binary files /dev/null and b/Projet.zip differ diff --git a/Projet_Boissons.pdf b/Projet_Boissons.pdf new file mode 100644 index 0000000000000000000000000000000000000000..b80fec5f7f5bd69091493412852b7c11f5f191d1 Binary files /dev/null and b/Projet_Boissons.pdf differ diff --git a/Requete.php b/Requete.php new file mode 100644 index 0000000000000000000000000000000000000000..308560475f5deeb0b3981ea11841b96f23e01bec --- /dev/null +++ b/Requete.php @@ -0,0 +1,102 @@ +<?php + session_start(); + echo "<pre>"; + + echo "</pre>"; + +?> + +<!DOCTYPE html> +<html lang="fr"> + <head> + <title>Requete</title> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> + <script type="text/javascript" src="suggestion.js"> </script> + <script type="text/javascript" src="recettes.js"> </script> + <link href="recettes.css" rel="stylesheet"> + + </head> + + <body> + + <?php + + if (isset($_POST['connexion'])){ + header("location:connexion.php"); + } + + if (isset($_POST['inscription'])){ + header("location:inscription.php"); + } + + if (isset($_POST['panier'])){ + header("location:panier.php"); + } + if (isset($_POST['profil'])){ + header("location:Profil.php"); + } + + if (isset($_POST['deconnecter'])){ + $_SESSION = array(); + session_destroy(); + header("location:Requete.php"); + } + ?> + + + <div id='header'> + <form method="POST" id='authentification'> + <?php + if (isset($_SESSION['pseudo'])){ + $pseudonyme = ucfirst(strtolower($_SESSION['pseudo'])); + echo "<p id='bienvenue'> Bienvenue ".$pseudonyme."</p>"; + echo "<input type='submit' name='deconnecter' value='Déconnexion'/>"; + echo "<input type='submit' name='profil' id='profil' value='Profil'/>"; + + }else{ + echo "<input type='submit' name='connexion' value='Connexion'/>"; + echo "<input type='submit' name='inscription' value='Inscription'/>"; + } + echo "<input type='submit' name='panier' id='panier' value='Votre panier'/>"; + + ?> + </form> + + <div id='recherche'> + <form method="post" id="form"> + <div id='fil'> + Entrez votre recherche : + <input list='listeNoms' type="text" id="requete" onkeyup="afficherSuggestions()"/> + </br> + <input type='button' id='pour' name='pour' value='Avec' onclick='inclureIngredient()'/> + <input type='button' id='contre' name='contre' value='Sans' onclick='exclureIngredient()'/> + <input type='button' id='filtre' value='Recherche via filtres' onclick='rechercheFiltres()' disabled/> + <div id='tags'> + <ul id='tagIn'></ul> + <ul id='tagOut'></ul> + </div> + </div> + + + + <div id='cat'> + Sélectionner : + <label for='categorie'></label><select name='categorie' id='categorie' onchange="optionsCategorie()" > + <option value='Aliment'></option> + <option value='Aliment'>Aliment</option> + </select> + + <button type="button" onclick="remettreAZero()">Remise à zéro</button> + </div> + <br/> + <div id="infos"></div> + </form> + </div> + </div> + + + + <div id="recettes"></div> + + </body> +</html> \ No newline at end of file diff --git a/Service.php b/Service.php new file mode 100644 index 0000000000000000000000000000000000000000..37379f7bf6ff83b44a5069f28ed59cd7fd0adcc9 --- /dev/null +++ b/Service.php @@ -0,0 +1,331 @@ +<?php +include "configuration.php"; +session_start(); + + + /** + * Se charge d'effectuer les requêtes et retourne un json + */ +function queryDBB(string $str){ + $mysqli= connect_to_db(); + $res = $mysqli->query($str); + if ($res != false){ + $recettes = $res->fetch_all(MYSQLI_ASSOC); + }else{ + $recettes = false; + } + $mysqli->close(); + return json_encode($recettes); +} + + +// Réalise l'inscription si possible, puis la connexion +function realiseInscription ($json){ + $mysqli= connect_to_db(); + + // Récupération depuis l'objet json + $nom = mysqli_real_escape_string ($mysqli, $json['nom']); + $prenom = mysqli_real_escape_string ($mysqli, $json['prenom']); + $sexe = mysqli_real_escape_string ($mysqli, $json['sexe']); + $email = mysqli_real_escape_string ($mysqli, $json['email']); + $pseudo = mysqli_real_escape_string ($mysqli, $json['pseudo']); + $password = mysqli_real_escape_string ($mysqli, $json['password']); + $datenaissance = mysqli_real_escape_string ($mysqli, $json['datenaissance']); + $adresse = mysqli_real_escape_string ($mysqli, $json['adresse']); + $codepostal = mysqli_real_escape_string ($mysqli, $json['codepostal']); + $ville = mysqli_real_escape_string ($mysqli, $json['ville']); + $numero = mysqli_real_escape_string ($mysqli, $json['numtelephone']); + + $res = $mysqli->query("INSERT INTO utilisateurs(nom, prenom, sexe, email, pseudo, password, datenaissance, adresse, codepostal, ville, numtelephone) + VALUES ('{$nom}', '{$prenom}', '{$sexe}', '{$email}', '{$pseudo}', '{$password}','{$datenaissance}','{$adresse}','{$codepostal}','{$ville}','{$numero}')"); + + if ($res == true){ // si l'inscription fonctionne, préparation des éléments de sessions + $_SESSION['pseudo'] = $json['pseudo']; + $resultat = $mysqli->query("SELECT * FROM utilisateurs WHERE pseudo LIKE '{$pseudo}' AND password = '{$password}'"); + $resultat = $resultat->fetch_assoc(); + $_SESSION['id'] = $resultat['user_id']; + } + $mysqli->close(); + return json_encode($res); +} + +// Effectue la connexion +function realiseConnexion ($json){ + $mysqli= connect_to_db(); + + // Récupération depuis l'objet json + $pseudo = mysqli_real_escape_string ($mysqli, $json['pseudo']); + $password = mysqli_real_escape_string ($mysqli, $json['password']); + + $res = $mysqli->query("SELECT 1 FROM utilisateurs WHERE pseudo LIKE '{$pseudo}' AND password = '{$password}'"); + if ($res->num_rows == 1){ + $_SESSION['pseudo'] = $json['pseudo']; + + $resultat = $mysqli->query("SELECT * FROM utilisateurs WHERE pseudo LIKE '{$pseudo}' AND password = '{$password}'"); + + $resultat = $resultat->fetch_assoc(); + $_SESSION['id'] = $resultat['user_id']; + $_SESSION['mdp'] = $resultat['password']; + + + $favs = $mysqli->query("SELECT p.recette_id FROM utilisateurs u, panier p WHERE u.user_id = p.user_id AND u.user_id = {$resultat['user_id']}"); + while($col = mysqli_fetch_assoc($favs)) { + $resultats[] = $col['recette_id']; + } + $_SESSION['panier'] = $resultats; + + $out = true; + }else{ + $out = false; + } + $mysqli->close(); + return json_encode($out); +} + + +function chercheTitres (string $nom){ + $requete = "SELECT sous_nom FROM hierarchie WHERE super_nom LIKE '{$nom}%'"; + $requete = "with recursive cte (sous_nom, super_nom) as ( + SELECT sous_nom, super_nom + FROM hierarchie + WHERE super_nom LIKE '{$nom}%' + union all + SELECT h.sous_nom, h.super_nom + FROM hierarchie h + INNER JOIN cte + on h.super_nom = cte.sous_nom + ) + select distinct sous_nom from cte;"; + + echo queryDBB($requete); +} + +/** + * Récupère les sous catégories + */ + +function getCategorie (string $req){ + $requete = "SELECT sous_nom FROM hierarchie WHERE super_nom = '{$req}'"; + echo queryDBB($requete); +} + +/* +function getCategorie (string $req){ + $requete = "SELECT sous_nom FROM hierarchie WHERE super_nom = '{$req}'"; + + + $requete = "with recursive cte (sous_nom, super_nom) as ( + SELECT sous_nom, super_nom + FROM hierarchie + WHERE super_nom = '{$req}' + union all + SELECT h.sous_nom, h.super_nom + FROM hierarchie h + INNER JOIN cte + on h.super_nom = cte.sous_nom + ) + select distinct sous_nom from cte;"; + + echo queryDBB($requete); + + +}*/ + +/** + * Récupères les recettes récursivement (MYSQL V8+!!) + */ +function grabRecettes (string $req){ + $requete = "with recursive cte (sous_nom, super_nom) as ( + SELECT sous_nom, super_nom + FROM hierarchie + WHERE super_nom = '{$req}' + union all + SELECT h.sous_nom, h.super_nom + FROM hierarchie h + INNER JOIN cte on h.super_nom = cte.sous_nom + ) + SELECT DISTINCT r.id, r.titre, r.ingredients, r.preparation, r.photo FROM cte c, recettes r, ingredientsderecettes ing + WHERE (c.sous_nom = ing.nomIngredient OR c.super_nom = ing.nomIngredient) AND ing.idBoisson = r.id ;"; + + echo queryDBB($requete); +} + +/** + * Envoie l'image sélectionné parmi celles existantes ou rien + */ +function loadImage (string $nom){ + $nom = str_replace(" ", "_", $nom); + $nom = str_replace("'", "", $nom); + + $accents = array('è'=>'e', 'é'=>'e', 'ê'=>'e', 'ë'=>'e', 'ì'=>'i', 'í'=>'i', 'î'=>'i', 'ï'=>'i', 'ñ'=>'n'); + $nom = strtr( $nom, $accents ); + foreach (array_filter(glob('Photos/*.jpg'), 'is_file') as $file){ + if ('Photos/'.$nom.'.jpg' == $file){ + echo $file; + }else{ + echo ''; + } + } +} +/** + * Récupère le contenu du panier d'un utilisateur + */ +function getPanier (){ + if (isset($_SESSION['id'])){ // si connecté + $requete = "SELECT r.id, r.titre, r.preparation, r.ingredients FROM recettes r, panier p WHERE p.recette_id = r.id AND p.user_id = {$_SESSION['id']}"; + echo queryDBB($requete); + }else{ + $requete = "SELECT id, titre, preparation, ingredients FROM recettes WHERE "; + for ($i = 0; $i < count($_SESSION['panier']); $i++) { + if ($i < count($_SESSION['panier']) -1){ + $requete .= "id = ". $_SESSION['panier'][$i]." OR "; + }else{ + $requete .= "id = ". $_SESSION['panier'][$i]; + } + } + echo queryDBB($requete); + } +} + +/** + * Ajouter aux favoris + */ +function addToCart ($req){ + if (isset($_SESSION['id'])){ // Si un utilisateur est identifié + + $mysqli= connect_to_db(); + $recette_id = mysqli_real_escape_string ($mysqli, $req); + $user_id = mysqli_real_escape_string($mysqli, $_SESSION['id']); + $requete = "INSERT INTO panier(user_id, recette_id) VALUES ({$user_id}, {$recette_id})"; + $mysqli->query($requete); + $mysqli->close(); + } + $_SESSION['panier'][] = $req; +} + +/** + * Retirer une recette des favoris + */ +function removeFromCart ($req){ + if (isset($_SESSION['id'])){ // Si un utilisateur est identifié + + $mysqli= connect_to_db(); + $recette_id = mysqli_real_escape_string ($mysqli, $req); + $user_id = mysqli_real_escape_string($mysqli, $_SESSION['id']); + $requete = "DELETE FROM panier WHERE user_id = {$user_id} AND recette_id = {$recette_id}"; + $mysqli->query($requete); + $mysqli->close(); + } + $delete = array($req); + $temp = array_values(array_diff($_SESSION['panier'], $delete)); + $_SESSION['panier'] = $temp; +} + +function searchFilters ($inclure, $exclure){ + // recherche de la recette + + // Création de la requête avec les ingrédients à inclure + + $count = count($inclure); + $inc = ''; + $i = 0; + foreach ($inclure as $item){ + if ($i < $count -1){ + $inc .= "super_nom LIKE '".$item."%' OR "; + }else{ + $inc .= "super_nom LIKE '".$item."%' "; + } + $i ++; + } + + // ajoute les ingrédients à retirer de la recherche + $count = count($exclure); + if ($count > 0){ + $exc = 'AND '; + $i = 0; + foreach ($exclure as $item){ + if ($i < $count -1){ + $exc .= "super_nom NOT LIKE '".$item."%' OR "; + }else{ + $exc .= "super_nom NOT LIKE '".$item."%' "; + } + $i ++; + } + $inc .= $exc; + } + + // Corps de la requête récursive cherchant des recettes ayant certains ingrédients, en ignorant des recettes ayant d'autres ingrédients + $requete = "with recursive cte (sous_nom, super_nom) as ( + SELECT sous_nom, super_nom + FROM hierarchie + WHERE ".$inc." + union all + SELECT h.sous_nom, h.super_nom + FROM hierarchie h + INNER JOIN cte on h.super_nom = cte.sous_nom + ) + SELECT DISTINCT r.id, r.titre, r.ingredients, r.preparation, r.photo FROM cte c, recettes r, ingredientsderecettes ing + WHERE (c.sous_nom = ing.nomIngredient OR c.super_nom = ing.nomIngredient) AND ing.idBoisson = r.id ;"; + + echo queryDBB($requete); + +} + + +// Gestion des requetes json +$in = file_get_contents('php://input'); +$decoded = json_decode($in, true); + +if (isset($decoded['mode'])){ + if ($decoded['mode'] == 'inscription'){ + echo realiseInscription($decoded); + } + if ($decoded['mode'] == 'connexion'){ + echo realiseConnexion($decoded); + } + unset($decoded); +} + +if (isset($decoded['requete'])){ + chercheTitres($decoded['requete']); + unset($decoded['requete']); + +} +if (isset($decoded['hierarchie'])){ + getCategorie ($decoded['hierarchie']); + unset($decoded['hierarchie']); + +} +if (isset($decoded['recettes'])){ + grabRecettes ($decoded['recettes']); + unset($decoded['recettes']); +} +if (isset($decoded['images'])){ + loadImage($decoded['images']); + unset($decoded['images']); +} +// Requêtes concernant le panier +if (isset($decoded['panier'])){ + if (isset($decoded['panier'])){ + if ($decoded['panier'] == 'ajouter'){ + addToCart($decoded['recette_id']); + } + if ($decoded['panier'] == 'retirer'){ + removeFromCart($decoded['recette_id']); + } + if ($decoded['panier'] == 'get'){ + getPanier(); + } + if ($decoded['panier'] == 'alreadyIn'){ + } + } +} + +if (isset($decoded['filtre'])){ + searchFilters ($decoded['avec'], $decoded['sans']); +} + + + + +?> \ No newline at end of file diff --git a/configuration.php b/configuration.php new file mode 100644 index 0000000000000000000000000000000000000000..ed38cf13725a2bbb82bd537052094ce8273959dd --- /dev/null +++ b/configuration.php @@ -0,0 +1,16 @@ +<?php // Gestion de l'inscription + +/** + * Se connecte à la base de donnée + */ +function connect_to_db(){ + $mysqli= new mysqli('127.0.0.1', 'root', '', 'Boissons') or die("Erreur : tables inaccessibles"); + return $mysqli; +} + +function install_bd(){ + $mysqli = mysqli_connect('127.0.0.1', 'root', '') or die("Erreur de connexion"); + return $mysqli; +} + +?> diff --git a/connexion.php b/connexion.php new file mode 100644 index 0000000000000000000000000000000000000000..182d57dbc2fc8884909d13feb7a5a2d4ec9e229b --- /dev/null +++ b/connexion.php @@ -0,0 +1,56 @@ +<?php // Gestion de l'inscription + session_start(); // début session + include "configuration.php"; + +?> + + + +<!DOCTYPE html> +<html lang="fr"> + <head> + <title>Inscription</title> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> + <script type="text/javascript" src="formulaire.js"> </script> + + </head> + + <body> + <?php // Gestion de l'inscription + + $mysqli=install_bd(); + if (!$mysqli) { + die("Connection failed: " . mysqli_connect_error()); + } + $describe = $mysqli->query('describe Boissons.utilisateurs;'); + if ($describe->num_rows > 0) { + $form = '<h1> Connexion </h1>'; + $form .= '<form method="post" id="connexion">'; + while ($row = $describe->fetch_assoc()) { + switch ($row["Field"]){ + case "pseudo": + $form .= "<label for='" . $row["Field"] . "'>"; + $form.= "Pseudo : "; + $form .= "</label> <input type='text' required='true' name='" . $row["Field"] . "' > </br>"; + + break; + case "password": + $form .= "<label for='" . $row["Field"] . "'>"; + $form.= "Mot de passe : "; + $form .= "</label> <input type='password' required='true' name='" . $row["Field"] . "' > </br>"; + + break; + } + } + $form .= "<input type='submit' id='ok' value='Connexion'>"; + $form .= "<input type='button' id='retour' value='Retour'>"; + + + + $form .= "</br> <div id='explications'> </diw> </br></form>"; + } + echo $form; + ?> + + </body> +</html> \ No newline at end of file diff --git a/formulaire.js b/formulaire.js new file mode 100644 index 0000000000000000000000000000000000000000..41d5a0ea4d7549534c50eb1888dabe0ac49d44f8 --- /dev/null +++ b/formulaire.js @@ -0,0 +1,339 @@ +/** + * Action qui se réalise automatiquement lorsque l'envoi du formulaire d'inscription a lieu + * Vérifie les données puis les envoie (si possible) au serveur (Service.php traite la demande) + */ +window.addEventListener("load", function (){ + + // Désactive par défaut le submit + var ok = document.getElementById('ok'); + var retour = this.document.getElementById('retour'); + retour.addEventListener('click', () =>{ + window.location.assign ("/Requete.php"); + }); + ok.disabled = true; + + var formulaire = document.getElementById("inscription"); + if (formulaire == null) return; + + // zone explicative + var explications = this.document.getElementById('explications'); + var divMdp = document.createElement("div"); + var divPseudo = document.createElement("div"); + + explications.appendChild(divMdp); + explications.appendChild(divPseudo); + + + // Récupère le champ password et le test + var password = formulaire.password; + var pseudo = formulaire.pseudo; + var email = formulaire.email; + var nom = formulaire.nom; + var prenom = formulaire.prenom; + const sexe = document.getElementsByName("sexe"); + var datenaissance = formulaire.datenaissance; + var adresse = formulaire.adresse; + var codepostal = formulaire.codepostal; + var ville = formulaire.ville; + var numtelephone = formulaire.numtelephone; + + + // Envoie le formulaire au serveur + function envoyerForm(){ + let input; + var genre; // Récupère genre si il existe + sexe.forEach(function(option) { + if (option.checked) { + genre = option; + } + }); + + if (genre){ + input = { + mode : 'inscription', + pseudo : pseudo.value, + password : password.value, + email : email.value, + sexe : genre.value, + prenom : prenom.value, + nom : nom.value, + datenaissance : datenaissance.value, + adresse : adresse.value, + codepostal : codepostal.value, + ville : ville.value, + numtelephone : numtelephone.value + }; + }else{ + input = { + mode: 'inscription', + pseudo: pseudo.value, + password: password.value, + email: email.value, + sexe: '', + prenom: prenom.value, + nom: nom.value, + datenaissance : datenaissance.value, + adresse : adresse.value, + codepostal : codepostal.value, + ville : ville.value, + numtelephone : numtelephone.value + }; + } + + console.log(input); + + const xhr = new XMLHttpRequest(); + xhr.open("POST", "/Service.php", true); + xhr.setRequestHeader("Content-Type", "application/json ; charset=UTF-8"); + + // Vérifie si erreur lors de l'envoie du formulaire + xhr.addEventListener("Error", function(event) { + alert("Erreur d'envoi de formulaire d'inscription..."); + }); + + // Vérification des résultats + xhr.onreadystatechange = function(){ + if (xhr.readyState === 4 && xhr.status === 200){ + console.log(xhr.response); + if (xhr.response != null){ + let resultat = JSON.parse(xhr.response); + if (resultat == true){ + ok.disabled = true; + explications.textContent = "Inscription réussie!"; + window.location.assign ("/Requete.php"); + }else{ + explications.textContent = "Inscription a échouée! Ce pseudo est déjà utilisé. Veuillez réessayer."; + } + } + } + } + xhr.send(JSON.stringify(input)); + + } + + // Test si l'e-mail est vide ou dans un format correct + function validEmail(event){ + var reg = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/; + if (inscription.email.value === '' || reg.test(inscription.email.value)){ + email.style.backgroundColor = 'white'; + return true + }else{ + email.style.backgroundColor = 'red'; + return false; + } + } + + // Vérifie la longueur du pseudo et si il contient des caractères spéciaux + function validPseudo(event){ + var reg = /[ `!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?~]/; + + divPseudo.innerHTML = ""; + + if (pseudo.value.length < 3 || reg.test(pseudo.value)){ + pseudo.style.backgroundColor = 'red'; + divPseudo.innerHTML = "<ul> Le pseudo doit faire au moins 3 caractères </ul>"; + return false; + }else{ + pseudo.style.backgroundColor = 'white'; + return true; + } + } + + // Vérifie la longueur du mdp et si il contient bien majuscule, minuscules et nombre + function validPassword(event){ + // Regex pour tester le mdp + var majuscule = /[A-Z]/g; + var minuscule = /[a-z]/g; + var nombre = /[0-9]/g; + divMdp.innerHTML = ""; // Vide le div dédié aux erreurs de mdp + + // Test du mdp + if (password.value.length >= 6 && majuscule.test(password.value) && minuscule.test(password.value) && nombre.test(password.value)){ + password.style.backgroundColor = 'white'; + return true; + }else{ // Notification des erreurs + password.style.backgroundColor = 'red'; + divMdp.innerHTML = "<ul>Le mot de passe doit :"; + if (password.value.length < 6) divMdp.innerHTML += "<li>faire plus de 6 caractères </li>"; + if (!majuscule.test(password.value) || (!minuscule.test(password.value))) { + divMdp.innerHTML += "<li>avoir au moins une majuscule et une minuscule </li> </ul>"; + } + if (!nombre.test(password.value)) divMdp.innerHTML += "<li>contenir au moins un chiffre </li>"; + divMdp.innerHTML += '</ul>'; + return false; + } + } + + + formulaire.addEventListener("submit", function (event){ + event.preventDefault(); + envoyerForm(); + }); + + + // active le bouton d'envoi du formulaire ou le bloque et donne des explications + formulaire.addEventListener('keyup', () =>{ + if (validPassword() && validPseudo() && validEmail()){ + explications.innerHTML = ''; + ok.disabled = false; + }else{ + ok.disabled = true; + } + }); + + + // Récupère le champ password et le test + password.addEventListener('keyup', () =>{ + validPassword(); + }); + + // Récupère le champ pseudo et le test + pseudo.addEventListener('keyup', () =>{ + validPseudo(); + }); + + email.addEventListener('keyup', () => { + validEmail(); + }) + +}); + + +/** + * Action qui se réalise automatiquement lorsque l'envoi du formulaire de connexion a lieu + * Vérifie les données puis les envoie (si possible) au serveur (Service.php traite la demande) + */ +window.addEventListener("load", function (){ + + // Désactive par défaut le submit + var ok = document.getElementById('ok'); + var retour = document.getElementById('retour'); + retour.addEventListener('click', () =>{ + window.location.assign ("/Requete.php"); + }); + + ok.disabled = true; + + // Récupère le formulaire de connexion + var formulaire = document.getElementById("connexion"); + if (formulaire == null) return; // Si le formulaire n'existe pas, abandon + + // Récupère le champ password et le test + var password = formulaire.password; + var pseudo = formulaire.pseudo; + + // zone explicative + var explications = this.document.getElementById('explications'); + var divMdp = document.createElement("div"); + var divPseudo = document.createElement("div"); + + explications.appendChild(divMdp); + explications.appendChild(divPseudo); + + + // Envoie le formulaire au serveur + function envoyerForm(){ + // Effectue la requête + const input = { + mode : 'connexion', + pseudo : pseudo.value, + password : password.value + }; + + console.log(input); + + + const xhr = new XMLHttpRequest(); + xhr.open("POST", "/Service.php", true); + xhr.setRequestHeader("Content-Type", "application/json ; charset=UTF-8"); + + // Vérifie si erreur lors de l'envoie du formulaire + xhr.addEventListener("Error", function(event) { + alert("Erreur d'envoi de formulaire de connexion..."); + }); + + // Vérification des résultats + xhr.onreadystatechange = function(){ + if (xhr.readyState === 4 && xhr.status === 200){ + let resultat = JSON.parse(xhr.response); + if (resultat == true){ + ok.disabled = true; + explications.textContent = "Connexion réussie!"; + window.location.assign ("/Requete.php"); + }else{ + explications.textContent = "Connexion a échouée! Vérifier le pseudo et le mot de passe."; + } + } + } + xhr.send(JSON.stringify(input)); + } + + // Vérifie la longueur du pseudo et si il contient des caractères spéciaux + function validPseudo(event){ + var reg = /[ `!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?~]/; + divPseudo.innerHTML = ""; + + if (pseudo.value.length < 3 || reg.test(pseudo.value)){ + pseudo.style.backgroundColor = 'red'; + divPseudo.innerHTML = "<ul> Le pseudo doit faire au moins 3 caractères </ul>"; + return false; + }else{ + pseudo.style.backgroundColor = 'white'; + return true; + } + } + + // Vérifie la longueur du mdp et si il contient bien majuscule, minuscules et nombre + function validPassword(event){ + var majuscule = /[A-Z]/g; + var minuscule = /[a-z]/g; + var nombre = /[0-9]/g; + + divMdp.innerHTML =''; + + if (password.value.length >= 6 && majuscule.test(password.value) && minuscule.test(password.value) && nombre.test(password.value)){ + password.style.backgroundColor = 'white'; + return true; + }else{ + password.style.backgroundColor = 'red'; + divMdp.innerHTML = "<ul>Le mot de passe doit :"; + if (password.value.length < 6) divMdp.innerHTML += "<li>faire plus de 6 caractères </li>"; + if (!majuscule.test(password.value) || (!minuscule.test(password.value))) { + divMdp.innerHTML += "<li>avoir au moins une majuscule et une minuscule </li> </ul>"; + } + if (!nombre.test(password.value)) divMdp.innerHTML += "<li>contenir au moins un chiffre </li>"; + divMdp.innerHTML += '</ul>'; + return false; + } + } + + + formulaire.addEventListener("submit", function (event){ + event.preventDefault(); + envoyerForm(); + + }); + + // active le bouton d'envoi du formulaire ou le bloque et donne des explications + formulaire.addEventListener('keyup', () =>{ + var explications = this.document.getElementById('explications'); + if (validPassword() && validPseudo()){ + explications.innerHTML = ''; + ok.disabled = false; + }else{ + ok.disabled = true; + } + }); + + + // Récupère le champ password et le test + password.addEventListener('keyup', () =>{ + validPassword(); + }); + + // Récupère le champ pseudo et le test + pseudo.addEventListener('keyup', () =>{ + validPseudo(); + }); + +}); \ No newline at end of file diff --git a/inscription.php b/inscription.php new file mode 100644 index 0000000000000000000000000000000000000000..23e47b64ab2eb610fccababeb6337e0a9e59b057 --- /dev/null +++ b/inscription.php @@ -0,0 +1,88 @@ +<?php // Gestion de l'inscription + session_start(); // début session + include "configuration.php"; + +?> + + + +<!DOCTYPE html> +<html lang="fr"> + <head> + <title>Inscription</title> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> + <script type="text/javascript" src="formulaire.js"> </script> + + </head> + + <body> + <?php // Gestion de l'inscription + $mysqli=install_bd(); + + $describe = $mysqli->query('describe Boissons.utilisateurs;'); + if ($describe->num_rows > 0) { + $form = '<h1> Inscription </h1>'; + $form .= '<form method="post" id="inscription">'; + while ($row = $describe->fetch_assoc()) { + if ($row["Field"] != "user_id") { + $form .= "<label for='" . $row["Field"] . "'>"; + switch ($row["Field"]){ + case "nom": + $form.= "Nom : "; + break; + case "prenom": + $form.= "Prénom : "; + break; + case "pseudo": + $form.= "Pseudo : "; + $form .= "</label> <input type='text' required='true' name='" . $row["Field"] . "' > </br>"; + + break; + case "password": + $form.= "Mot de passe : "; + $form .= "</label> <input type='password' required='true' name='" . $row["Field"] . "' > </br>"; + + break; + case "sexe": + $form.= "Sexe : </label>"; + $form .= "<input type='radio' id='Homme' value='h' name='" . $row["Field"] . "' > <label for='Homme'>Homme </label>"; + $form .= "<input type='radio' id='Femme' value='f' name='" . $row["Field"] . "' > <label for='Femme'>Femme </label>"; + $form .= "</br>"; + break; + case "email": + $form.= "E-mail : "; + $form .= "</label> <input type='email' name='" . $row["Field"] . "' > </br>"; + + break; + case "datenaissance": + $form.= "Date de naissance : "; + $form .= "</label> <input type='date' required='false' name='" . $row["Field"] . "' > </br>"; + break; + case "adresse": + $form.= "Adresse : "; + break; + case "codepostal": + $form.= "Code postal : "; + break; + case "ville": + $form.= "Ville : "; + break; + case "numtelephone": + $form.= "Numéro de téléphone : "; + break; + } + if ($row["Field"] != "sexe" && $row["Field"] != "pseudo" && $row["Field"] != "password" && $row["Field"] != "email" && $row["Field"] != "datenaissance"){ + $form .= "</label> <input type='text' name='" . $row["Field"] . "' > </br>"; + } + } + } + } + $form .= "<input type='submit' id='ok' value='Inscription'>"; + $form .= "<input type='button' id='retour' value='Retour'>"; + + $form .= "</br> <div id='explications'> </diw> </br> </form>"; + echo $form; + ?> + + </body> +</html> \ No newline at end of file diff --git a/install.php b/install.php new file mode 100644 index 0000000000000000000000000000000000000000..ea408988f4943d7e95a1018c52ba83db78ca6930 --- /dev/null +++ b/install.php @@ -0,0 +1,165 @@ +<?php // Création d'une base de données + +include "configuration.php"; + +function query($link,$requete) + { + $resultat=mysqli_query($link,$requete) or die("$requete : ".mysqli_error($link)); + return($resultat); + } + +function loadDB(){ + include("Donnees.inc.php"); + $mysqli= install_bd(); + + // Récupération des tableaux pour les insérer dans une base de données + if (isset($Recettes)) { + $tabRecettes = $Recettes; + } + + if (isset($Hierarchie)){ + $tabHierarchie = $Hierarchie; + } + + $cmpt = 0; + $str =""; + + + // Parcours de tous les aliments pour les ajouter à la base de donnée + while (current($tabHierarchie)){ + //echo key($categorie); + $prep = mysqli_real_escape_string($mysqli, key($tabHierarchie)); + $str .= "INSERT INTO aliments(alim_nom) VALUES ('".$prep."'); "; + next($tabHierarchie); + } + + reset($tabHierarchie); + // Parcours des aliments pour les reliés aux sous-catégories + while ($categorie = current($tabHierarchie)){ + $souscat = $categorie['sous-categorie']; + while ($alim = current($souscat)){ + $prep = mysqli_real_escape_string($mysqli, key($tabHierarchie)); + $fils = mysqli_real_escape_string($mysqli, $alim); + $str .= "INSERT INTO hierarchie(super_nom, sous_nom) VALUES ('".$prep."', '".$fils."'); "; + next($souscat); + } + next($tabHierarchie); + } + + $valeur = 1; + + // Parcours des recettes et génération des éléments correspondants dans leurs tables + foreach($tabRecettes as $colonne){ + $titre = mysqli_real_escape_string($mysqli, $colonne['titre']); + $ingred = mysqli_real_escape_string($mysqli, $colonne['ingredients']); + $prep = mysqli_real_escape_string($mysqli, $colonne['preparation']); + if (count($tabRecettes)-1 === $cmpt){ + $str .= "INSERT INTO recettes(titre, ingredients, preparation) VALUES ('{$titre}', '{$ingred}', '{$prep}')"; + }else{ + $str .= "INSERT INTO recettes(titre, ingredients, preparation) VALUES ('{$titre}', '{$ingred}', '{$prep}'); "; + } + + while ($ingred = current($colonne['index'])){ + $prep = mysqli_real_escape_string($mysqli, $ingred); + $str .= "INSERT INTO ingredientsderecettes VALUES (".$cmpt.", '".$valeur."', '".$prep."'); "; + next($colonne['index']); + } + $valeur++; + } + + // Ajout des images à la table des recettes + $tab[] = array ("image" => "Photos/Black_velvet.jpg", "nom" => "Black velvet"); + $tab[] = array ("image" => "Photos/Bloody_mary.jpg", "nom" => "Bloody Mary"); + $tab[] = array ("image" => "Photos/Bora_bora.jpg", "nom" => "Bora bora"); + $tab[] = array ("image" => "Photos/Builder.jpg", "nom" => "Builder"); + $tab[] = array ("image" => "Photos/Caipirinha.jpg", "nom" => "Caïpirinha"); + $tab[] = array ("image" => "Photos/Coconut_kiss.jpg", "nom" => "Coconut kiss"); + $tab[] = array ("image" => "Photos/Cuba_libre.jpg", "nom" => "Cuba libre"); + $tab[] = array ("image" => "Photos/Frosty_lime.jpg", "nom" => "Frosty lime"); + $tab[] = array ("image" => "Photos/Le_vandetta.jpg", "nom" => "Le vandetta"); + $tab[] = array ("image" => "Photos/Margarita.jpg", "nom" => "Margarita"); + $tab[] = array ("image" => "Photos/Mojito.jpg", "nom" => "Mojito"); + $tab[] = array ("image" => "Photos/Pina_colada.jpg", "nom" => "Piña Colada"); + $tab[] = array ("image" => "Photos/Raifortissimo.jpg", "nom" => "Raifortissimo"); + $tab[] = array ("image" => "Photos/Screwdriver.jpg", "nom" => "Screwdriver"); + $tab[] = array ("image" => "Photos/Shoot_up.jpg", "nom" => "Shoot up"); + $tab[] = array ("image" => "Photos/Tequila_sunrise.jpg", "nom" => "Tequila sunrise"); + $tab[] = array ("image" => "Photos/Tipunch.jpg", "nom" => "Ti'punch"); + + for ($cmpt = 0; $cmpt< count($tab); $cmpt++){ + $img = mysqli_real_escape_string($mysqli, $tab[$cmpt]['image']); + $nom = mysqli_real_escape_string($mysqli, $tab[$cmpt]['nom']); + //echo $img.' '.$nom; + $str .= "UPDATE recettes SET photo='{$img}' WHERE titre LIKE '{$nom}'; "; + } + + + $base="Boissons"; + $Sql=" + DROP DATABASE IF EXISTS $base; + CREATE DATABASE $base; + USE $base; + + CREATE TABLE IF NOT EXISTS recettes ( + id INT AUTO_INCREMENT PRIMARY KEY, + titre VARCHAR(255) NOT NULL, + ingredients VARCHAR(1024) NOT NULL, + preparation VARCHAR(4096) NOT NULL, + photo VARCHAR(255) NULL + ); + + CREATE TABLE IF NOT EXISTS utilisateurs ( + user_id INT AUTO_INCREMENT PRIMARY KEY, + nom VARCHAR(255) NULL, + prenom VARCHAR(255) NULL, + sexe VARCHAR(1) NULL, + email VARCHAR(150) NULL, + pseudo VARCHAR(150) NOT NULL UNIQUE, + password VARCHAR(32) NOT NULL, + datenaissance DATE NULL, + adresse VARCHAR(200) NULL, + codepostal VARCHAR(5) NULL, + ville VARCHAR(100) NULL, + numtelephone VARCHAR(12) NULL + ); + + CREATE TABLE IF NOT EXISTS aliments ( + alim_nom VARCHAR(255) PRIMARY KEY + ); + + CREATE TABLE IF NOT EXISTS hierarchie ( + super_nom VARCHAR(225) NOT NULL, + sous_nom VARCHAR(255) NOT NULL, + PRIMARY KEY (super_nom, sous_nom), + FOREIGN KEY (super_nom) REFERENCES aliments(alim_nom), + FOREIGN KEY (sous_nom) REFERENCES aliments(alim_nom) + ); + + CREATE TABLE IF NOT EXISTS ingredientsderecettes ( + id INT AUTO_INCREMENT PRIMARY KEY, + idBoisson INT NOT NULL, + nomIngredient VARCHAR(255) NOT NULL, + FOREIGN KEY (idBoisson) REFERENCES recettes(id), + FOREIGN KEY (nomIngredient) REFERENCES aliments(alim_nom) + ); + + CREATE TABLE IF NOT EXISTS panier ( + commande_id INT AUTO_INCREMENT PRIMARY KEY, + user_id INT NOT NULL, + recette_id INT NOT NULL, + FOREIGN KEY (user_id) REFERENCES utilisateurs(user_id), + FOREIGN KEY (recette_id) REFERENCES recettes(id), + UNIQUE (user_id, recette_id) + ); + ".$str; + + + foreach(explode('; ',$Sql) as $Requete) query($mysqli,$Requete); + mysqli_close($mysqli); +} +loadDB(); + +?> + + + diff --git a/panier.js b/panier.js new file mode 100644 index 0000000000000000000000000000000000000000..02ea04380717fde615e95c0fb1be0e47f4e0733e --- /dev/null +++ b/panier.js @@ -0,0 +1,137 @@ +// Ajoute un formulaire pour ajouter des recettes aux favoris +function ajoutFormulaire(conteneur, parent, recette){ + let formRec = document.createElement('form'); + let field = document.createElement('fieldset'); + field.classList.add('favoris'); + + var cancel = document.createElement('button'); + + + // définition du formulaire + formRec.method = 'POST'; + formRec.name = 'formRecette'; + + // Définition du bouton annuler + cancel.textContent = "Retirer des favoris"; + cancel.name = 'retire'; + cancel.type = 'button'; // Empêche le rechargement de le page + + cancel.addEventListener('click', () => { + + let input = { + panier : 'retirer', + recette_id : recette.id + }; + console.log(input); + + const xhr = new XMLHttpRequest(); + xhr.open("POST", "/Service.php", true); + xhr.setRequestHeader("Content-Type", "application/json ; charset=UTF-8"); + + // Vérification des résultats + xhr.onreadystatechange = function(){ + if (xhr.readyState === 4 && xhr.status === 200){ + //let resultat = JSON.parse(xhr.response); + conteneur.innerHTML = ""; + } + } + xhr.send(JSON.stringify(input)); + }); + + // Mise en page + parent.append(formRec); + formRec.appendChild(field); + field.append(cancel); + parent.append(); +} + + +// Affiche les recettes +function afficheRecettes(recette){ + // Récupère l'élément qui va afficher les recettes + let div = document.getElementById("panierClient"); + + // parcours de toutes les recettes contenu dans l'objet + for (var i = 0; i<recette.length; i++){ + // Création des éléments titre / paragraphe / liste + let conteneur = document.createElement('div'); // Contient les éléments html d'une recette + conteneur.classList.add('recetteSolo'); + let image = document.createElement('img'); // image + let titre = document.createElement('h2'); // titre de niveau 2 + let paragraph = document.createElement('p'); // paragraphe contenant la liste et description + var liste = document.createElement('ul'); // liste + + liste.innerHTML += "Ingrédients :"; + + // Récupération du contenu + titre.textContent = recette[i].titre; + paragraph.textContent = recette[i].preparation; + paragraph.classList.add('preparation'); + + let ingredients = recette[i].ingredients.split("|"); + for (var j = 0; j<ingredients.length; j++){ + liste.innerHTML += "<li>"+ingredients[j]+"</li>"; + } + + const search = recette[i].titre; + // Génère l'objet de requête à envoyer au serveur (traiter par Service.php) : le nom de la recette + const input = { + images : search + }; + // Envoie de la requête + var xhr = new XMLHttpRequest(); + xhr.open('POST', "/Service.php", true); + xhr.onload = () => { + if (xhr.response != null){ + image.src = xhr.responseText; + } + }; + + xhr.send(JSON.stringify(input)); + + // Ajout à la div de recettes + div.append(conteneur); + conteneur.append(titre); + conteneur.append(image); + conteneur.append(paragraph); + paragraph.append(liste); + ajoutFormulaire(conteneur, paragraph, recette[i]); + } +} + +/** + * Affiche les options de catégories + */ + function getPanier(){ + // Récupère la position à laquelle on veut afficher des informations + var zone = document.getElementById("panierClient"); + if (zone != null) zone.innerHTML = ''; + + // Création d'un objet contenant la requêtes + var input = { + panier: 'get' + }; + + // Demande au serveur php (donc à la db) les noms de + const xhr = new XMLHttpRequest(); + xhr.open("POST", "/Service.php", true); + xhr.setRequestHeader("Content-Type", "application/json ; charset=UTF-8"); + + // Vérification des résultats + xhr.onreadystatechange = function(){ + if (xhr.readyState === 4 && xhr.status === 200){ + // Si le retour n'est pas vide, on affiche les titres + if (this.response != null){ + var resultat = JSON.parse(xhr.response); + afficheRecettes(resultat); + console.log(resultat); + } + } + } + xhr.send(JSON.stringify(input)); +} + + + + +window.onload = getPanier(); \ No newline at end of file diff --git a/panier.php b/panier.php new file mode 100644 index 0000000000000000000000000000000000000000..0b42d126159d16fe1d379ea4e74c2717dc1ecdd0 --- /dev/null +++ b/panier.php @@ -0,0 +1,96 @@ +<?php + session_start(); + /* + echo '<pre>'; + var_dump($_SESSION['panier']); + $temp = $_SESSION['panier']; + + for ($i = 0; $i < count($temp); $i++) { + echo $temp[$i]; + } + + $requete = "select id, titre, preparation, ingredients from recettes where "; + for ($i = 0; $i < count($_SESSION['panier']); $i++) { + if ($i < count($_SESSION['panier']) -1){ + $requete .= "id = ". $_SESSION['panier'][$i]." OR "; + }else{ + $requete .= "id = ". $_SESSION['panier'][$i]; + } + } + echo $requete; + echo '</pre>'; + */ + +?> + + +<!DOCTYPE html> +<html lang="fr"> + <head> + <title>Votre panier</title> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> + <script type="text/javascript" src="panier.js"> </script> + <link href="recettes.css" rel="stylesheet"> + + </head> + + <body> + + <?php + + if (isset($_POST['connexion'])){ + header("location:connexion.php"); + } + + if (isset($_POST['inscription'])){ + header("location:inscription.php"); + } + + if (isset($_POST['inscription'])){ + header("location:panier.php"); + } + + if (isset($_POST['home'])){ + header("location:Requete.php"); + } + + + if (isset($_POST['deconnecter'])){ + $_SESSION = array(); + session_destroy(); + header("location:Requete.php"); + } + if (isset($_POST['profil'])){ + header("location:Profil.php"); + } + ?> + + + <div id='authentification'> + <form method="POST" id='authentification'> + <?php + if (isset($_SESSION['pseudo'])){ + $pseudonyme = ucfirst(strtolower($_SESSION['pseudo'])); + echo "<p id='bienvenue'> Bienvenue ".$pseudonyme."</p>"; + echo "<input type='submit' name='deconnecter' value='Déconnexion'/> "; + echo "<input type='submit' name='profil' id='profil' value='Profil'/>"; + //echo "<input type='submit' name='panier' value='Votre panier'/> "; + + }else{ + echo "<input type='submit' name='connexion' value='Connexion'/>"; + echo "<input type='submit' name='inscription' value='Inscription'/>"; + } + echo "<input type='submit' name='home' value='Les recettes'/>"; + + ?> + </form> + </div> + + <h1> Votre panier </h1> + <div id='panierClient'> + + + </div> + + </body> +</html> \ No newline at end of file diff --git a/recettes.css b/recettes.css new file mode 100644 index 0000000000000000000000000000000000000000..9df088ac9ddbd781e550681428dbd1023dd41852 --- /dev/null +++ b/recettes.css @@ -0,0 +1,142 @@ +#recherche{ + display: flex; + justify-content: space-evenly; + width: 50%; + min-width: none; + min-height: 30px; +} + +#panier{ + top: 0; + right :0; + position: fixed; +} + +#header{ + display: flex; + position: fixed; + top:0px; + width: 100%; + min-width: 600px; + height: 100px; + background-color: #c483a6; + +} + +#recettes{ + padding-top: 5%; + width : 90%; + min-width: 400px; + margin: auto; + +} + +img { + max-width: 400px; + height: auto; + width: auto\9; +} + +body{ +background-color: #c483a6; +color: white; + +} + +h2{ +color: #fec4ae; +font-weight: bold; +text-align: center; +} + +img{ +display:block; +margin-left:auto; +margin-right:auto; +border: 2px solid #5e3657; +} + +ul{ +text-align: center; +} + +@keyframes recette { + from {background-color: #c483a6;} + to {background-color: #743d5a;} + from {color: #c483a6;} + to {color: #ffffff;} +} + + +.recetteSolo { + background-color: #743d5a; + animation-name: recette; + animation-duration: 0.4s; + border: 2px solid #422852; +} + +/* Correspont au texte + liste de chaque recette */ +.preparation{ + padding: 50px; +} + +button { + background-color:white; + border-radius:12px; + border: 2px solid black; + transition-duration:0.4s; +} + +input{ +background-color:white; +font-size:16px; +border-radius:12px; +border: 2px solid black; +transition-duration:0.4s; +} + +#requete{ +width: 20%; +min-width:200px; + +} + +input:hover, button:enabled:hover{ +background-color:black; +color:white; +} + +input + input{ +margin-right: 2%; +margin-left: 2%; + +} + +.with { + padding-left: 2px; + padding-right: 2px; + + margin-left: 2px; + margin-right : 2px; + background-color: darkgreen; + border-radius:12px; + border: 2px solid black; + transition-duration:0.4s; +} + +.without { + padding-left: 2px; + padding-right: 2px; + margin-left: 2px; + margin-right : 2px; + background-color: darkred; + border-radius:12px; + border: 2px solid black; +} + +#profil{ + position: fixed; + margin-right:10em; + right:0; + } + diff --git a/recettes.js b/recettes.js new file mode 100644 index 0000000000000000000000000000000000000000..fef45b0ccdd3bfa50bc456fdb56bdbdd88a5357d --- /dev/null +++ b/recettes.js @@ -0,0 +1,256 @@ + +// Ajoute un formulaire pour ajouter des recettes aux favoris +function ajoutFormulaire(parent, recette){ + let formRec = document.createElement('form'); + let field = document.createElement('fieldset'); + field.classList.add('favoris'); + var add = document.createElement('button'); + var cancel = document.createElement('button'); + + + // définition du formulaire + formRec.method = 'POST'; + formRec.name = 'formRecette'; + + // Définition du bouton d'ajout au favoris + add.textContent = "Ajouter aux favoris"; + add.name = 'ajout'; + add.type = 'button'; // Empêche le rechargement de le page + add.addEventListener('click', () => { + + let input = { + panier : 'ajouter', + recette_id : recette.id + }; + console.log(input); + + const xhr = new XMLHttpRequest(); + xhr.open("POST", "/Service.php", true); + xhr.setRequestHeader("Content-Type", "application/json ; charset=UTF-8"); + + // Vérification des résultats + xhr.onreadystatechange = function(){ + if (xhr.readyState === 4 && xhr.status === 200){ + let resultat = xhr.response; + console.log(resultat); + cancel.disabled = false; + add.disabled = true; + } + } + xhr.send(JSON.stringify(input)); + }) + + // Définition du bouton annuler + cancel.textContent = "Retirer des favoris"; + cancel.name = 'retire'; + cancel.type = 'button'; // Empêche le rechargement de le page + cancel.disabled = true; + + cancel.addEventListener('click', () => { + + let input = { + panier : 'retirer', + recette_id : recette.id + }; + console.log(input); + + const xhr = new XMLHttpRequest(); + xhr.open("POST", "/Service.php", true); + xhr.setRequestHeader("Content-Type", "application/json ; charset=UTF-8"); + + // Vérification des résultats + xhr.onreadystatechange = function(){ + if (xhr.readyState === 4 && xhr.status === 200){ + cancel.disabled = true; + add.disabled = false; + } + } + xhr.send(JSON.stringify(input)); + }); + + + + // Mise en page + parent.append(formRec); + formRec.appendChild(field); + field.append(add); + field.append(cancel); + parent.append(); + + +} + + +// Affiche les recettes +function afficheRecettes(recette){ + // Récupère l'élément qui va afficher les recettes + let div = document.getElementById("recettes"); + + // parcours de toutes les recettes contenu dans l'objet + for (var i = 0; i<recette.length; i++){ + // Supprime les éléments déjà existants avec le même nom + let existe = document.getElementById(recette[i].id); + if (existe == null){ + //existe.parentNode.removeChild(existe); + + + + // Création des éléments titre / paragraphe / liste + let conteneur = document.createElement('div'); // Contient les éléments html d'une recette + conteneur.classList.add('recetteSolo'); + conteneur.id = recette[i].id; + let titre = document.createElement('h2'); // titre de niveau 2 + let paragraph = document.createElement('p'); // paragraphe contenant la liste et description + var liste = document.createElement('ul'); // liste + + liste.innerHTML += "Ingrédients :"; + + // Récupération du contenu + titre.textContent = recette[i].titre; + paragraph.textContent = recette[i].preparation; + paragraph.classList.add('preparation'); + + let ingredients = recette[i].ingredients.split("|"); + for (var j = 0; j<ingredients.length; j++){ + liste.innerHTML += "<li>"+ingredients[j]+"</li>"; + } + + /* + const search = recette[i].titre; + // Génère l'objet de requête à envoyer au serveur (traiter par Service.php) : le nom de la recette + const input = { + images : search + }; + // Envoie de la requête + var xhr = new XMLHttpRequest(); + xhr.open('POST', "/Service.php", true); + xhr.onload = () => { + if (xhr.response != null){ + image.src = xhr.responseText; + } + }; + + xhr.send(JSON.stringify(input)); + */ + // Ajout à la div de recettes + div.append(conteneur); + conteneur.append(titre); + if (recette[i].photo != null){ + let image = document.createElement('img'); // image + image.src = recette[i].photo; + conteneur.append(image); + + } + conteneur.append(paragraph); + paragraph.append(liste); + ajoutFormulaire(paragraph, recette[i]); + } + } + +} + + +/** + * Génère options à partir des résultats de la table hiérarchie + * @param {} res + */ + function genereOptions(res){ + // Ajoute les options + var select = document.getElementById('categorie'); + var recettes = document.getElementById('recettes'); + recettes.innerHTML = ""; + select.innerHTML = ""; + + //console.log(res); + for (const objet of res){ + var opt = document.createElement("option"); + opt.textContent = objet.sous_nom; + opt.value = objet.sous_nom; + select.appendChild(opt); + + // Effectue la requête + const input = { + recettes: objet.sous_nom + }; + + const xhr = new XMLHttpRequest(); + xhr.open("POST", "/Service.php", true); + xhr.setRequestHeader("Content-Type", "application/json ; charset=UTF-8"); + + // Vérification des résultats + xhr.onreadystatechange = function(){ + if (xhr.readyState === 4 && xhr.status === 200){ + // Si le retour n'est pas vide, on affiche les titres + if (this.response != null){ + const recipes = JSON.parse(xhr.response); + if (recipes.length > 0){ // On ignore au moins + afficheRecettes(recipes); + } + } + } + } + xhr.send(JSON.stringify(input)); + } +} + + + + +/** + * Affiche les options de catégories + */ + function optionsCategorie(){ + // Empeche le rechargement de la page quand on valide + document.getElementById("form").addEventListener("submit", function (e) { + e.preventDefault(); + return false; + }); + + // Récupère la position à laquelle on veut afficher des informations + + var zone = document.getElementById("categorie"); + var infos = document.getElementById("infos"); + + // Création d'un objet contenant la requêtes + var val = zone.value; + infos.innerHTML += " > " + val; + var input = { + hierarchie: val + }; + + // Demande au serveur php (donc à la db) les noms de + const xhr = new XMLHttpRequest(); + xhr.open("POST", "/Service.php", true); + xhr.setRequestHeader("Content-Type", "application/json ; charset=UTF-8"); + + // Vérification des résultats + xhr.onreadystatechange = function(){ + if (xhr.readyState === 4 && xhr.status === 200){ + // Si le retour n'est pas vide, on affiche les titres + if (this.response != null){ + var resultat = JSON.parse(xhr.response); + genereOptions(resultat); + } + } + } + xhr.send(JSON.stringify(input)); +} + +// Permet de recharger le contenu de la page sans recharger la page +function remettreAZero(){ + document.getElementById("recettes").innerHTML = ""; + document.getElementById("infos").innerHTML = ""; + var select = document.getElementById("categorie"); + console.log(select.value); + select.innerHTML = ""; + var opt, opt2; + opt = document.createElement("option"); + opt2 = document.createElement("option"); + + opt.textContent = ''; + opt.value = 'Aliment'; + opt2.textContent = 'Aliment'; + opt2.value = 'Aliment'; + select.appendChild(opt); + select.appendChild(opt2); +} diff --git a/suggestion.js b/suggestion.js new file mode 100644 index 0000000000000000000000000000000000000000..820a2ebbcfe4e5fcf7f4c9abfbd185227aba88ce --- /dev/null +++ b/suggestion.js @@ -0,0 +1,175 @@ +var recherche = { + filtre : 'filtre', + avec: [], + sans: [] +}; + + +/** + * affiche les suggestions de complétions d'ingrédients + * @param {} res + */ +function genereSuggestions(res){ + // Création dataliste + var list = document.createElement('datalist'); + list.id = 'listeNoms'; + + // Liaison avec la textbox + var textbox = document.getElementById('requete'); + console.log(list); + + // remplissage de la liste + if (res.length > 0){ + for (const objet of res){ + var opt = document.createElement("option"); + opt.textContent = objet.sous_nom; + opt.value = objet.sous_nom; + list.appendChild(opt); + } + // Ajout de la liste à la textbox + textbox.appendChild(list); + } +} + + +/** + * Affiche une liste d'ingrédients + */ + function afficherSuggestions(){ + // Empeche le rechargement de la page quand on valide + document.getElementById("form").addEventListener("submit", function (e) { + e.preventDefault(); + return false; + }); + + + // Création d'un objet contenant la requêtes + var input = { + requete: document.getElementById("requete").value + }; + console.log(input); + + // Demande au serveur php (donc à la db) les noms de + const xhr = new XMLHttpRequest(); + xhr.open("POST", "Service.php", true); + xhr.setRequestHeader("Content-Type", "application/json ; charset=UTF-8"); + + // Vérification des résultats + xhr.onreadystatechange = function(){ + if (xhr.readyState === 4 && xhr.status === 200){ + // Si le retour n'est pas vide, on affiche les titres + if (this.response != null){ + var resultat = JSON.parse(xhr.response); + console.log(resultat); + genereSuggestions(resultat); + } + } + } + xhr.send(JSON.stringify(input)); +} + +/** + * Inclure des ingrédients dans la recherche + */ +function inclureIngredient(){ + var barre = document.getElementById('requete'); + var filtre = document.getElementById('filtre'); + + + if (!recherche.avec.includes(barre.value) && barre.value != ''){ + recherche.avec.push(barre.value); + + if (recherche.avec.includes(barre.value)){ + let i = recherche.sans.indexOf(barre.value); + recherche.sans = recherche.avec.splice(0, i); + } + } + filtre.disabled = !(recherche.avec.length > 0 || recherche.sans.length > 0); + updateTags(); + +} + +/** + * Exclure des ingrédients de la recherche + */ +function exclureIngredient(){ + var barre = document.getElementById('requete'); + var filtre = document.getElementById('filtre'); + + if (!recherche.sans.includes(barre.value) && barre.value != ''){ + recherche.sans.push(barre.value); + + if (recherche.avec.includes(barre.value)){ + let i = recherche.avec.indexOf(barre.value); + recherche.avec = recherche.avec.splice(0, i); + } + } + filtre.disabled = !(recherche.avec.length > 0 || recherche.sans.length > 0); + updateTags(); + +} + + +function updateTags(){ + // Ajout des tags de recherches + // Ajout des tags de recherches + let tags = document.getElementById('tagIn'); + tags.innerHTML = ''; + if (recherche.avec.length > 0){ + let tag = document.createElement('ul'); + tags.append(tag); + let cmpt = 1; + recherche.avec.forEach(element => { + let puce = document.createElement('il'); + puce.classList.add('with'); + puce.textContent = element; + tag.append(puce); + puce.addEventListener('click', () =>{ + recherche.avec = recherche.avec.splice(1, cmpt); + puce.parentNode.removeChild(puce); + }) + cmpt++; + }); + } + let tagOut = document.getElementById('tagOut'); + tagOut.innerHTML = ''; + if (recherche.sans.length > 0){ + let tag = document.createElement('ul'); + tagOut.append(tag); + let cmpt = 1; + recherche.sans.forEach(element => { + let puce = document.createElement('il'); + puce.classList.add('without'); + puce.textContent = element; + tag.append(puce); + puce.addEventListener('click', () =>{ + recherche.sans = recherche.sans.splice(1, cmpt); + puce.parentNode.removeChild(puce); + }) + cmpt++; + }); + } +} + +/** + * Effectue recherche a partir des filtres + */ +function rechercheFiltres(){ + const xhr = new XMLHttpRequest(); + xhr.open("POST", "Service.php", true); + xhr.setRequestHeader("Content-Type", "application/json ; charset=UTF-8"); + console.log(recherche); + + // Vérification des résultats + xhr.onreadystatechange = function(){ + if (xhr.readyState === 4 && xhr.status === 200){ + // Si le retour n'est pas vide, on affiche les titres + if (this.response != null){ + var resultat = JSON.parse(xhr.response); + console.log(resultat); + } + } + } + xhr.send(JSON.stringify(recherche)); + +} \ No newline at end of file diff --git a/texte.php b/texte.php new file mode 100644 index 0000000000000000000000000000000000000000..26dd0a905e0a75c19d71f4dd1e32c6b8681adf50 --- /dev/null +++ b/texte.php @@ -0,0 +1,42 @@ +<?php +include "Donnees.inc.php"; +echo "<pre>"; + +// Parcours de la hiérarchie +foreach ($Hierarchie as $item=>$val){ + echo $item; // niveau actuel + echo '</br>'; + + foreach($val as $key=>$elem){ // niveau des sous-sup cat + echo $key; + echo '</br>'; + foreach($elem as $k=>$v){ // niveau d'exploration des sous-cat' + echo $v; + echo '</br>'; + } + } + + echo '</br>'; + echo '</br>'; + +} + + +/* +foreach ($Recettes as $item){ + echo $item['titre']; + echo '</br>'; + foreach ($item['index'] as $elem){ + echo $elem; + echo '</br>'; + + + } + echo '</br>'; + echo '</br>'; +} +*/ + + +echo "</pre>" +?> \ No newline at end of file