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éation de variables dynamiques


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Billets dans le blog
    5
    Par défaut création de variables dynamiques
    Bonjour,

    Je galère sur ce truc qui est censé être assez simple...
    voila j'ai trois tableaux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $array2009 = array();
    $array2010 = array();
    $array2011 = array();
    Mon soucis, c'est que je voudrais que mon script s'adapte en fonction des années à venir, je ne veux donc pas créer mes tableaux à la main.
    Pour ce qui de la récupération de l'année, j'utilise ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $year = 2009;
    for($i=$year; $i<date("Y")+1; $i++){...}
    Pour ce qui est des données présentes dans mon tableau, elle proviennent de la base de données, donc pas de soucis pour les remplir...

    Mon problème c'est : Comment générer autant de tableau que j'ai d'années ? Comment faire pour créer la variable de type $arrayMonAnnée ?

    [EDIT]FAQ Find...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for($i=0; $i<10; $i++){
        $ct_var = "nombre_" . $i;
        echo $$ct_var;
    }
    Cela ne me dit pas comment entrée des données dans mes variables...
    Aide les autres...
    Et les autres t'aideront....
    Mon site DVP
    N'oubliez pas de consulter les FAQ SharePoint et les cours et tutoriels SharePoint

    N'oubliez pas de voter pour les messages dont la réponse est pertinente

  2. #2
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    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
    Par défaut
    Plusieurs solutions sont possible, tu peux effectivement passer par les variables dynamiques:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for ($i=2007;$i<=date('Y');$i++) 
      ${'annee'.$i} = $i;
     
    var_dump($annee2011);
    Mais je trouve cette solution à la fois peu pratique et dangereuse, il vaut mieux utiliser des tableaux multi-dimentionnels:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $annees = array();
    for ($i=2007;$i<=date('Y');$i++) 
      $annees[$i] = $i;
     
    var_dump($annees[2011]);

  3. #3
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Billets dans le blog
    5
    Par défaut
    En effet la seconde solution parait plus propre mais je ne m'en sort pas beaucoup plus...
    Voici mon code :
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    <?php
    //création d'une table de liaison pour l'affichage en français.
    	$mois = array('1' => 'Janvier',
    				  '2' => 'Fevrier',
    				  '3' => 'Mars',
    				  '4' => 'Avril',
    				  '5' => 'Mai',
    				  '6' => 'Juin',
    				  '7' => 'Juillet',
    				  '8' => 'Aout',
    				  '9' => 'Septembre',
    				  '10' => 'Octobre',
    				  '11' => 'Novembre',
    				  '12' => 'Decembre');
     
    	$year = array();
    	for($i=2009; $i<date("Y")+1; $i++){
    		$year[$i] = $i;
    ?>
    		<table class="table" align="center">
    		<caption>Année <?php echo $i;?></caption>
    		<tr>
    			<th class='blank'>/</th>
    			<?php 
    				$q = pg_query($db,$req);
    				while($res = pg_fetch_assoc($q)){echo "<th>".$mois[$res['mois']]."</th>";}
    			?>
    			<th>
    			Total
    			</th>
    		</tr>
    		<tr align=center>
    			<th>Nb téléchargements :</th>
    			<?php
    				$q = pg_query($db,$req);
    				$count = 0;
    				$arrayCounter = 0;
    				while($res2 = pg_fetch_assoc($q))
    				{
    					echo "<td>".$res2['total']."</td>";
    					$count += $res2['total'];
    					$year[$i][$arrayCounter] = $res2['total'];
    					$arrayCounter++;
    				}
    				echo "<td class=total>".$count."</td>";
    				$year[$i][$arrayCounter] = $count;
    			?>
    		</tr>
    		</table>
    <?php } ?>
    J'espère que celui-ci est assez compréhensible...
    J'ai volontairement coupé ce qui ne sert pas (connexion DB, scripts...)
    Comme vous l'aurez sans doute compris mon but est d'afficher un tableau comprenant des statistiques... Cela fonctionne très bien, en revanche je n'arrive pas à conserver les données dans des "array" par années...
    Si vous avez une suggestion, je suis preneur !

    Un var_dump donne le résultat suivant :
    int(2009)int(2010)int(2011)
    Aide les autres...
    Et les autres t'aideront....
    Mon site DVP
    N'oubliez pas de consulter les FAQ SharePoint et les cours et tutoriels SharePoint

    N'oubliez pas de voter pour les messages dont la réponse est pertinente

  4. #4
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    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
    Par défaut
    Comme suggestions je te recommande de:
    - séparer la logique métier (le calcul des stats) de la présentation (la mise en forme HTML), le mieux serait évidement de mettre ces deux aspects dans des fichiers séparés
    - consolider toutes les donnée dans des tableaux multidimentionnels avant affichage, ce sera plus simple à manipuler
    - utiliser la syntaxe alternative de PHP pour l'affichage afin d'avoir une identation propre et de ne pas recourir à echo

    Est ce que tu peux nous décrire ce que tu cherches à faire concrêtement ?

  5. #5
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par Benjamin Delespierre Voir le message
    Comme suggestions je te recommande de:
    - séparer la logique métier (le calcul des stats) de la présentation (la mise en forme HTML), le mieux serait évidement de mettre ces deux aspects dans des fichiers séparés
    - consolider toutes les donnée dans des tableaux multidimentionnels avant affichage, ce sera plus simple à manipuler
    - utiliser la syntaxe alternative de PHP pour l'affichage afin d'avoir une identation propre et de ne pas recourir à echo

    Est ce que tu peux nous décrire ce que tu cherches à faire concrêtement ?
    Je prend note, il s'agit de mon premier projet php, j'ai donc pas encore les bon réflexes.
    Voici ce que j'ai actuellement :

    Il s'agit d'une page dynamique qui me permet d'afficher quelques statistiques depuis ma BDD.
    Je souhaiterais ajouter des graphiques à cette page.
    Pour cela j'utilise le script Highcharts-2.1.6. Mon problème c'est d'arriver à injecter les valeur de ma bdd dans le script.
    C'est pour cela que je pensais passer par un tableau pour enregistrer toutes mes valeurs et les donner en paramètre à mon script ensuite.

    Ce n'est pas être pas la meilleure façon...
    Aide les autres...
    Et les autres t'aideront....
    Mon site DVP
    N'oubliez pas de consulter les FAQ SharePoint et les cours et tutoriels SharePoint

    N'oubliez pas de voter pour les messages dont la réponse est pertinente

  6. #6
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    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
    Par défaut
    Je vois.

    J'imagine que l'un des problèmes est d'avoir tous les mois dans les tables non ?
    Ce problème peut être résolu en fabriquant des structures (array) préremplies avec des compeurs à 0 et les remplir avec les données en provenance de la BDD, ainsi tu verra bien apparaitre tous les mois calendaires sur ton interface.

    Pour ce qui est de HighChart je ne l'utilise pas mais à moins que tu n'aies aquis la licence, j'espère que ton projet est "non-profit": http://www.highcharts.com/license
    Sinon, il y a d'autres solutions plus ouvertes:
    - http://g.raphaeljs.com/
    - http://pchart.sourceforge.net/
    A toi de voir.

    Pour passer les paramètres à ton script, tu peux effectivement extraire ces données du tableau (certaines librairies de graphiques en sont nativement capables d'ailleurs) ou alors tu peux utiliser l'astuce des JSon Data Island: http://www.phpied.com/json-data-island/

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

Discussions similaires

  1. [MySQL] création de colonne dynamique via une variable php
    Par xKryckx dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 09/04/2015, 18h47
  2. [WD14] Création de nom de variables dynamiquement
    Par fhmayn dans le forum WinDev
    Réponses: 3
    Dernier message: 12/02/2010, 17h02
  3. Création de variable dynamique
    Par netsliver dans le forum C++Builder
    Réponses: 1
    Dernier message: 02/08/2006, 18h48
  4. Récupération de variables dynamiques complexes
    Par ludoboy dans le forum ASP
    Réponses: 7
    Dernier message: 24/05/2004, 17h51
  5. [LG]Problême Variable dynamique de types différents
    Par pierrOPSG dans le forum Langage
    Réponses: 2
    Dernier message: 29/04/2004, 16h01

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