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 :

Forcer le calcul d'une ligne


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 92
    Par défaut Forcer le calcul d'une ligne
    Bonjour.

    Je récupère de ma BDD des infos d'un objet. Je récupère entre autres un signe et une valeur.
    A l'aide d'une valeur $x je dois faire un calcul avec toutes ces informations.

    Exemple :
    $x = 40;
    $signe = $objet->signe;
    $valeur = $objet->valeur;

    J'aimerais pouvoir faire :
    $resultat = $x . $signe . $valeur;

    Si je fais un var_dump de $resultat j'ai ça :
    string '40+50' (length=5)

    Existe-t-il un moyen de forcer le calcul ou dois-je faire une condition sur le signe ?

    Merci.

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    eval ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $resultat = eval("return $x $signe $valeur;");
    # ou
    eval("\$resultat = $x $signe $valeur;");
     
    var_dump($resultat);
    (mais attention à ce que ça implique)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 92
    Par défaut
    Ça marche impec merci

    Qu'entends-tu par "ce que ça implique" ?

  4. #4
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Citation Envoyé par p4ndore Voir le message
    Ça marche impec merci

    Qu'entends-tu par "ce que ça implique" ?
    Eval est assez dangereux car il permet une manipulation directe de tout ce qui se trouve dans le scope courant. Si la chaine à évaluer est produite depuis des données utilisateur ou depuis la base (ce qui revient au même), cela peut introduire des failles de sécurités conséquentes.

    Donc plutôt qu'un eval, je verrai mieux une fonction lambda:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $signe = "*";
    $valeur= 3;
     
    $func = create_function('$x', "return \$x {$signe} {$valeur}; ");
     
    // appel
    $func(2);
    Existe-t-il un moyen de forcer le calcul ou dois-je faire une condition sur le signe ?
    Pour ma part, je pense qu'un switch sur le signe serait dans tous les cas la meilleure solution. Eval ne doit être envisagé que s'il n'existe aucun autre moyen d'arriver à faire ce que l'on veut et les fonctions lambda sont normalement là pour mettre en place des mécanismes de callbacks ou de délégation.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 92
    Par défaut
    Ouais donc du coup je vais préférer une structure conditionnelle je pense.

    Merci pour tout en tout cas

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Calcul d'une ligne Access/Excel
    Par trist06 dans le forum API standards et tierces
    Réponses: 0
    Dernier message: 16/11/2010, 11h00
  2. [Débutant] forcer le programme à retourner à une ligne
    Par tarek008 dans le forum MATLAB
    Réponses: 8
    Dernier message: 25/01/2010, 15h35
  3. Calcul sur une ligne puis total sur la colonne
    Par jazono dans le forum Requêtes
    Réponses: 2
    Dernier message: 04/11/2009, 17h21
  4. Forcer le calcul d'une fonction sur des cellules masquées
    Par AAZRO dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/07/2007, 16h34
  5. Comment forcer la sélection d'une ligne dans un DataGridView
    Par Pizza Royale dans le forum Windows Forms
    Réponses: 5
    Dernier message: 12/06/2007, 12h32

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