Comment faire un compteur/calculateur à plusieurs résultats?
zguguy
-
zguguy -
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 :
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
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
A voir également:
- Créer un calculateur en ligne
- Créer un compte google - Guide
- Comment créer un groupe whatsapp - Guide
- Partager photos en ligne - Guide
- Créer un compte gmail - Guide
- Créer un compte instagram sur google - Guide
9 réponses
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:
https://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.
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:
https://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.
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
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
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:
https://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
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.
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:
https://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.
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
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
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.
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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)
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)
Je donne un exemple:
Si l'utilisateur copie ça et indique que c'est pour 6 personnes:
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:
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:
-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 ...
-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 ...
Salut,
vous pouvez aller sur des sites comme open class room(le plus connu car assez accessible et pratique) pour vous former gratuitement.
Quant à S.Q.L c'est un langage donc je ne comprends pas votre question. IL n'y a rien à voir avec e langage et ce que l'on veux dire, je veux dire le langage est le moyen d'exprimer ce que l'on veux et non l'inverse(le langage ne détermine pas la façon de faire seulement la structure utilisé).
vous pouvez aller sur des sites comme open class room(le plus connu car assez accessible et pratique) pour vous former gratuitement.
Quant à S.Q.L c'est un langage donc je ne comprends pas votre question. IL n'y a rien à voir avec e langage et ce que l'on veux dire, je veux dire le langage est le moyen d'exprimer ce que l'on veux et non l'inverse(le langage ne détermine pas la façon de faire seulement la structure utilisé).
"Il faut que je crée 5 tableaux (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...) "
C'est pour ça que j'ai parlé d'analyse et de regroupements et non de suivre la logique et intuition humaine(donc fausse par rapport à la réalité informatique plutôt simpliste):
Je veux dire que plutôt qu'avoir 5 tables il est plus simple d'avoir une seule table qui comporte un champ type indiquant le type de l'ingrédient.
Non seulement c'est plus simple mais ça évite errer et complexité inutile. Une seule erreur dans la base et tout est à jeter(dans la plupart des cas).
C'est pour ça que j'ai parlé d'analyse et de regroupements et non de suivre la logique et intuition humaine(donc fausse par rapport à la réalité informatique plutôt simpliste):
Je veux dire que plutôt qu'avoir 5 tables il est plus simple d'avoir une seule table qui comporte un champ type indiquant le type de l'ingrédient.
Non seulement c'est plus simple mais ça évite errer et complexité inutile. Une seule erreur dans la base et tout est à jeter(dans la plupart des cas).
Donc avec un champ de données types d'ingrédients non seulement on regroupe ce qui est de même nature(un ingrédient n'est pas le nom de la recette ni la durée d'une recette donc différentes tables pour cela mais une seule table pour tout les ingrédients car ils sont plus en commun que de différence) et surtout avec ce système on peux à l'avenir ajouter des types d'ingrédients autant que l'on veux.
Même chose pour le poids et unités: ils n'ont rien à faire avec l'ingrédient puisque le poids et l'unité dépende(je suppose) pas de l'ingrédient mais de la recette.
En croisant les tables vous pouvez ainsi obtenir ce que vous voulez.
ex:
Table Ingrédient, champs nom, type
table recette: nom, ingrédient, quantité(nom et ingrédient identifient chaque ligne, pour avoir tout les ingrédients d'une recette on demande toutes les lignes avec le même nom de recette)
Ce qui pourra donner pour une recette
table recette
nom: Lasagnes
ingrédient: emmental
quantité 200 gr
et aussi
table recette
nom: Lasagnes
ingrédient: viande haché
quantité 300 gr
mais bien sûr
table recette
nom: Lasagnes
ingrédient: sauce tomate
quantité 120 gr
Chaque ingrédient peut ainsi avoir une catégorie(son type: produit laitier le fromage, viande de bœuf le steak haché, sauce la sauce toate...) qu'il est possible est simple à obtenir(demander à la table ingrédient le type de steak, haché, emmental, etc...).
L'on utilise donc des références croisées(jointures de table) et donc évite de multiplier inutilement les mêmes choses (doublons) qui faussent et complexifient programme et table.
Voilào j'ai volontairement laissé quantité. A vous de voir s'il est utile de séparer la quantité de son unité(ce sont des choix et chacun aura un impact sur les possibilités et besoins du programme) et pas non plus indiqué les durées de préparations.
On vois ici qu'avec les durées on peut facilement imaginer un système(donc les champs nécessaires) pour indiquer la durée pour chaque ingrédient de chaque recette.
En croisant les tables vous pouvez ainsi obtenir ce que vous voulez.
ex:
Table Ingrédient, champs nom, type
table recette: nom, ingrédient, quantité(nom et ingrédient identifient chaque ligne, pour avoir tout les ingrédients d'une recette on demande toutes les lignes avec le même nom de recette)
Ce qui pourra donner pour une recette
table recette
nom: Lasagnes
ingrédient: emmental
quantité 200 gr
et aussi
table recette
nom: Lasagnes
ingrédient: viande haché
quantité 300 gr
mais bien sûr
table recette
nom: Lasagnes
ingrédient: sauce tomate
quantité 120 gr
Chaque ingrédient peut ainsi avoir une catégorie(son type: produit laitier le fromage, viande de bœuf le steak haché, sauce la sauce toate...) qu'il est possible est simple à obtenir(demander à la table ingrédient le type de steak, haché, emmental, etc...).
L'on utilise donc des références croisées(jointures de table) et donc évite de multiplier inutilement les mêmes choses (doublons) qui faussent et complexifient programme et table.
Voilào j'ai volontairement laissé quantité. A vous de voir s'il est utile de séparer la quantité de son unité(ce sont des choix et chacun aura un impact sur les possibilités et besoins du programme) et pas non plus indiqué les durées de préparations.
On vois ici qu'avec les durées on peut facilement imaginer un système(donc les champs nécessaires) pour indiquer la durée pour chaque ingrédient de chaque recette.
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:
https://www.commentcamarche.net/contents/655-merise-initiation-a-la-conception-de-systemes-d-information
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:
https://www.commentcamarche.net/contents/655-merise-initiation-a-la-conception-de-systemes-d-information
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)
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:
j'obtiens:
Alors que je souhaiterai juste avoir "JOKER: + 12"... :(
Une idée?
Merci d'avance
Cordialement,
Hugues
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
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
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