Signaler

Comment faire un compteur/calculateur à plusieurs résultats?

Posez votre question zguguy - Dernière réponse le 18 mars 2017 à 17:13 par zguguy
Bonjour,





Je n'ai pas les termes techniques du webmaster étant autodidacte mais je cherche à réaliser pour mon site un petit programme permettant de copier/coller une recette de cuisine (inventée ou trouvée sur le web) afin de décortiquer les aliments automatiquement et les classer selon des catégories spécifiques.

En gros, je veux faire ça, à ma sauce: http://www.monmenu.fr/s/calculer-calories.html


J'ai déjà extrait le code source qui m'intéresse avec un exemple :

<textarea id="content"
        name="content" rows="15" class="w100 mod"
        style="vertical-align: middle;" />5 pommes de terre à chair ferme 
225 g de petits pois frais 
1 boîte de maïs 
3 carottes 
6 saucisses de Francfort 
2 tranches de jambon</textarea>
        <br/>

       <strong>2.</strong> Précisez les portions :
       <select name="portions" id="portions" >
        <option id="1" value="1">1</option>
        <option id="2" value="2">2</option>
        <option id="3" value="3">3</option>
        <option id="4" value="4">4</option>
        <option id="5" value="5">5</option>
        <option id="6" value="6">6</option>
        <option id="7" value="7">7</option>
        <option id="8" value="8">8</option>
        <option id="9" value="9">9</option>
        <option id="10" value="10">10</option>
        <option id="11" value="11">11</option>
        <option id="12" value="12">12</option>       
       </select>
        <br/><br/>


      </div>


     <div class="mod">
      <form id="caloriesForm"  method="post"
        action="calculer-calories.html">
        <input type="hidden" id="hiddenContent" name="content" />    
        <input type="hidden" id="hiddenPortions" name="portions" />

       <input type="image" class="center ml2" src=""quot;"quot;"quot;http://static.monmenu.fr/s/img/calculer-calories.png" alt="calculator calorie, calcul calorique" onclick='fillContent();'>
      </form>    




      <h2>Valeur calorique  </h2>
      <div style="min-height:250px;padding:5px;">

       <a class="displayInline" style="margin-left:20px;" href="" > <img class="center" src=""quot;"quot;"quot;http://static.monmenu.fr/s/img/couper-blog.png"/></a><br/><br/>
       <div id="">

       <ul id="split" style="margin-left:30px;">
        <li id="kcal"><h3>Kcal</h3>
        <div >
         821 
        </div>
        </li>
        <li id="ig"><h3>IG</h3>
        <div >
         35 
        </div>
        </li>
        <li id="proteine"><h3>Protéines</h3>

        <div >
         33 gr
        </div>
        </li>
        <li id="lipide"><h3>Lipides</h3>
        <div >
         46 gr
        </div>

        </li>
        <li id="glucide" ><h3>Glucides</h3>

        <div >
         69 gr
        </div>
        </li>
        <li id="portion">
         <h3>Portions</h3>
         <div>
          1 x 749 gr
         </div>
        </li>
       </ul>

        <p style='clear:both; margin-left: 20px;text-align:left; font-size:12px;font-family:"Lucida Grande","Lucida Sans Unicode","Trebuchet MS",Verdana,Helvetica,sans-serif; '>
        <b>Les ingrédients:</b><br/><br/>       
         6.0     <a style="text-decoration:none;color:#675437;" href="http://www.monmenu.fr/s/aliments/Saucisse-de-Francfort-6520859" rel="nofollow noopener noreferrer" target="_blank">Saucisse de Francfort</a> <span style="font-size:10px;">452Kcal</span><br/>5.0     <a style="text-decoration:none;color:#675437;" href="http://www.monmenu.fr/s/aliments/Pommes-de-terre-425993" rel="nofollow noopener noreferrer" target="_blank">Pommes de terre</a> <span style="font-size:10px;">-4Kcal</span><br/>2.0     <a style="text-decoration:none;color:#675437;" href="http://www.monmenu.fr/s/aliments/Tranche-pain-de-mie-1998901" rel="nofollow noopener noreferrer" target="_blank">Tranche pain de mie</a> <span style="font-size:10px;">194Kcal</span><br/>3.0     <a style="text-decoration:none;color:#675437;" href="http://www.monmenu.fr/s/aliments/Carotte-360453" rel="nofollow noopener noreferrer" target="_blank">Carotte</a> <span style="font-size:10px;">79Kcal</span><br/>225.0  gr  <a style="text-decoration:none;color:#675437;" href="http://www.monmenu.fr/s/aliments/Petits-pois-carottes-2588715" rel="nofollow noopener noreferrer" target="_blank">Petits pois carottes</a> <span style="font-size:10px;">105Kcal</span><br/>1.0     <a style="text-decoration:none;color:#675437;" href="http://www.monmenu.fr/s/aliments/Fecule-de-mais-7635228" rel="nofollow noopener noreferrer" target="_blank">Fécule de maïs</a> <span style="font-size:10px;">-4Kcal</span><br/>
        </p>

       </div>






       <br/>
      </div> 


Maintenant j'aimerai que l'on m'aiguille car mes compétences s'arrêtent ici.
Comment réaliser ma base de donnée permettant la reconnaissance automatique des ingrédients copier dans le cadre texte?
Comment créer un calcul spécifique pour certain ingrédient?
Comment cumuler et classer les autres ingrédients?

Si une âme charitable pouvait m'aider à comprendre le fonctionnement de ce calculateur et me permettre de réaliser le mien, je lui en serai reconnaissant :)

Merci d'avance,
Hugues
Utile
+1
plus moins
Salut,
HTML est un langage de description et présentation. Il est complété par CSS pour "styler"(ajouter/modifier des paramètres) et ainsi donner l'apparence que l'on veux à la page.
IL EST IMPORTANT POUR LES PAGES WEB DE BIEN FAIRE LA Différence ENTRE LE CONTENU ET LA Présentation! et de les séparer dans leur création comme utilisation (même s'ils ne serons pas séparés pour le résultat final: ce qui s'affiche dans le navigateur).

C'est le prioncipe des pages dynamiques.

Pour répondre précisément à vos questions:
faire des calculs est impossible par HTML puisque cela décrit uniquement les contenus de la page(c'est ce quo'n appelle une page statique si uniquement HTML).

La programmation seule permet de manipuler des données(informations en informatique). Les opérations arithmétiques sont à la base de la programmation avec les mathématiques booléennes(plus simple encore que 1+1=2 car en base 2 il n'y a que 0 et 1 comme valeurs(équivalent l'humain pour vrai/faux) ). C'est par exeemple le cas de javascript qui permets d'effectuer des calculs mathématiques sur l'ordinateur de l'utilisateur.

"Comment réaliser ma base de donnée permettant la reconnaissance automatique des ingrédients copier dans le cadre texte? "

Justement créez la base de données elle a des outils(un langage complet) pour trier, filtrer ou faire des opérations mathématiques. Cependant une base de données ne peut jamais être accessible directement par la page web pour des raisons de sécuroté.
Elle est donc accessible par un programme s'effectuant sur le serveur et écris avec le langage PHP(par exemple).


Si vos cherchez à être aiguillés:
apprenez la programmation(n'importe quel langage fonctionne de la même façon en gros, leur écriture/syntaxe diffère ainsi que leur champ d'application).

LE principe des pages dynamiques est décrit ici:
http://www.commentcamarche.net/contents/221-reseaux-architecture-client-serveur-a-3-niveaux

Les bases de données utilise le langage SQL avec des variantes selon le SGBD choisit. C'est un langage assez intuitif et simple(environ 500 instructions utiles simplement pour tout faire).

Il existe des cours gratuit (autodidaxie) qui permettent d'apprendre soit l'une ou l'autre des technologies soit l'ensemble et son fonctionnement global.
Cette réponse vous a-t-elle aidé ?  
Donnez votre avis
Utile
+0
plus moins
Merci pour cette réponse très détaillée :)

Alors, en effet, je ne l'avais pas précisé mais mon site est déjà en php et je connais la différence entre les pages dynamiques et le html :)

Je connais aussi le java et même si je ne le maitrise pas à 100%, je suis quasi sûr qu'il serait trop lourd et compliqué de réaliser mon calculateur, nan?
En revanche, là où mes connaissances s'arrêtent c'est pour le SQL server :/

Je me doutais que la piste mènerait par là mais j'avoue avoir du mal à assimiler le fonctionnement de celui-ci par rapport au PHP. Au plutôt, comment communique-t-il entre eux? Quelles sont les codes? ....
Est-ce que vous auriez des liens utiles à ma requêtes dans ce sens?

Car c'est mon manque de vocabulaire technique qui m'empêche de trouver les bonnes pages pour mon problème.

D'avance, merci beaucoup pour votre aide.

Hugues
sowaoeri- 25 janv. 2017 à 17:54
Java n'est pas JavaScript!!! rien à voir.
SQL server pourquoi? SQL est un langage de bases de données(avec ses variantes pour chaque base), SQL Server une base de données commerciale(payante) donc attention aussi à l'amalgame.

Utilisez plutôt une base de données gratuite comme la plus connu MySQL(qui utilise le langage de base de données SQL).

quelques définitions sur les bases de données:
avant tout on ait quoi et pourquoi:
http://www.commentcamarche.net/contents/1083-systeme-d-information
comment:
https://www.google.fr/search?q=SQ
ça ressemble à ça aussi :
https://www.google.fr/search?q=merise+MCD
où ça(même chose, précédemment le concept transformant les besoins en outils informatiques en dessous leur visualisation technique):
https://fr.wikipedia.org/wiki/Table_(base_de_donn%C3%A9es)


Je pense que vous n'avez pas bien compris le principe des pages dynamiques.
En tout cas ce qui importe et va être le noyau du site ce n'est pas la présentation (HTML), au contraire la rendre indépendant est un plus.

D'où mes pistes: apprenez, les cours ne manquent pas mais c'est plusieurs années de cours et pratique(au moins une) avant d'arriver à quelque chose de professionnel.
Sinon vous avez les C.M.S. qui sont des modèles comportant les 3 parties

Ce principe vulgairement:

Une page est demandé par l'utilisateur.
Le préprocesseur(langage serveur) écrit dans la page demandée avant qu'elle soit envoyée le contenu à y afficher, pour ça le programme(PHP, ASP, etc...) fait appel à la base de données en indiquant la requête, c'est à dire ce dnt nous avons besoin.

Un exemple concret bien que sommaire:

Une base possède une table contenant la liste de tous les ingrédients, le noms des recettes.(en conception c'est faux puisque qu'on pourrais avoir le même ingrédient pour plusieurs recettes donc correspond à 2 tables différentes pour ne pas encombrer de doublons qui provoquent des erreurs et alourdissent la programmation à faire).
Une page d'accueil HTML est créée , elle doit afficher toutes les recettes.
Donc la page HTML(présentation ) deviens une page PHP(le HTML ne change pas on ajoute du PHP et/où PHP peut générer le HTML encore plus simplement).
Le but de PHP est de remplir les zones dynamiques: Ici une liste des recttes réportoriées par la base.

Donc : lorsque une page est demandée(http)
PHP va chercher la liste de toutes les recettes, les transmets à la page.

^Même chose si une recette est ajoutée:
La page HTML via un formulaire envoie la nouvelle recette au programme serveur(PHP ou autre). Le programme fait la liaison et indique à la base d'enregistrer la nouvelle recette, les ingrédients qui la composent, son nom, etc... et toutes les autres informations nécessaire au système d'information((dont celui modélisé d'après l'idée et les besoins , ex: un cahier des charges, un document indiquant les recettes, il y a une étape de tri et d'extrapolation des types d'informations/données à retenir avant tout, puis un tri, puis les classer, regrouper).
Ainsi la même structure d'affichage(HTML/CSS) est utilisé comme container vide et corespondra à des pages différentes selon qu'il y a 2 recettes ou 500 enregistrées. Idem pour chaque recrtte: Il n'y a pas une page pour chaque recette ais la même page pour toutes les recettes, tant mieux cela évites d'avoir à faire 500 pages HTML/CSS s'il y a 500 recettes.


J'espère que vous aurez compris mes exemples et explications.

Pour votre système d'information si vous voulez obtenir un total(ex: poids total, durée totale) il faudra simplement additionner les différentes étapes/ingrédients donc que la base retienne le poids de ceux ci et la durée de chaque étape.
Ceci est le rôle du programme serveur.
Quand à l'addition la programmation n'a pas réinvinté l'arithmétique et l'utilise c'est simplement le symbole "+"
Donc
<html>

/*--les variables (commençant par "$")sont les valeurs obtenues par la requête à la base, ici je suppose que cela à été fait préalablement pour ne pas écrire trop de code*/
<h3>Liste des ingrédients et leur poids, entre guillemets simples(apostrophes) sont de simples indications textuelles</h3>
<ul>
<li>
<?php
echo ($ingredient1nom+'  quantité: '+i$ngredient1poids+' gr');
?>
</li>
<li>
<?php
echo ($ingredient2nom+'  quantité: '+i$ngredient2poids+' gr');
?>
</li>
<ul>

<p>
Total du poids des ingrédients=
<?php
$total_ingredients1et2=$ingredient1poids+$ingredients2poids;
echo $total;
?>
</p>

<!-- ps: echo est la fonctin la plus utile de PHP, elle signifie écris moi cela, cela peut être une valeur venue de la base ou du HTML ou n'importe quel texte voulu comme du CSS).


Heureusement la récursivité en programmation permet de simplifier cela et d'avoir le même code qu'il y ait un ou 100 ingrédients(on compte le nombre d'ingrédients total et on répète plusieurs fois l'affichage de la même ligne en pointant sur les 'n' ingrédients comptés).
ex: while, for if ou autre boucle ou instruction conditionnelle.
Répondre
Donnez votre avis
Utile
+0
plus moins
Super :)

Oui, je mélange tous les noms (c'est déjà la cas pour les prénoms de mes collègues alors imaginez avec des acronymes qui ont tous la même base XD )

Je vais me faire une bonne lecture de tout ça, histoire de m'en imprégner pour éviter de foncer dans le mur :)

J'imagine bien qu'il faille plusieurs années pour assimiler ce genre de code et réaliser ce type de programme mais ça ne me fait pas peur. J'aime relever des défis fous :)

Mais déjà ton code, à une bonne base de ce que je souhaiterai reproduire. Je pourrais m'en inspirer :)
Faut juste que j'assimile comment réaliser mes listes d'ingrédient dans ma base de donnée SQL :)

Je ne met pas tout de suite "résolu" si jamais j'ai une autre question en rapport ou un problème technique.

Mais un grand merci pour votre patience et vos explications détaillées :)

Hugues
Donnez votre avis
Utile
+0
plus moins
Alors, je comprends bien la logique et le fonctionnement du SQL associé au PHP!

On écrit dans le fichier mySQL toutes les données notamment pour moi tous les noms de légumes, fruits, viande, poissons, fruits de mer et matière grasse. (travail colossal mais ça ne me fait pas peur)

Puis dans le php, on écrit les lignes de calcul avec les différentes variantes afin d'appeler les noms taper par l'utilisateur directement dans la base de donnée.

Ça je l'avais à peu près assimilé mais maintenant grâce à vos liens c'est beaucoup plus clair.
Donnez votre avis
Utile
+0
plus moins
Ce que je ne comprend pas, c'est la conception du langage SQL pour mon cas....

Donc, pour qu'on aille dans la même direction, je vais vous expliquer vite fait mon projet qui est tout à fait basique:

Je souhaite classer et additionner les aliments que les utilisateurs mettront dans une case "texte area" prévu à cette effet. Les aliments seront donc triés en 6 catégories:

-Protéines (Viandes/poissons/oeufs/tofu)
-Légumes
-Fruits
-Féculents
-Matière Grasse
-Et une 6e catégorie qui demandera un calcul spécifique (mais je verrai ça après)
Donnez votre avis
Utile
+0
plus moins
Je donne un exemple:

Si l'utilisateur copie ça et indique que c'est pour 6 personnes:

5 pommes de terre à chair ferme 
225 g de petits pois frais
420gr de maïs
3 carottes
6 saucisses de Francfort
3 tranches de jambon


Ma base de donnée devra interpréter ceci grâce à tout ce que j'aurai écrit:

5 pommes de terre (environ 100gr chacune)= 500gr de féculents
6 saucisses de Francfort (environ 70gr chacune) = 420gr de protéines
3 tranches de jambon (environ 40gr chacune) = 120gr de protéines.
3 carottes (environ 120gr chacune) = 360gr de légumes

Ainsi, voici ce qui devra s'afficher pour l'utilisateur:

Résultat par personne (donc ici divisé par 6):

Féculents: 190gr
Protéine: 90gr
Légumes: 60gr
Fruits: 0gr
Matière Grasse: 0gr

Bien évidemment, il faudra que j'inscrive dans ma base de donnée les différentes unités de mesure (gr, kg, ml, cl, l, CS, cc .....) afin de retomber sur mes pattes selon le cas de figure.

Simple comme ça à expliquer mais j'ai conscience que ça représente des lignes et des lignes de codes SQL :)
Le boulot ne m'inquiète pas ;)

Ce qui m'inquiète, c'est partir dans la mauvaise direction et de devoir tout recommencer à zéro avec un tel boulot....

C'est pas le php qui m'inquiète mais le SQL que je ne connais vraiment pas assez :/

J'ai donc commencé, comme vous me l'avez conseillé, à m'instruire sur le SQL. J'ai donc lu plusieurs sources (6 sites en tout) qui expliquent la même chose mais de façon différentes et voici ce que j'en ai déduis pour mon cas:
Donnez votre avis
Utile
+0
plus moins
-Il faut que je crée 5 tableaux (create table) (pour mes 5 catégories, la 6e, je verrai plus tard) et que je les désigne par un nom (légumes, fruits, féculents...)

-Dans chaque tableau, je dois crée 3 colonnes: quantité, unité de mesure et nom (donc VARCHAR, ENUM et VARCHAR)

-Que je rentre tous les noms possibles et imaginables

-Que je rentre une clé primaire pour une identification rapide


Puis dans le php:

-Je demande un cumul de chaque tableau
-Je le divise par le nombre de personne/part indiqué par l'utilisateur
-J'affiche chaque id sous la catégorie correspondante


Je suis dans le vrai ou dans le mur?

J'avoue que je cafouille un peu là :/
Je sais éperdument que c'est compliqué et que je suis fou de me lancer dans ça tout seul mais mon collaborateur qui s'occupait de toute cette technique ne me répond quasiment plus et ce calculateur aurait dû être mise en place il y a un an déjà sur le site :(
Il sera un pièce maitresse du site...

Merci de toute l'aide que vous m'apportez


Cordialement,
Hugues

PS: désolé de découper mon message en 4 mais le forum bugait, il refusait de le publier car pour lui je parle le langage SMS ...
sowaoeri- 27 janv. 2017 à 22:47
Pour obtenir la durée totale il suffit d'ajouter touts les temps de préaprariton qui ne sont pas nuls. de chaque ligne de la recette qui a le même nom de recette.

Voilà bien sûr tout ça est très sommaire et chaque choix que vous ferez aura un impact sur la façon dont vous devrez réaliser votre programme mais surtout si votre programme réponds bien à ce que vous voulez en faire.

Pour ça suivez les étapes de Merise et passer au filtres toutes les données préalablement listées et nécessaires à votre système d 'informations.
Répondre
sowaoeri- 27 janv. 2017 à 22:48
http://exercicecorrige.blogspot.fr/2013/08/base-de-donnees-pour-les-recettes-de.html


Comme vous pouvez voir votre analyse sera forcément différente de celle indiquée sur le lien car aura d'autres contraintes et fonctionnalités.
Répondre
zguguy- 28 janv. 2017 à 10:11
Bonjour,

Je crois avoir compris notre quiproquo linguistique :)

Depuis, le départ quand je parle de MySQL, je parle du fichier lui-même. Celui que j'utilise déjà sur mon site avec mes mots de passe, nom d'utilisateur, dérivateur....
Dans ma tête, j'allais écrire directement dans ce fichier chaque ligne une à une... Mais je vois qu'il existe un logiciel qui s'appelle aussi MySQL.... Les relou!!!

Alors, du coup, ce logiciel a planté lors de l'installation la 1ere fois, c'est pourquoi j'y prêtais plus attention... car pour couronner le tout, mon seul ordi avec windows 10 est en réparation, je tourne en XP en attendant.... Donc pas simple de trouver des logiciels qui tourne encore en XP :P

Je me rend compte que j'ai bien fait de demander avant de m’exécuter et vais donc sur un tableau unique.

Mon but est vraiment de faire simple, les épices, je veux même pas qu'ils y figurent au résultat final car ils n'auront aucun impact sur les résultats obtenus.
Pour info, je suis prof de cuisine spécialisé dans l'équilibre alimentaire. Mon but est de créer ce programme afin de mieux équilibrer leurs repas. Ca peut paraitre simpliste et inutile, mais pour tout vous dire, j'ai inventé une équation mathématique permettant de cuisiner équilibré pour garder la ligne sans se priver; et ce compteur serait la clé pour tout ceux qui ne comprennent rien aux maths ;)

Donc vraiment je veux juste que mon programme analyse, tri et fasse le cumul en 6 catégories seulement.
Les épices, ne font ni grossir, ni maigrir, elles ne servent qu'au goût ;)
Pareil, les temps de préparation ne m'importe peu car les gens ne viendront pas sur ce calculateur pour trouver une recette (à priori, ils l'auront déjà trouvé) mais pour visualiser l'équilibre de leur recette.
(C'est assez dur à expliquer :P )

A l'heure actuelle, beaucoup de gens sont perdu en cuisine et ne savent même plus différencier un légume d'un féculent ou d'1 fruit.... Bref, c'est une aide précieuse pour ces personnes qui voudraient apprendre à cuisiner plus sainement :)


Donc si je récapitule, je crée un tableau unique avec:

Une colonne nom
Une colonne type/catégorie (légume, fruit, protéine...)
Une colonne quantité, la fameuse variable à cumuler

Par contre, maintenant c'est les unités de mesure où j'ai un peu de mal à comprendre où les placer. Car 1 cc = 5gr, 1 CS = 15gr, 1 cup = 130gr ....


En tout cas, vous êtes vraiment adorable et surtout patient avec moi; et je vous en remercie beaucoup.

Hugues
Répondre
sowaoeri- 28 janv. 2017 à 13:01
salut:

"donc sur un tableau unique. "

certainement pas, cela n'a aucun sens et est inexploitable.
Quand je parle d'analyse oubliez tout logiciel ou solution technique.
Si vous voulez faire la conception vous pouvez utiliser la méthode Merise ou vous inspirez d'un MCD existant proche de ce que vvous voulez.
Dans l'exemple chaque entité du MCD est une table du MLD.

1ère étape triez vos données: vous listez sur une feuille de papier tout ce qui est utile, et nécessaire (ou peux l'être dans les 10 prochaines années, le choix vous appartient et correspond à des besoins= cahier des charges).
Une fois ceux ci listés (on peut toujours en rajouter avec l'univers du discours) vous pouvez regrouper en entité.
Dans ce regroupement vous devez séparer chaque données si celle ci ne peut être identifiable(donc exister de manière unique).

Tout ce qui est calculable doit être exclu de la liste et décomposé en sa fraction.

IL y a 8 à 11 étape à suivre en suivant cette méthodologie.

PAr contre où j'expliquais de regourper dans une table unique c'est que type d'ingrédients et ingrédients vont ensemble, et donc de ne pas faire une seule table par type d'ingrédients ce qui ne respecte pas la règle de regroupement car i y a plus de points en commun entre chaque ingrédient quel que soit leur type(ils auront tous un nom, tous un type etc...).

Dans l'exemple fournit précédemment chaque entité correpspond à une table. Les liaisons entre elles des jointures.
Par exemple les quantités sont dnas une table séparée et qui n'est pas obligatoire. ce qui permet de ne pas l'utiliser (donc indiquer un ingrédient d'une recette sans indiquer sa quantité) ou de l'utiliser.
PAr rapport à votre modèle à vous on voit aussi que ça ne correspond pas car ne sont pas indiqués les unités seules les quantités(ex: on peut noter 2 pommes de terre mais pas 500gr de pommes de terre).

A vous de faire une analyse correspondant à ce que vous voulez :)

Voilà je vous ai indiqué aussi une question à prendre en compte lors de l'analyse: comment noter :es unités.
Or il y a plusieurs choix possible :une quantité ne pouvant exister sans une unité on peut penser qu'elles vont ensemble. Sauf si pour une valeur de quantité il peu exister plusieurs unités(par ex: une quantité de crème fraîche peut être utilisé en poids ou volume.

Or comme j'ai dit au tout début il faut s'inspirer de documents existant pour lister toutes les données(étape 1) et vous verrez que si vous utilisez des recettes en français et en anglais vous aurez différentes unités. Ceci doit il être possible dans votre système? Dans le doute rendez le possible (ex: utiliser once ou gramme). ce qui le permettra , inversement si ce n'est pas permis ce ne sera pas possible et peut provoquer des erreurs dans la table si quelqu'un essaie de le faire.
Ceci est un choix à faire et rentre dans l'univers du discours.
Même chose pour une quantité d'un même ingrédient qui serais exprimée en gramme ou centilitres. Si vous voulez que cela soit possible il faut utiliser 2 tables sinopn cela sera regroupé dans une seule table.

Encore une fois: De votre conception dépends votre programme, ne faites pas l'inverse sous peine d'être vite bloqué et de ne pas avoir quelque chose qi ne correspond pas à la réalité ou limite celle ci, au final sera un programme faux, inexploitable ou trop complexe à utiliser/développer.

Première étape: prnez un oquin de cuisine, décortiquez en les données(doit on retenir le titere et l'éditeur du livre?), ainsi qu'un pot de crème fraîche car c'est un ingrédient et il a des données(la marque doit elle être retenue?) qui sont pertinentes et à utiliser dans le système d'informations.
Complétement en extrapolant de manière la plus exhaustive. 2limnuinez tout ce qui peut être doublon ou valeur calculable des autres données.

exemple de valeur calculable: dans un école chauqe cours dure une heure, on retient donc le début du vcours et la durée du cours(1) ce qui permet de se débarasser dans la table de la valeur de fin de cours car 14h+1h = 15h, donc 15h peut être obtenu des autres valeurs et n'a aucune utilité à par surcharger et compliquer la table.

Voicvi u lie plus complet:
http://sqlpro.developpez.com/cours/modelisation/merise/
Répondre
zguguy- 28 janv. 2017 à 15:38
Encore une fois un grand merci pour votre patience et vos explications détaillées car je dois pas être facile à comprendre (j'en ai conscience :D )

Alors, tout est déjà sur papier l'organigramme: et les listes complète d'ingrédients.
Toutes mes listes sont mêmes tapés dans un fichier texte en attendant de comprendre le fonctionnement, y'a plus qu'à faire du copier/coller.... :)

Pour donner un exemple, voici les listes complètes de féculents et légumes:

Liste des féculents :

Azuki
Boulgour
Céréale non sucré
Chapelure
Châtaigne* (marron)
Ebly (Blé dur)
Épeautre
Feuille de brick
Feuille Filo
Fèves*
Flageolet*
Flocon d'avoine
Flocon d'épeautre
Gnocchi
Haricot blanc*
Haricot mungo* (Soja vert)
Haricot rouge*
Lentille*
Maïs*
Manioc*
Orge
Pain (toute sorte)
Panais*
Patate douce*
Pâte (toute sorte)
Pâte à pizza (ou à pain)
poire de terre
pois sec
pois carré
pois d'Angole
pois sabre
Petit pois*
Pois cassé*
Pois chiche*
Polenta (blé ou maïs*)
Pomme de terre*
Quinoa*
Riz* (toute sorte)
Sarrasin
Semoule
Son d'avoine
Son de blé
Tapioca*
Topinambour*
Tortilla mexicaine (ou wrap)
Vermicelle (blé, riz* ou soja*)
Baguette
Baguette aux céréales
Bâtard
Biscotte
Bretzel
Ciabatta
Flûte (ou pain)
Miche (ou tourte)
Pain complet
Pain au lait (pain à hot dog)
Pain à hamburger
Pain au maïs
Pain aux céréales
Pain aux fruits secs (figues, abricots, noix, noisettes...)
Pain de campagne
Pain de mie (toute sorte)
Pain de seigle
Pain de sons
Pain du monde (kebab, libanais...)
Pain Maison
Waza


Liste des matières grasses :

Beurre
Huile (toutes les huiles)
Beurre de cacao
Beurre de cacahuète
Purée d'amande
Sandoux
Graisse de canard
Graisse d'oie


Liste de légumes :

ail
amarante
artichaut
asperge
aubergine
bambou (pousses de)
banane plantain
bette à carde betterave
blette
brèdes
brocoli
brocoli chinois
bunias d'Orient
calebasse
canna comestible
capucine tubéreuse
cardon
carotte
céleri
céleri-rave
cerfeuil tubéreux
châtaigne d'eau
chayote
chénopode Bon-Henri
chervis
chicon
chicorée
chou
chou de Bruxelles
chou cabus
chou chinois
chou-fleur
chou frisé
chou-navet
chou palmier
chou palmiste
chou-rave
chou romanesco christophine
ciboule
citrouille
coqueret du Pérou
concombre
cornichon
courge
courgette
courge cireuse
courge musquée
courge de Siam
cresson
curcuma (racine)
dachine
daikon
échalote
endive
épinard
fenouil
ficoïde glaciale
frisée (chicorée)
glycine tubéreuse
gombo
gourde
grelos
haricot vert
jaque
jujube
kancon
konbu
laitue
lys asiatique comestible
luffa
maceron
mâche
mauve
mizuna
momordique
Navet (long, jaune)
niébé
nombril de Vénus
oca du Pérou
oignon
oignon de Chine
okra
onagre
ortie
oseille
pak choï
panais
patate douce
pâtisson
périlla
pe-tsaï |
physalis
piment
pissenlit
poireau
Pois gourmand
poivron
potiron
potimarron
pourpier
radis
radis noir
radis mougri
radis du Japon
raifort (racine)
romaine (laitue)
roquette
rutabaga rhubarbe
salicorne
salsifis
scarole (chicorée)
scorsonère
shiso
soja
taro
tétragone cornue
tinda
tomate
topinambour
udo
wakame
yin tsoï


Et j'ai ainsi répertorier tous les ingrédients existants au monde....

Comme j'ai dis, une fois le fonctionnement assimilé, j'ai plus qu'à faire du copier/coller :)


Mais peut-être (surement même) je m'exprime mal, c'est pas vraiment une calculette que je cherche à créer mais un décodeur de recette transcrivant les ingrédients selon 6 catégories propre à la méthode que j'ai inventé et déjà suivi par plus de 15000 personnes qui sont: légumes, féculents, protéines, fruits, matière grasse et tout le reste se retrouve fatalement dans la 6e catégorie.

Par exemple: si j'ai une recette pour 4 personnes où il y a 300gr de haricot, 250gr d'artichaut et 100gr de tomate.
Je veux pas qu'on me dise qu'il y a 75gr d'haricot/personne, 62gr d'artichaut/personne....

Mais plutôt: 162gr de légumes/personne (qu'importe les légumes, leurs calories, le temps de cuisson....)

J'ai bien essayé de trouver un système se rapprochant sur internet mais mon manque de vocabulaire technique me fait tourner en rond... Je trouve soit des calculettes, soit des moteurs de recherches, soit des tableaux pour trier.... :(
le seul lien s'approchant le plus de ce que je souhaite réaliser est celui que j'ai mis au tout début: http://www.monmenu.fr/s/calculer-calories.html

Sauf que je ne veux pas connaitre les calories, les lipides, glucides... comme sur le lien(car ce sont des données trop complexe pour le grand public) mais ramener au plus simple qui sont mes 6 catégories.
Car ma méthode est en quelque sorte une vulgarisation de la nutrition, en d'autre terme: " l'équilibre alimentaire, pour les nuls" :P

Merci en tout cas de tous vos conseils, je vais continuer à fouiner pour trouver un système similaire ou approchant et me familiariser avec merise :)

Si jamais, je trouve quelques chose, je viendrai mettre le lien ;)
Inversement, si vous trouvez quelques chose, je suis toute ouïe :)


Cordialement,
Hugues
Répondre
Donnez votre avis
Utile
+0
plus moins
Salut,
un ingrédient = une donnée.
Une donnée peut prendre la valeur qu'on veux. Ainsi il est inutile de répertorier tout les ingrédients au monde(ce qui est aussi impossible) mais seulement le champ (donnée) que peux prendre la valeur.
Là vous confondez une donnée et la valeur qu'elle peux prendre(enregistrement).
J'ai fait la plupart des erreurs que vous faites mais pas celle là.
C'est pour ça que je vous parle d'un travail intellectuel à faire: donc lister les données possibles.
Pois chiche n'est pas une donnée.
Ingrédient si.
La valeur pois-chiche est un ingrédient de nom Pois-chiche et de type féculent.
Les données sont donc(pour commencer ce n'est pas finit il faut TOUTES les lister) nom d'ingrédients et type d'ingrédient.
Est ce clair? Les valeurs vous oubliez , cela vous aide (en réunissant les informations existantes) à savokir quelles seront les données.

Mais potentiellement aucun système d'informations ne peux contenir de valeurs sans que les données existent.

Par exemple la sécurité sociale à une base de données qui retient des informations sur des personnes.
Nulle part pour créer les tables on va s'intéresser aux valeurs possibles des données. La donnée genre peux contenir : homme ou femme, la donnée nom de famille et prénom les nomls de tout les individus existant.
C'est là que se posent un problème typique: comment afire quand 2 personnes ont le même nom et prénom(ce qui peux arriver).
Il fut donc une 3ème donnée pour les différencier.
Par exemple la date de naissance permet de savoir différencier 2 personnes nommées Charles Dupont de façon presque sûre. En effet il y a très peu de chances que 2 personnes de même nom et prénom soient nées le même jour.

C'est pareil avec vos pois-chiches. Pas la peine de savoir que le mot pois-chiche (ou Mr. Dupont)existe mais seulement qu'un champ de données a une valeur de nom et une valeur de type.

Je perds un peu mon temps à écrire des réponses, commencez par le début dans chaque domaine qui vous est nécessaire.
Donc pour l'analyse et la conception des cours et méthodes existent(voir lioen système d'information), isls serons plus clairs et plus documentés que ce que j'écris ici.
voir aussi ceci pour commencer:
http://www.commentcamarche.net/contents/655-merise-initiation-a-la-conception-de-systemes-d-information
zguguy- 18 mars 2017 à 17:13
Bonjour Sowaoeri,

Je vous remercie déjà de tous vos conseils.
J'ai fini mon calculateur mais je bute sur un petit problème.

Les mots (valeurs) non enregistrés seront comptés comme une dernière ultime catégorie (JOKER).
En gros, tout ce qui n'existe pas dans la base de donnée est considéré comme JOKER (avec un nouveau calcul spécifique).
En principe, tout fonctionne sauf que je n'arrive pas à Cumuler ces derniers...

Voici le code tapé (l'idée est de diviser par 100 afin de donner un nombre de JOKER)

<?php
                                if (isset($result)) {
                                    if (isset($_POST['personnes']) && $_POST['personnes'] > 0) {
                                        $nbp = $_POST['personnes'];
                                        foreach ($unknown as $ingredient)
                                        echo sprintf("<h4>JOKER: + %s </h4>", ceil(($ingredient['quantity']/100 ?: 0) / $nbp));}
                                }
                                ?>


Problème, ça fonctionne impec mais chaque "ingrédient JOKER" apparait sur une ligne différente alors que je souhaiterais un cumul de tous ces JOKERS....

Exemple:

Si je tape:
200gr de machin
60gr de bidule
800gr de truc
90gr jhzgjhgz


j'obtiens:
JOKER: + 2
JOKER: + 1
JOKER: + 8
JOKER: + 1 


Alors que je souhaiterai juste avoir "JOKER: + 12"... :(

Une idée?

Merci d'avance

Cordialement,
Hugues
Répondre
Donnez votre avis
Utile
+0
plus moins
Ok, je dois considérer chaque mot/valeur comme une donnée à analyser.

Les choses commencent à se dessiner dans ma tête:

Voici mon cheminement intellectuel:

Sur chaque ligne de texte, reconnaitre ces 3 champs:

-La quantité qu'on appellera Z (valeur numérique)
-L'unité de mesure qu'on appellera U (qui donnera le quotient selon l'unité de mesure sinon = 1)
-Et l'ingrédient

Voici ce que donnerai mon calcul:


Zx120
------- = Y
U


-120 représente 1 portion qui est le poids moyen d'un légume, d'une viande ou 1 poisson.... (c'est bien expliqué dans la méthode que j'ai écrite :) )

-Y représente la valeur en gramme de chaque aliment.


Il ne reste plus qu'à regrouper les "valeurs" dénominatives et faire des cumuls soit:

légume1 + légume2 + légume3 + légumeX = Y1 + Y2 + Y3 + YX

Féculent4 + Féculent5 + ..... = Y4 + Y5 + ...


Et ça, ça se ferait grâce aux regroupement de tableau ingrédients (Si nom= Pois chiche alors type = féculent)


Si c'est ça, j'aurai donc 2 tableaux à réaliser:

Le tableau "INGRÉDIENT" transformant un nom en un type

Et le tableau "UNITÉ" transformant une mesure en quotient

(attention, le quotient U n'est pas la valeur d'une mesure.
Par exemple: 1 cc = 24 car 120/24 = 5, les 5gr d'1 cc)


Voilà ce que je comprend mais je suis persuadé de faire le raisonnement inverse, malheureusement :/

Et je sens que je vais pas tarder à baisser les bras :( (ou trouver quelqu'un contre rémunération)


Dans tous les cas, vous m'avez appris beaucoup de choses. Vous avez résolu à votre insu un autre problème que j'avais grâce à vos explications détaillées

J'ai bien bien lu tous les liens que vous m'avez envoyé qu'il me faudra encore relire plusieurs fois pour m'en imprégner. Et même si je n'arrive pas à créer moi-même ce "décodeur de recette", ça aura été instructif de discuter avec vous :)

Je vous remercie de tout le temps consacré pour moi ;)

Cordialement,
Hugues
Donnez votre avis

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.

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

Vous n'êtes pas encore membre ?

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