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 :

Stocker puis puis comparer le NOM d'une variable


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 56
    Points : 38
    Points
    38
    Par défaut Stocker puis puis comparer le NOM d'une variable
    Salut à tous,

    Afin de rendre plus souple et modifiable un bout de mon code, j'aimerais pouvoir comparer le nom d'une variable avec une valeur stocké en base de données.

    En base :

    id | variable |
    1 | $var |

    Dans mon script, un truc du genre :

    Si la chaine de caractère base est = au nom de la variable testé.

    J'ai fais des recherches pour récupérer le nom d'une variable, mais tous mes essais n'ont rien donné que ce soit avec des Eval, Define ou autre bizarrerie

    Merci

  2. #2
    Membre éprouvé Avatar de tdutrion
    Homme Profil pro
    Architecte technique
    Inscrit en
    Février 2009
    Messages
    561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 561
    Points : 1 105
    Points
    1 105
    Par défaut
    Bonjour,

    Je dois dire que ton objectif me parait très... étrange...

    On peut imaginer un truc dans ce gout, peut être ajouter un isset... Mais dans tous les cas ça me semble entièrement être une mauvaise idée...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
     
    $fromDb = array(
        'id' => 1,
        'variable' =>'var',    
    );
     
    $var = 'test';
     
    if ($var === ${$fromDb['variable']}) {
        echo 'ok';
    } else {
        echo 'nok';
    }

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Points : 383
    Points
    383
    Par défaut
    Je suis pas sûr d'avoir compris, mais ca t'aidera peut être

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    <?php
     
    function get_nom_variable($variable){
        foreach( $GLOBALS as $key => $value){
            if( $variable === $value ){
    			return $key;
            }
        }
    }
     
    $foo = 'bar123';
    $nom_de_ma_variable = 'foo';
     
    echo get_nom_variable($nom_de_ma_variable)." contient le nom de la variable<br>";
    echo "la valeur de la variable $nom_de_ma_variable = ".$$nom_de_ma_variable; // operateur $$

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 56
    Points : 38
    Points
    38
    Par défaut
    Merci pour vos réponses,

    Théocrite, ce n'est effectivement peut être pas la bonne route que j'ai pris pour ce problème.

    Pour expliquer plus clairement la situation, j'ai plusieurs textes en base de données, ces textes contiennent des balises de type publipostage, avec par exemple :

    bonjour {nom} {prenom}, merci pour votre inscription du {dateInscription} blabla ....

    Jusqu'à présent je gérais les différentes balises disponibles en dur dans le code avec des tableaux php. ayant ce format
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $publi = array ("{nom}" => $nom , "{prenom}" => $prenom, "{$dateInscription}" => $dateInscription)
    Puis je remplaçai les valeurs comme ceci dans une boucle foreach
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    str_replace($tag, $valeur, $monText)

    Seulement je voulais rendre mon système plus souple et gérer cette liste de tag publipostage via la base de données. L'idée étant de créer une table avec les champs :
    || ID | tag | variable | donnée exemple ||

    Puis de parcourir le tableau, si je tombe sur un tag présent, je prend la valeur Variable, et j'appel la variable correspondante pour remplacer le tag.

    A l'heure actuelle, j'arrive à récupérer le nom de mes variables avec get_object_vars() puisqu'il s'agit en fait d'objet mais je n'arrive pas à aller beaucoup plus loin.

    Dans l'exemple que tu m'a donné tu utilise des variables dynamiques ?

  5. #5
    Membre éprouvé Avatar de tdutrion
    Homme Profil pro
    Architecte technique
    Inscrit en
    Février 2009
    Messages
    561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 561
    Points : 1 105
    Points
    1 105
    Par défaut
    La partie intéressante de mon code est ${$fromDb['variable']}, qui te donne la valeur de la variable $var dans ce cas précis :

    $fromDb['variable'] == 'var' donc ${$fromDb['variable']} === $var .

    Les accolades servent à pouvoir utiliser un tableau.

    Variable variables sur la documentation PHP

    Dans ton cas tu peux surement juste utiliser des isset du coup.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <?php
     
    $txt = "Text including variables to be replaced, such as {name}, {id}, {something} and {other}";
    $vars = array(
        'name' => 'name',
        'id' => 'userid',
        'something' => 'undefinedItem',
    );
    $user = new stdClass();
    $user->name = 'James Bond';
    $user->userid = '007';
    echo str_replace(
        array_map(
            function($item) { return '{'. $item .'}'; },
            array_keys($vars)
        ),
        array_map(
            function($item) use ($user) { return isset($user->$item) ? $user->$item : 'undefined'; },
            $vars
        ),
        $txt
    );
    https://3v4l.org/Dj7E6

    Il nous faut ton code pour mieux comprendre le besoin je pense.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 56
    Points : 38
    Points
    38
    Par défaut
    J'ai bien essayé de comprendre le fonctionnement des variables variables, mais c'est pas évident.

    Merci beaucoup pour ta proposition, elle fonctionne à merveille, seulement il y'a juste une chose qui peut potentiellement me bloquer. J'utilise bien un objet pour mes données, et plus précisément des getters pour la récupération des valeurs

    $utilisateur->getUtilisateurNom() pour $utilisateur->utilisateurNom;

    J'ai essayé différentes choses avec le code que tu propose, notamment de stocker en base getUtilisateurNom(), mais cela ne fonctionne pas. par contre l'accès direct à la valeur en ayant utilisateurNom en base fonctionne parfaitement. Pour le moment cela ne pose pas de problème puisque qu'elles sont en public, mais à terme je souhaiterais les passer en protected.

    Deuxième point, dans mon objet $utilisateur il y'a des variables qui comportent eux même un objet, bon après je pourrais toujours explorer manuellement ces objets car ils seront toujours présents.

Discussions similaires

  1. Module dont le nom est une variable
    Par Mr Hyde dans le forum Général Python
    Réponses: 11
    Dernier message: 26/02/2023, 20h39
  2. [VBA]Stocker le nom d'une variable dans une autre variable
    Par strike57 dans le forum VBA Access
    Réponses: 6
    Dernier message: 23/04/2007, 19h09
  3. Comment puis-je mettre un include dans une variable
    Par pierrot10 dans le forum Langage
    Réponses: 17
    Dernier message: 31/08/2006, 08h45
  4. Réponses: 37
    Dernier message: 02/03/2006, 01h58
  5. [Reflection] Connaître le nom d'une variable ...
    Par dahwoud dans le forum API standards et tierces
    Réponses: 7
    Dernier message: 09/08/2005, 14h37

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