Remplir un array à partir d'une bdd

Résolu
Bonsoir à tous...

Je suis en train de rendre dynamique une page html qui affichait l'évolution d'un
chiffre d'affaire.

J'ai donc créé un formulaire qui me sert à remplir une base de données avec les 3
champs suivants :
annee_ca (exemple 2013),
mois_ca (exemple 4 pour avril) et
chiffre_ca (exemple 123456 pour 123.456,00 €).
(Cette partie là fonctionne parfaitement. Je peux même modifier un chiffre d'affaire
déjà renseigné en saisissant une deuxième fois l'année et le mois)


J'aimerai maintenant remplir une table html (tr, td, etc...) avec les éléments de cette
base. Je suppose que le plus simple serait d'utiliser un array, mais je n'ai aucune idée
sur la manière de tourner ce problème en php.

En fait, je pensais passer une valeur à une variable pour obtenir : $an2013[4] ='123456';
pour chiffre d'affaire d'avril 2013 est 123.456,00 €, mais je bloque.

J'ai commencé à déclarer mes tableaux vides :

// Déclaration des array 'années de chiffre d'affaire' :
$an2018 = array();


pour ensuite à l'aide d'un while injecter le chiffre d'affaire avec le mois comme numéro
mais je ne sais pas comment passer en variable le nom de mon tableau $anXXXX ?
Je ne sais d'ailleurs même pas si c'est la bonne solution !

Dernière info, les chiffres d'affaires ne sont pas rangés dans l'ordre dans la base de donnée
bien sûr...

Merci d'avance à tous ceux qui pourraient me donner une piste !

Mon code en panne :

<?php
// Déclaration de l'array 'mois' :
$mois =array('JANVIER','FEVRIER','MARS','AVRIL','MAI','JUIN','JUILLET','AOUT','SEPTEMBRE','OCTOBRE','NOVEMBRE','DECEMBRE');

// Déclaration des array 'années de chiffre d'affaire' : 
$an2018 = array(); $an2017 = array(); $an2016 = array();
$an2015 = array(); $an2014 = array(); $an2013 = array();
$an2012 = array(); $an2011 = array(); $an2010 = array();
$an2009 = array(); $an2008 = array(); $an2007 = array();
$an2006 = array(); $an2005 = array(); $an2004 = array();
$an2003 = array(); $an2002 = array(); $an2001 = array();

// Remplissage de l'array 'années de chiffre d'affaire' avec la base de donnée :
while ($donnees = mysql_fetch_array($sql2)) {
     // A PARTIR D'ICI, JE NE SAIS PAS COMMENT FAIRE !
     // pour avoir comme résultat quelques chose comme $an2012[9]=('45875') par exemple !
     $an . $donnees['annee_ca']($donnees['mois_ca'])=[$donnees['chiffre_ca'];
}


// Tableau : 
for ($m=1; $m<13; $m++){
 ?><tr><?php
  ?><td align="left"> <?php echo $mois[$m-1]; ?> </td><?php
    for ($annee=2018; $annee>2009;--$annee) {
    ?><td align="right"><?php
      ?></td><?php
      }
     ?></tr><?php
}
?>
 

2 réponses

  1. En fait il ne faut plus utiliser ces méthodes pour la connexion à la BDD, dirige toi vers PDO...

    Un article de mon blog sur PDO : http://ww12.xrecasens.info

    recherche du coté de la méthode fetchALL() ou encore setFetchMode(FETCH_ASSOC).

    Pour ce qui est de ton array, je partirai plus sur un array de ce type :

    $array[2018][Janvier] = CA;
    $array[2018][Février] = CA;

    Avec une boucle c'est très facile à exploiter ce genre d'array.

    Genre :
    foreach($array as $an -> $moiss) {
    foreach($moiss as $mois-> $ca {
    echo $mois.' = '. $ca;
    }
    }
    1. Merci beaucoup pour ton aide...
      Je vais essayer ta méthode qui devrait moins solliciter les accès à la bdd plutôt
      que des boucles imbriquées (while dans un for)...

      Pour ce qui est de PDO, (je le sais déjà, chaque fois que je poste on me le
      signale !) je suis déjà en train de modifier un autre site,
      mais c'est galère, le simple fait d'avoir changé le mode de connexion
      à la bdd, plus rien ne fonctionne, il faut tout reprendre !
    2. PS : Je conserve précieusement ton lien très bien fait vers tes astuces PDO !
      Merci...
    3. Une autre bonne pratique dans cette idée la, c'est de créer une classe pour ta connexion bdd, ainsi si tu dois changer de système de connexion, tu as juste a réadapter cette classe pour que tout fonctionne partout. Et même si tu utilises PDO, tu crée une classe qui hérite de PDO.