IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

calcul avec php


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 14
    Points : 17
    Points
    17
    Par défaut calcul avec php
    bonjour;
    je suis débutant en programmation php et je veux réaliser une formule de calcul :

    j'ai trois champs dynamiques dans ma table et je veux appliquer cette formule au troisième champ :

    champ3 = (champ2-champ1)/100

    sachant que les trois champs appartiennent à la même table

    et afficher bien sur mon champ3

  2. #2
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Bonjour,

    Il faut faire une requête SQL de base :

    Ex avec mysql :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $requete = mysql_query('SELECT ((champ2 - champ1) / 100) AS mon_calcul FROM ma_table');
    $calcul = mysql_result($requete, 0, 'mon_calcul');
     
    echo '<span class="calcul">La valeur de mon calcul est '.$calcul.'</span>';

  3. #3
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Citation Envoyé par pitchoblack
    champ3 = (champ2-champ1)/100
    Ce n'est pas forcément une bonne idée de créer un champ qui sera totalement dépendant de 2 autres données situé juste à coté.

    Théoriquement (donc vraiment en théorie), il est préférable de faire le calcul "à la volée", à la demande.
    Dans le jargon, on on appel ça des données redondantes, c'est quasi de la duplication de données.
    On retrouve tout de même ce genre de chose, mais c'est très souvent pour des questions d'optimisations qu'on transgresse un peu ces bonnes règles.


    Donc d'enregistrer uniquement les 2 champs en Bdd, puis si on souhaite obtenir le calcul sur ces 2 champs, et bien faire la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT truc, muche, ((champ2-champ1)/100) AS champ3, champ4
    FROM ma_table
    Et on aura ici au total 4 champs, donc champ3 du calcul


    Mise à part ça, et si tu veaux quand même avoir ce champ3 dans la table avec le calcul, alors il faut que le calcul soit fait au-préalable, aussi bien lors de l'insertion (INSERT INTO) de même qu'à la mise à jour (UPDATE).
    - A l'insertion, en toute logique le calcule devra être fait avec les données qu'on doit avoir sur le coude, vu que l'enregistrement n'existe pas encore.
    - Pour un UPDATE, là on pourra le faire coté SQL, en utilisant le même code que plus haut. (UPDATE ... SET champ3 = (champ2-champ1)/100 ...).

    Mais j'insiste, il faut bien voir que si on effectue une modification sur le champ1 ou le champ2, que ce soit via une application en Php ou directement dans la Bdd (genre PhpMyAdmin), il ne faudra pas oublier de mettre à jour le champ3 aussi, sinon ça débouche sur des incohérences.
    C'est pour ça que ce n'est pas recommandé.
    En faisant "à la volée", le calcul sera toujours correcte.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  4. #4
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Je me demande si tu ne souhaitais pas mettre à jour ta table directement, si c'était le cas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    UPDATE ma_table SET champ3 = ((champ2 - champ1) / 100)

Discussions similaires

  1. Calcul avec PHP Mysql
    Par l1738 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 05/05/2015, 13h24
  2. Réponses: 2
    Dernier message: 20/02/2013, 11h30
  3. [débutant] choix de postgre avec php / migration
    Par bilbon.S dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 23/03/2004, 14h05
  4. Réponses: 2
    Dernier message: 22/03/2004, 10h50
  5. Création d'utilisateur sous PostgreSQL 7.3.2 avec PHP
    Par duongkhang dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 06/06/2003, 13h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo