begin process at 2012 05 31 11:02:39
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

MySQL

 > 

Transformer chaine texte venant de SQL en chaine math (formule de calcul)


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Transformer chaine texte venant de SQL en chaine math (formule de calcul)

mercredi 23 avril 2008 à 10:27:16 | Transformer chaine texte venant de SQL en chaine math (formule de calcul)

tafa60

Bonjour,

Je dois réaliser une sorte de bulletin de note automatisé pour un grand nombre de type de BAC (donc pas de saisie en dur dans mon script) sachant que :

   Bac Scientifique
      Moyenne Math (coef 5) : (total_notes/nb_notes)*5
      Moyenne Français(coef 2) : (total_notes/nb_notes)*2
   Bac Literaire
      Moyenne note Math (coef 2) : (total_notes/nb_notes)*2
      Moyenne note Français(coef 5) : (total_notes/nb_notes)*5

J'ai donc créé : 
   table BAC
      id_BAC  |    type_BAC
      ----------|-------------
            1       |     Scientifique
            2       |     Literaire

   table MATIERE
      id_MATIERE    |    type_MATIERE
      -----------------|-------------
               1               |     Math 
               2               |    Français

   table CALCUL
      id_CALCUL |  id_BAC |  id_MATIERE |  formule_calcul
      --------------|-----------|----------------|--------------------------- 
              1           |       1       |            1          | (total_notes/nb_notes)*5
              2           |       1       |            2          | (total_notes/nb_notes)*2
              3           |       2       |            1          | (total_notes/nb_notes)*2
              4           |       2       |            2          | (total_notes/nb_notes)*5

(je suis parti du principe que les coef des matières peuvent changer, d'ou la redondance des formules)

Avec mes tri, je récupère bien ma formule, je remplace total_notes & nb_notes par leurs valeurs respectives mais...

formule_calcul est un VARCHAR, et donc je n'arrive pas à avoir le résultat du calcul mais une chaine texte

$moyenne = (30/2)*5   MAIS PAS 15

Quelqu'un connait-il une astuce ou une soluce ?

Merci d'avance

mercredi 23 avril 2008 à 10:38:53 | Re : Transformer chaine texte venant de SQL en chaine math (formule de calcul)

Teclis01

(total_notes/nb_notes)* === superflux

   table CALCUL
      id_CALCUL |  id_BAC |  id_MATIERE |  coef
      --------------|-----------|----------------|--------------------------- 
              1           |       1       |            1          | 5
              2           |       1       |            2          | 2
              3           |       2       |            1          | 2
              4           |       2       |            2          | 5

Ensuite ya SUM, COUNT... (en SQL)...

=====================Version  Cracra=====================
sinon tu as toujours eval mais attention les conneries >_< et c'est supra degeu

   table CALCUL
      id_CALCUL |  id_BAC |  id_MATIERE |  formule_calcul
      --------------|-----------|----------------|--------------------------- 
              1           |       1       |            1          | ($total_notes/$nb_notes)*5
              2           |       1       |            2          | ($total_notes/$nb_notes)*2
              3           |       2       |            1          | ($total_notes/$nb_notes)*2
              4           |       2       |            2          | ($total_notes/$nb_notes)*5

Evidement il faudra évaluer la string et que les 2 variables soient definit ça ressemblera a ça
(hou que c'est moche )
eval("$iMoy=$sFormule;");

Il vaut mieux poser une question et passer pour bête que le rester toute sa vie

 Les geeks n'ont pas une case en moins ils commencent juste à compter à partir de zéro

mercredi 23 avril 2008 à 11:21:35 | Re : Transformer chaine texte venant de SQL en chaine math (formule de calcul)

tafa60

Salut Teclis01

(total_notes/nb_notes)* === superflux
Non, j'ai fais un exemple simple, mais certains calculs diffèrent, donc il faut obligatoirement que je mette l'ensemble de la formule.
Ensuite, j'intéroge la présence des variables avec avec un strpos();

>_< et c'est supra degeu
Ouai, bof..... c'est toujours mieux qu'un tiret, et ça a le merite de bien identifier la variable...

eval("$iMoy=$sFormule;");
Y ai pas pensé, vais tester et te tiens au courant.

En tout cas, merci



mercredi 23 avril 2008 à 11:32:53 | Re : Transformer chaine texte venant de SQL en chaine math (formule de calcul)

Teclis01

La calcul d'une moyenne est toujours la même si la formule change c'est que tu ne calcules plus une moyenne auquel cas c'est le modèle de la base de données qui est faux (pas optimisé).

Ton exemple ne donne pas les divergences du calcul Mais au risque de me répéter, si le calcul est différent c'est un problème de moèlisation de la BDD !!!

Il vaut mieux poser une question et passer pour bête que le rester toute sa vie

 Les geeks n'ont pas une case en moins ils commencent juste à compter à partir de zéro

mercredi 23 avril 2008 à 11:43:18 | Re : Transformer chaine texte venant de SQL en chaine math (formule de calcul)

tafa60

si la formule change c'est que tu ne calcules plus une moyenne :
Exact, par exemple, pour les options, tu n'utilises pas la moyenne, mais seulement les points >10

si le calcul est différent c'est un problème de moèlisation de la BDD

Toujours Exact, car eval me remplace bien les variables, mais ne me calcule pas le résultat.

Dans ma table CALCUL, mon champ formule_calcul est en VARCHAR, d'ou la non-éxécution de ma formule, et d'ou le sujet de mon 1er message.

Mais, étant un peu leger en SQL, je ne sais pas quel type il faut mettre pour mon champ (si un type adéquat existe !)

Je tourne en rond dessus depuis hier soir, et je ne vais bientôt plus avoir de cheuveux !
mercredi 23 avril 2008 à 12:14:10 | Re : Transformer chaine texte venant de SQL en chaine math (formule de calcul)

Teclis01

Ce que je trouve juste et propre:

ton champ formule_calcul devrait se nommer coefficient deja et de type int

Ce que tu peux faire rapidement pour que ça marche sans changer la modèlisation:

tu gardes le eval et ton resultat sera dans $iMoy


Pour ton histoire d'option (c'est des vieux souvenirs le BAC )

Il faudrait ajouter un boolean (booléen) afin de définir dans quel mode tu es
0=>calcul normal
1=>option


Il vaut mieux poser une question et passer pour bête que le rester toute sa vie

 Les geeks n'ont pas une case en moins ils commencent juste à compter à partir de zéro

mercredi 23 avril 2008 à 14:46:42 | Re : Transformer chaine texte venant de SQL en chaine math (formule de calcul)

tafa60

ton champ formule_calcul devrait se nommer coefficient deja et de type int
Je ne savais pas que l'on pouvait mettre de l'alphabétique dans un int (total_notes;nb_notes)

Il faudrait ajouter un boolean (booléen) afin de définir dans quel mode tu es
0=>calcul normal
1=>option
Tu as entièrement raison. Je vais proceder autrement en créant d'autres tables et en mettant (ce que je ne voulais pas faire, mais bon) en dur toutes les formules de calcul dans un array, et en indiquant laquelle prendre via un int dans la base.

Merci encore

mercredi 23 avril 2008 à 15:27:20 | Re : Transformer chaine texte venant de SQL en chaine math (formule de calcul)

Teclis01

Je ne savais pas que l'on pouvait mettre de l'alphabétique dans un int (total_notes;nb_notes)

On ne peut pas on va juste mettre le coef soit 5 ou 2

en dur toutes les formules de calcul dans un array

pour moi c juste un calcul qui depend d'un entier (switch...)


Merci encore
Je t'en prie c'est un plaisir

Il vaut mieux poser une question et passer pour bête que le rester toute sa vie

 Les geeks n'ont pas une case en moins ils commencent juste à compter à partir de zéro



Cette discussion est classée dans : nb, bac, calcul, notes, total


Répondre à ce message

Sujets en rapport avec ce message

rien compris!! [ par saad123 ] G regardé dans le forum pour transmettre une variable javascript en php mais g pa trop compris! g regardé le lien sur dev.nexen.net mais g rien compri url rewriting et nombre de pages d'une requete [ par arnold002 ] Bonjour ¨¤ tous,Je viens de me lancer dans la r¨¦¨¦criture d'URL pour augmenter l'indexation de mes pages sur les moteurs de recherche.J'utilise le mo formulaire de calcul moyennes etudiants en php [ par shexna ] Bonjour,</p help pour calcul prix degressif en php [ par pocalypse ] bonsoir a tous et toutes.j'ai un petit probleme.voila je voudrais integrer à mon calcul un tarif degressif en fonction de la quantité.donc le calcul d Calcul de colonne [ par seby20 ] Bonjour à tous... Voici mon petit problème, j'ai fait une loop avec requete sur ma base mysql et les données sont affichées dans un tableau. Jusque là aide conserver variable avec pagination [ par kilvan90 ] bonjourdonc voila j'ai fais une page ou on fait une rechecher et apres une pagination pour afficher les resultats de la recherche page par pagela requ Total Calcul Panier [ par jackdaniel9 ] Bonjour, Il faut que je calcule le prix par rapport à la quantité dans un formulaire pour un panier. Je me demandais si il était possible de faire l probleme pagination avec plusieur requet sql [ par dpk1 ] bonjour à tous, je suis débutant autodidacte et je fais mon premier site en php. voila j'ai une pagination que j"ai repris qui fonctionne très bien l pagination formulaire [ par raouen ] je suis entrain de travailler avec un système de pagination simple que je l'applique pour afficher une liste de formulaire de ma table mysql ;il m'aff


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,858 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales