Bonjour à tous !
Je suis en train d'afficher un questionnaire de priorisation de projet, stocké dans une Base de données POSTGRE, qui se compose de catégories et chaque catégorie a différents indicateurs. Jusque là, tout va bien.
Chaque indicateur à un taux et l'addition de tout les taux des indicateurs faisant partie de la même catégorie donne le taux total de la catégorie (ça permet la notation).
Sont stockés dans la base de données uniquement les taux des indicateurs, puisque celui de la catégorie est calculé (je radote mais au moins, vous me suivez... J'espère).
Pas de problème pour le calcul. Vous allez me dire "il est ou le problème alors ?!" hé bien il est pas bien loin, ça concerne l'affichage de ce calcul...
J'aimerai que le taux de la catégorie se retrouve en face de son libellé, logique. Mais comme le code se déroule, que le libellé est déjà affiché, bien avant le calcul, je ne vois pas bien comment faire...
Voici une capture d'écran du résultat actuel, avec le résultat du calcul juste avant la catégorie suivante. (Catégorie étant par exemple : "RISQUE", "VALEUR FINANCIÈRE", ...)
(pour faire court, j'aimerais afficher "35" en face de "ALIGNEMENT STRATÉGIQUE")
Et puis bien sur, George, mon bout de code :
Mon code est peut être un peu barbare, je suis donc ouverte à toute amélioration, et George n'est pas susceptible.
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82 //connexion à la bdd $c=connec_base (); //requete sql permettant de recuperer les infos $r=pg_exec ($c , "select distinct libcateg, libindic, noteindic, txindic from noter,indicateur,categorie where projet_idprojet='$ident' and categorie.idcateg=indicateur.categorie_idcateg and noter.indicateur_idindic=indicateur.idindic order by libcateg"); //comptage du nombre de ligne pour savoir si on affiche $nbligne=pg_num_rows($r) ; if ($nbligne!=0) { //si la requete retourne des resultats, on affiche le tableau //affichage de la ligne d'entete echo "<table><tr><th></th><th>Note</th></tr>"; //initialisation du taux de la categorie $txcateg=0; //categorie en cours dans variable de travail $l=pg_fetch_array($r,$i); $categ=$l["libcateg"]; // on affiche le libelle de la premiere categorie echo "<tr> <th colspan=2>".$l["libcateg"]."</th> </tr>"; //debut de l'itération sur les indicateurs for ($i=0; $i<pg_numrows($r); $i++) { $l=pg_fetch_array($r,$i); if ($categ==$l["libcateg"]){ //si l'indicateur est dans la même categorie que le precedent echo "<tr> <td>".$l["libindic"]." (".$l["txindic"].")</td> <td>".$l["noteindic"]."</td> </tr>"; $categ=$l["libcateg"]; //calcul du taux total de la catégorie $txcateg=$txcateg+$l["txindic"]; } else { // si pas dans la même, on affiche le taux de la catégorie précedente echo "<tr> <th colspan=2>".$txcateg."</th> </tr>"; // ..et on reinitialise le taux total. $txcateg=0; $categ=$l["libcateg"]; // et enfin, on affiche le nom de la nouvelle categorie echo "<tr> <th colspan=2>".$l["libcateg"]."</th> </tr>"; echo "<tr> <td>".$l["libindic"]." (".$l["txindic"].")</td> <td>".$l["noteindic"]."</td> </tr>"; $txcateg=$txcateg+$l["txindic"]; } } //affichage du taux de la dernière catégorie echo "<tr> <th colspan=2>".$txcateg."</th> </tr>"; echo "</table>"; } else { //si pas de ligne alors on demande à prioriser BlaBla }
J'ai commenté au mieux, j'espère que vous arriverez à le comprendre.
En vous remerciant d'avance !
Partager