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 :

Affectation "dynamique" de valeurs dans un tableau


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 43
    Par défaut Affectation "dynamique" de valeurs dans un tableau
    Bonjour,

    J'ai la problématique suivante :
    - Je fais une requête sur des tables d'une base de données afin de récupérer deux types de données : Un ensemble de fonctions et un ensemble de valeurs (chaque valeur correspond à une fonction).
    - A partir de ces valeurs, je souhaite créer un tableau qui contient chacune des fonctions récupérées et qui leur affecte la bonne valeur.
    - A noter que le nombre de fonctions (et donc de valeurs) peut changer en fonction de la requête effectuée (l'un des paramètres de la requête est une variable).

    Mon problème porte sur la création du tableau. J'ai trouvé 2-3 trucs, mais ça me semble trop tordu pour être une bonne solution. Est-ce que quelqu'un peut m'aider ?

    Merci d'avance pour toute aide .

    devdebutante

  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
    Tu n'as pas un lien relationnel dans ta base entre les fonctions et les valeurs ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 43
    Par défaut
    Bonjour,

    Tout d'abord, merci de t'intéresser à mon problème. Je ne suis pas sure de comprendre ta question. En fait, ma requête porte sur trois bases de données :
    - AccessContextualMenus : SupportMemberStateID, ContextualMenuFonctionID, AccessContextualMenuState.
    - ContextualMenuFonctions : ContextualMenuFonctionID, ContextualMenusID, ContextualMenuFonctionName, ContextualMenuFonctionDescription.
    - ContextualMenus : ContextualMenuID, ContextualMenuName, ContextualMenuDescription.

    Ma jointure entre ces trois tables porte sur ContextualMenuID et sur ContextualMenuFonctionID. Je récupère les données ContextualMenuFonctionName et AccessContextualMenuState pour un profil SupportMemberStateID et un nom de menu ContextualMenuName donnés.

    Normalement, je récupère donc une table avec deux colonnes. Dans chaque ligne j'ai un nom de fonction et une valeur correspondante. Je me trompe ?

    Mon soucis, c'est donc de créer un tableau avec comme champ (le nom de chaque fonction => valeur de chaque fonction).
    J'ai pensé à créer une chaîne de caractères, mais c'est très moche, non ?

    devdebutante

  4. #4
    Membre très actif Avatar de metagoto
    Profil pro
    Hobbyist programmateur
    Inscrit en
    Juin 2009
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Hobbyist programmateur

    Informations forums :
    Inscription : Juin 2009
    Messages : 646
    Par défaut
    heu.. si tu récupères les fonctions et les valeurs correspondantes sur chaque ligne, il te suffit de faire un truc du genre (pseudo code):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $array = array();
    while (fetch(...)) { // fetch spécifique à ton system (pdo, mysql etc)
      $array[column_des_funcs] = column_des_valeurs;
    }
    Trop simple pour être vrai ?

  5. #5
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 43
    Par défaut
    Salut et merci .

    Mon problème porte justement sur comment je dois procéder à l'affectation. En fait je suis en train de revoir un bout de code d'une application (astres, pour ne pas la citer) afin de pour voir créer des profils et leur affecter des fonctions. Actuellement, tout est codé en dur :
    array(contextualMenuName1=array(fonction1.1=>valeur1.1, fonction1.2=>valeur1.2,etc.), contextualMenuName2=array(fonction2.1=>valeur2.1, etc.), etc.).
    Les valeurs, ce sont simplement des "TRUE" ou "FALSE" (j'ai mis 0 ou 1 dans ma table) pour dire si en fonction du profil, on affiche dans le menu telle ou telle fonction ("ajouter un document", "rechercher une personne", etc.).
    Si je comprend bien ton pseudo code, je fait un fetch (ma base est en mysql => wampserver) qui va me donner deux tableaux. Un avec mes fonctions, l'autre avec mes valeurs.
    Ensuite, j'imagine qu'il faut que j'ajoute un count pour trouver le nombre de lignes de mes tableau (normalement, les deux doivent avoir le même nombre de lignes). Ou alors, c'est via ton "while" que cela est fait ?
    Ensuite je fait une boucle sur chaque élément de mon tableau "fonctions" pour lui affecter la valeur "valeurs". Mais je vois pas trop comment jouer sur les indices . Au niveau de l'affectation, cela ne posera pas de problèmes si je fais un "=>" à la place de ton"=" ?

    Désolé si les questions sont un peu "naïves", mais je rame un peu avec les tableaux et les requêtes sql.

    Merci en tout cas de m'aider.

    devdebutante.

  6. #6
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 43
    Par défaut
    C'est encore moi.

    J'ai parcouru un peu mon ami et voici ce que j'ai trouvé (ça me semble très proche de ce que tu m'as proposé metagoto) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while ($row = mysql_fetch_assoc($requete) ){ 
    $fonction = $row['ContextualMenuFonctionName]; 
    $ContextualMenu [$fonction] = $row['AccessContextualMenuState']; 
    }
    Ya des chances pour que ça fonctionne ? Je vais tester ce soir, mais si on peut me dire avant s'il y a des trucs complètement aberrant par rapport à ce que je veux...
    Si ça marche, c'est vraiment tout simple comme bout de code

    devdebutante

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 21/01/2008, 18h04
  2. Réponses: 6
    Dernier message: 26/12/2006, 17h01
  3. Réponses: 4
    Dernier message: 27/11/2006, 23h20

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