Mes courses 0.1 - liste de courses avancée

Description

Voici un module de gestion des listes de courses.

Il gère les menus que vous avez prévus pour la semaine ou le mois, et génère automatiquement la liste en fonction des recettes que vous avez créées et du nombre de personnes. Il tient compte des quantités dont vous disposez déjà et n'ajoute à la liste que les quantités nécessaires.

Le script vous propose même des recettes en fonction de ce qu'il y a dans votre frigo, et ajoute tout seul les ingrédients manquants.

La liste s'imprime en fonction de l'ordre des rayons du supermarché (fini les aller-retour au premier rayon pour aller chercher le dernier item de la liste ! ;o) )

Source / Exemple :


/*
Structure de la base MySQL :
 
-- 
-- Structure de la table `Conditionnement`
-- 
 
CREATE TABLE IF NOT EXISTS `Conditionnement` (
`id_conditionnement` tinyint(4) NOT NULL auto_increment,
`nom_conditionnement` varchar(20) collate latin1_german2_ci NOT NULL,
`quantite` float(5,2) NOT NULL default '1.00',
`unite` varchar(20) collate latin1_german2_ci NOT NULL,
PRIMARY KEY (`id_conditionnement`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german2_ci;
 
-- --------------------------------------------------------
 
-- 
-- Structure de la table `Cuisine`
-- 
 
CREATE TABLE IF NOT EXISTS `Cuisine` (
`id_recette` int(11) NOT NULL,
`id_ingredient` int(11) NOT NULL,
`quantite` float(4,2) NOT NULL default '1.00',
PRIMARY KEY (`id_recette`,`id_ingredient`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german2_ci;
 
-- --------------------------------------------------------
 
-- 
-- Structure de la table `Genre`
-- 
 
CREATE TABLE IF NOT EXISTS `Genre` (
`id_genre` tinyint(4) NOT NULL auto_increment,
`nom_genre` varchar(20) collate latin1_german2_ci NOT NULL,
PRIMARY KEY (`id_genre`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german2_ci;
 
-- --------------------------------------------------------
 
-- 
-- Structure de la table `Ingredient`
-- 
 
CREATE TABLE IF NOT EXISTS `Ingredient` (
`id_ingredient` int(11) NOT NULL auto_increment,
`nom_ingredient` varchar(30) collate latin1_german2_ci NOT NULL,
`type_ingredient` int(11) NOT NULL,
`conditionnement` tinyint(4) NOT NULL,
PRIMARY KEY (`id_ingredient`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german2_ci;
 
-- --------------------------------------------------------
 
-- 
-- Structure de la table `Liste`
-- 
 
CREATE TABLE IF NOT EXISTS `Liste` (
`id_ingredient` int(11) NOT NULL,
`quantite` tinyint(4) NOT NULL,
PRIMARY KEY (`id_ingredient`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german2_ci;
 
-- --------------------------------------------------------
 
-- 
-- Structure de la table `Menu`
-- 
 
CREATE TABLE IF NOT EXISTS `Menu` (
`date_menu` date NOT NULL,
`repas` tinyint(4) NOT NULL,
`plat` tinyint(4) NOT NULL,
`id_recette` int(11) NOT NULL,
`nb_pers` tinyint(4) NOT NULL,
PRIMARY KEY (`date_menu`,`repas`,`plat`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german2_ci;
 
-- --------------------------------------------------------
 
-- 
-- Structure de la table `Recette`
-- 
 
CREATE TABLE IF NOT EXISTS `Recette` (
`id_recette` int(11) NOT NULL auto_increment,
`nom_recette` varchar(50) collate latin1_german2_ci NOT NULL,
`genre_recette` tinyint(4) NOT NULL,
PRIMARY KEY (`id_recette`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german2_ci;
 
-- --------------------------------------------------------
 
-- 
-- Structure de la table `Stock`
-- 
 
CREATE TABLE IF NOT EXISTS `Stock` (
`id_ingredient` int(11) NOT NULL,
`quantite` float(6,2) NOT NULL,
PRIMARY KEY (`id_ingredient`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german2_ci;
 
-- --------------------------------------------------------
 
-- 
-- Structure de la table `Type`
-- 
 
CREATE TABLE IF NOT EXISTS `Type` (
`id_type` int(11) NOT NULL auto_increment,
`nom_type` varchar(20) collate latin1_german2_ci NOT NULL,
`rayon` tinyint(4) NOT NULL default '0',
PRIMARY KEY (`id_type`),
KEY `rayon` (`rayon`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german2_ci;

  • /

Conclusion :


Tout ce que vous avez à faire, c'est créer les tables dans une base MySQL et renseigner le fichier connexion.php pour indiquer vos paramètres de connexion MySQL.

Par défaut, l'application considère que vous vivez à deux et faites les courses toutes les semaines. Vous pouvez changer ces paramètres en éditant le fichier config.php.

J'ai essayé de rendre tout ça aussi intuitif que possible, j'espère que ça ne vous paraîtra pas trop tordu...

Si nécessaire, les grandes lignes de l'utilisation sont expliquées dans le fichier lisez-moi.htm.

BUGS CONNUS :
1) Mise à jour des quantités lors de la génération automatique
Si un article a été ajouté manuellement à la liste et doit être augmenté par la génération automatique, la quantité "manuelle" est écrasée par la quantité calculée.
C'est un problème sur lequel je travaille. Pour l'instant, je vous conseille de commencer par la génération automatique, et de modifier ENSUITE les quantités.

2)Modification des menus et mise à jour de la liste
Si vous avez sélectionné une recette dans le planning des menus et que vous avez généré la liste automatique, les ingrédients requis sont ajoutés à la liste.
Si vous changez d'avis et modifiez les menus, les ingrédients ne seront pas retirés de la liste automatiquement.


Tous les commentaires concernant le code ou l'ergonomie sont les bienvenus !

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.