Mes courses 0.1 - liste de courses avancée

Soyez le premier à donner votre avis sur cette source.

Vue 44 696 fois - Téléchargée 2 272 fois

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

Ajouter un commentaire Commentaires
J'étais super content de trouver enfin un site qui me convenait (et que mon épouse attend avec impatience). cependant, je n'arrive pas à convertir le code en PHP 7.2 :-( :-( Au secouououours !!!!
Messages postés
46
Date d'inscription
samedi 22 mars 2003
Statut
Membre
Dernière intervention
2 mai 2011

Apply sympa 10/10
Messages postés
1
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
8 novembre 2007

J'aimerai vraiment utiliser cette source mais j'ai un problème avec les tables (même en important matable.sql)
Elle m'intéresse beaucoup alors aidez-moi

Merci,
Alex
Messages postés
171
Date d'inscription
jeudi 15 avril 2004
Statut
Membre
Dernière intervention
18 juillet 2007

Bonjour,


Il est impossible d'installer cette application avec le fichier Install ou manuellement si vous avez une solution merci a vous


Cordialement,
Messages postés
371
Date d'inscription
samedi 1 juin 2002
Statut
Membre
Dernière intervention
17 juin 2013

Après moultes modif du genre '<?' => '<?php' ou '<?=' => '<?php echo' parce qu'en php5 ca ne passe pas autrement (en tous cas sur mon serveur) je dois dire qu'il y a un vrai travail d'orfevre et rien que pour cela j'ai mis 10 en espérant voir prochainement une mise à jour qui corrige tous ces petits riens qui nous rendent la vie pénible...

Bonne prog à tous,
@+ JLN
Afficher les 46 commentaires

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.