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

Langage PHP Discussion :

Forcer l'évaluation d'une string (provenance : db) avec eval().


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2009
    Messages : 51
    Points : 45
    Points
    45
    Par défaut Forcer l'évaluation d'une string (provenance : db) avec eval().
    Hello,

    La string suivante :

    (Dans mon code php, $field contient 'date_begin'... )

    provenant d'une enregistrement db, je souhaite que php l'évalue...

    Avec eval(), j'arrive seulement à évaluer la variable $field.

    Cela donne, après eval, le résultat suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    date_begin=date('Y-m-d')
    La fonction date('Y-m-d') n'est PAS évaluée !

    Comment faire ?

    Merci !

    Gilles

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 496
    Points : 585
    Points
    585
    Par défaut
    Salut,

    si tu veux affecter une valeur à la variable $date_begin il te manque un $ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $date_begin = '0000-00-00';
    $field = 'date_begin';
     
    $eval = "$$field=date('Y-m-d');";
     
    echo $date_begin . '<br>';
    eval ($eval);
    echo $date_begin;
    si $field contient le nom d'une variable alors $$field est la variable elle-même

  3. #3
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    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
    Points : 7 762
    Points
    7 762
    Par défaut
    Quelques rappels sur les règles du développement web s'imposent:
    1. l'utilisateur c'est le mal
    2. la base de données c'est l'utilisateur (donc le mal)
    3. eval c'est le mal

    Donc, là tu es à mal², soit très mal

    Je ne comprends pas très bien ce que tu fais là, tu peux nous en dire plus ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Benjamin Delespierre Voir le message
    1. l'utilisateur c'est le mal
    2. la base de données c'est l'utilisateur (donc le mal)
    3. eval c'est le mal

    Donc, là tu es à mal², soit très mal

    "Saint Benjamin, protégez-nous du Mal !!"

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2009
    Messages : 51
    Points : 45
    Points
    45
    Par défaut Yes !
    Super, cela fonctionne !

    Un grand merci pour tes explications.


    Gilles

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2009
    Messages : 51
    Points : 45
    Points
    45
    Par défaut Pourquoi j'ai besoin de cela !
    Pour Benjamin et son pote :

    Je dois créer une liste déroulante qui filtre une colonne date.

    tri 1 : date en cours (>= aujourd'hui)

    -> WHERE date_entry>='2012-5-2'

    Comme je connais mon client,il y aura beaucoup d'autres tris, ainsi, pour ne pas faire qqch en dur, je souhaite stocker le tri dans une table de la bd.

    Dans le cas 'tri1', la chaîne stockée sera :

    $field.'>='.'\''.date('Y-m-d').'\'';

    D'où, ma question : comment evaluer cette chaine...



    Gilles

  7. #7
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    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
    Points : 7 762
    Points
    7 762
    Par défaut
    Tu connais les itérateurs et plus précisément FIlterIterator ?
    Tu connais filter_var_array ?
    Tu connais array_filter ?
    Tu sais utiliser une callback ?
    Tu connais create_function ?

    Bref, c'est pas les moyens qui manquent pour se passer de eval. Quand je dis que c'est le mal, je pèse mes mots.

    De plus, on parle ici de manipuler des clauses de tri where dans des requêtes SQL, je ne vois vraiment pas en quoi l'emploi d'eval est nécéssaire.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Le pote de Benjamin est d'accord avec lui.

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 19/04/2013, 17h46
  2. Réponses: 10
    Dernier message: 07/04/2010, 22h14
  3. concervation d'un retour chariot provenant d'une string d'un .ini
    Par onaipadesmickey dans le forum C++Builder
    Réponses: 3
    Dernier message: 05/03/2007, 12h49
  4. [c#] Évaluation d'une string
    Par royrremi dans le forum C#
    Réponses: 8
    Dernier message: 25/11/2005, 17h45
  5. [JDBC] Forcer la taille d'une string
    Par julio123 dans le forum JDBC
    Réponses: 4
    Dernier message: 10/06/2004, 10h43

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