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 :

Variables dynamiques et tableaux


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2006
    Messages : 216
    Points : 159
    Points
    159
    Par défaut Variables dynamiques et tableaux
    Bonjour à tous,

    J'utilise une classe trouvée sur un Internet ("MAHATMA GANTTI", pas que le jeu de mots soit attirant, mais il permet de faire des GANTT sympas).

    Pour afficher les GANTT, il faut remplir un fichier PHP avec des données telles que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $data[] = array(
      'label' => 'tache 1',
      'start' => '2012-04-20', 
      'end'   => '2012-05-12'
    );
     
    $data[] = array(
      'label' => 'tache 2',
      'start' => '2012-04-22', 
      'end'   => '2012-05-22', 
      'class' => 'important',
    );
    Jusque là tout va bien. On peut également afficher plusieurs GANTT (remplacer "data" par "le nom de son 2e projet"). Ca, j'arrive à le faire sans souci.

    Mon problème est le suivant : comme j'utilise une base de données, je veux que les informations soient prises dans cette base. Pas trop difficile, ça marche avec ceci (qui fait afficher en une boucle toutes les tâches d'un projet) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    while ($row = mysql_fetch_array($res)) {
    	$mon_projet1[] = array(
    		'label' => $row['tache'],
    		'start' => $row['debut'],
    		'end' => $row['fin']
    	);
    }
    Seulement, comme j'ai plusieurs projets, je vais chercher dans une autre table les noms des différents projets, et je voudrais qu'il fasse, autant de fois qu'il y a de projets cette opération. C'est là que ça coince...
    Mon code qui ne fonctionne pas (je vous épargne la requête SQL) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    while ($row = mysql_fetch_array($res)) {
    	$req2 	= 	'SELECT * FROM calendrier WHERE projet='.$row['nom_r'];
    	$res2 	= 	mysql_query($req2) or die (mysql_error());
    	while ($row2 = mysql_fetch_array($res2)) {
    		$$row['nom_r'][] = array(
    			'label' => $row2['tache'],
    			'acteur' => $row2['acteur'],
    			'start' => $row2['debut'],
    			'end' => $row2['fin']
    		);
    	}
    }
    Erreur : "Cannot use [] for reading".
    Problème : je ne comprends pas comment cela fonctionne...

    Edit : désolé si ce n'est pas très clair, ma question porte plus sur la syntaxe que sur la logique des imbrications des BDD.

    Merci de m'avoir lu, et, d'avance, merci pour votre aide

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    attention tu as un mis un double $$ ici ligne 5 $$row, c'est pas anodin, t'es sûr de toi ?

    Je n'ai pas compris comment tu rassemblais tes données issues de plusieurs projets en un seul et unique tableau...
    Chaque projet doit bien avoir un id unique :
    est ce que quelque chose dans ce genre ne te faciliterait pas la vie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $projets[$row['id']] = array(...);

  3. #3
    Membre averti

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 205
    Points : 409
    Points
    409
    Billets dans le blog
    1
    Par défaut
    Ton problème se situe ici : $$row['nom_r'][].
    Je pense que tu essaies plutôt de faire ça : ${$row['nom_r']}[] pour une déclaration dynamique de variable ?

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2006
    Messages : 216
    Points : 159
    Points
    159
    Par défaut
    Merci pour vos réponses !

    Effectivement, c'était qui était la bonne version.

    Mais je vais méditer sur ta réponse rawsrc, car effectivement je me prends un peu la tête avec la méthode... Mais avec la bonne syntaxe déjà, ça va aller mieux ;-) oui, ils ont bien un id unique.

    Merci !

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

Discussions similaires

  1. [Tableaux] Une variable dynamique de type tableau
    Par martin__ dans le forum Langage
    Réponses: 3
    Dernier message: 02/08/2007, 19h22
  2. [Tableaux] Construction de variable dynamique
    Par benoît82 dans le forum Langage
    Réponses: 4
    Dernier message: 22/05/2007, 16h36
  3. [Tableaux] Variable dynamique (variable variable)
    Par gabvoir dans le forum Langage
    Réponses: 6
    Dernier message: 06/04/2007, 14h46
  4. Réponses: 2
    Dernier message: 10/12/2006, 09h57
  5. [Tableaux] Recuperation de variable dynamiques
    Par zevince dans le forum Langage
    Réponses: 10
    Dernier message: 18/09/2006, 16h28

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