Remplir un array à partir d'une bdd

Résolu/Fermé
Signaler
Messages postés
91
Date d'inscription
mardi 9 décembre 2014
Statut
Membre
Dernière intervention
7 décembre 2021
-
Messages postés
216
Date d'inscription
lundi 2 décembre 2013
Statut
Membre
Dernière intervention
10 octobre 2016
-
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
}
?>
 
A voir également:

2 réponses

Messages postés
91
Date d'inscription
mardi 9 décembre 2014
Statut
Membre
Dernière intervention
7 décembre 2021

En fait, j'ai trouvé ça qui fonctionne, mais cela me semble pas "pro",
je pense que la solution est dans un array...


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

for ($m=1; $m<13; $m++){ ?>

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

while ($data = mysql_fetch_array($sql2)){
if ($data['annee_ca']==$annee && $data['mois_ca']==$m){
echo $data['chiffre_ca'];
}
}
echo ' ' . '</td>';
mysql_data_seek($sql2,0);
}
}
Messages postés
216
Date d'inscription
lundi 2 décembre 2013
Statut
Membre
Dernière intervention
10 octobre 2016
21
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;
}
}
Messages postés
91
Date d'inscription
mardi 9 décembre 2014
Statut
Membre
Dernière intervention
7 décembre 2021

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 !
Messages postés
91
Date d'inscription
mardi 9 décembre 2014
Statut
Membre
Dernière intervention
7 décembre 2021

PS : Je conserve précieusement ton lien très bien fait vers tes astuces PDO !
Merci...
Messages postés
216
Date d'inscription
lundi 2 décembre 2013
Statut
Membre
Dernière intervention
10 octobre 2016
21
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.