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 :

Créer un variable dont le nom est une valeur de la base


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    581
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 581
    Par défaut Créer un variable dont le nom est une valeur de la base
    Bonjour, je cherche à savoir si c'est possible de créer une variable en lui donnant un nom récupéré dans une base, pour vérifier ensuite si elle existe déjà ou pas ?

    Je m'explique :
    1. un utilisateur arrive sur mon site en entrant son login. Lui sont alors associés divers droits, par exemple je lui donne le droit musique ainsi $varDroit_Musique = true;.

    2. il se balade sur les pages, certaines sont accessibles selon les droits. La page index.php?page=musique par exemple n'est ouverte qu'à l'utilisateur ayant le droit $varDroit_Musique = true;.

    3. j'ai une base qui contient en colonne "page" les $_GET['page'] et en colonne "droit" les droits qui autorise l'accès (par exemple on trouve page = musique et droit = varDroit_Musique).

    4. mon problème est là : l'utilisateur dispose d'une variable $varDroit_Musique puisque son login lui donne le droit. Je veux faire un if ($varDroit_Musique) { // accès autorisé } mais sans avoir à entrer manuellement le nom de la variable, c'est à dire prendre la valeur varDroit_Musique et l'interpréter comme une variable.

    J'ai fait ceci mais sans succès :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $varDroitPage = mysql_fetch_assoc(mysql_query("SELECT * FROM droits_page WHERE page='" . $_GET['page'] . "'"));
    	if (${$varDroitPage['droit']}) { echo 'Le code donne accès à cette page'; };
    Dans cet exemple je tente de faire interpréter ${$varDroitPage['droit']} comme $varDroit_Musique. J'espère avoir été clair.

    Merci d'avance.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Ta syntaxe est correcte.

    Pour debuguer, commence par controler ce que vaut $varDroitPage['droit']

    Sinon plus globalement, il serait plus methodique de ranger tes données dans un tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $droit['musique'] = TRUE;
    if ($droit[$varDroitPage['droit']] === TRUE) { .....
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    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
    Est-ce que ce code est situé dans une fonction alors que les variables sont dans une autre portée ? Sinon, il faut passer par $GLOBALS suivant le contexte.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($GLOBALS[$varDroitPage['droit']]) { echo 'Le code donne accès à cette page'; };
    Mais +1 pour sabotage concernant l'utilisation d'un tableau ce serait plus facile à gérer (bien que le problème évoqué serait à peu près le même).

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    581
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 581
    Par défaut
    vous savez quoi, j'ai fait mon boulet !
    J'avais tout simplement oublié de donner le droit correspondant au login ... maintenant ça fonctionne.
    Je vais maintenant essayer de l'optimiser en rangeant tout ceci dans un tableau, merci.

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

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. Réponses: 10
    Dernier message: 02/07/2021, 17h44
  3. [PowerShell] Acces variable dont le nom est une variable
    Par marion782 dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 12/09/2011, 11h16
  4. Affecter variable dont le nom est une concaténation
    Par CDS_Corp dans le forum VB.NET
    Réponses: 6
    Dernier message: 24/11/2009, 10h29
  5. Instancier une classe dont le nom est une variable
    Par bendev dans le forum Langage
    Réponses: 1
    Dernier message: 06/11/2006, 06h01

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