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 :

Calcul, rupture de séquence et affichage


Sujet :

Langage PHP

  1. #1
    Membre actif Avatar de _Carole
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2013
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 105
    Points : 264
    Points
    264
    Par défaut Calcul, rupture de séquence et affichage
    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 :
    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
     
     
            }
    Mon code est peut être un peu barbare, je suis donc ouverte à toute amélioration, et George n'est pas susceptible.
    J'ai commenté au mieux, j'espère que vous arriverez à le comprendre.

    En vous remerciant d'avance !

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Sans relire tout ton code, tu n'es pas prisonnier du moment de l'affichage en PHP.

    Par exemple ci-dessous j'affiche un total avant le détail ligne par ligne, il y a juste a stocker les données pour les réafficher dans l'ordre de présentation voulu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $ligne = '';
    $total = 0;
    while ($l = pg_fetch_array($r,$i)) {
         $lignes .= "<tr>
                            <td>".$l["libindic"]." (".$l["txindic"].")</td>
                            <td>".$l["noteindic"]."</td>
                         </tr>";
         $total += $l["noteindic"];
    }
     
    echo '<tr><td colspan="2">' . $total . '</td></tr>';
    echo $lignes;

  3. #3
    Membre actif Avatar de _Carole
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2013
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 105
    Points : 264
    Points
    264
    Par défaut
    Ah bah oui c'est vrai ! J'avais pas pensé à mettre mon texte dans une variable.... Merci beaucoup pour cette réponse!

    (Je ne poste pas le code mis à jour, c'est quasi la même chose que celui de Sabotage).

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

Discussions similaires

  1. Affichage à la manière d'un GROUP BY - Rupture de séquence
    Par _Carole dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 29/04/2013, 17h04
  2. Statistique mensuelle, rupture de séquence d'un mois
    Par lodan dans le forum Requêtes
    Réponses: 10
    Dernier message: 28/01/2009, 13h08
  3. Exception:Extraction en rupture de séquence
    Par romano dans le forum JDBC
    Réponses: 1
    Dernier message: 28/02/2007, 11h42
  4. Réponses: 4
    Dernier message: 28/05/2006, 20h00
  5. Instruction de rupture de séquence itérative avec XSL
    Par peak dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 11/08/2005, 15h32

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