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

PHP & Base de données Discussion :

affichage des résultats de plusieurs requêtes


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 176
    Points : 61
    Points
    61
    Par défaut affichage des résultats de plusieurs requêtes
    Bonsoir,

    il n'y a sûrement rien de très profond dans la question que je vais poser. Juste savoir comment implémenter habilement...
    Alors voilà, j'ai une base de données Mysql concernant des transactions financières, et une page php. Le but est d'afficher total des recettes, total des depenses et bilan total pour chaque mois. Pour ça je fais 3 requêtes, requetebilan, requeterecettes et requetedepenses. Avec des commandes du type $resultbilan=mysql_query($requetebilan); l'ordi, résout ces requêtes. $rowbilan=mysql_fetch_array($resultbilan) permet de prendre les mois séparemment (les données sont regroupées par mois). Seulement si je vais pareil pour depenses et recettes, et que je range pour chaque mois les données dans un tableau, il peut arriver, quand il n'y a pas eu de dépense et/ou pas de recettes lors d'un mois que les colonnes se trouvent décalées. Voyez-vous ce que je veux dire???

    Voilà le code (tout le code) qui correspond à ça. Pouvez-vous m'aider???

    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
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    <?
    function nb_color($montantaffich)
    {
       if (($montantaffich) >= 0)
       {
          $color = 'blue';
       }
       else
       {
          $color = 'red';
       }
     
       echo '<span style="color: ' . $color . '">' . $montantaffich . ' €</span>';
    //ceci est imparfait... les chiffres de la partie entière ne sont pas séparés par paquets de 3
    }
    ?>
     
     
    <h2>Bilan par mois</h2>
     
    <?@ $db=mysql_pconnect("localhost","root");//on commence par se connecter à la base de données
     
    if (!$db)
    {echo "Erreur: je n'ai pas pu me connecter à la base de données";exit;}
    else{echo "connection à la base de données ok<br>";}
     
     
     
     
    mysql_select_db("compta");
     
     
    $nom_mois = Array("", "janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", 
    		"septembre", "octobre", "novembre", "décembre");
     
    ?>
     
    <?
    $annee0=date("Y");
    $mois0=date("n");
    $annee1=date("Y",mktime(0,0,0,$mois0 ,0,$annee0));
    $mois1=date("n",mktime(0,0,0,$mois0,0,$annee0));
    $annee2=date("Y",mktime(0,0,0,$mois1 ,0,$annee1));
    $mois2=date("n",mktime(0,0,0,$mois1,0,$annee1));
     
    echo '<table border=5>';
    ?>
     
     
     
    <tr>
    <td bgcolor="#cccccc" align=center>Mois</td>
    <td bgcolor="#cccccc" align=center>Bilan</td>
    <td bgcolor="#cccccc" align=center>dépenses</td>
    <td bgcolor="#cccccc" align=center>recettes</td>
    </tr>
    <tr>
     
    <?
    $requetebilan="select SUM(montant), MONTH(datetransac),YEAR(datetransac)
    from transac
    where epargne!='1' and virement!='1'
    group by MONTH(datetransac),
    YEAR(datetransac)
    ORDER BY
    YEAR(datetransac) DESC,
    MONTH(datetransac) DESC";
     
    $requeterecettes="select SUM(montant), MONTH(datetransac),YEAR(datetransac)
    from transac
    where epargne!='1' and virement!='1' and montant>0
    group by MONTH(datetransac),
    YEAR(datetransac)
    ORDER BY
    YEAR(datetransac) DESC,
    MONTH(datetransac) DESC";
     
    $requetedepenses="select SUM(montant), MONTH(datetransac),YEAR(datetransac)
    from transac
    where epargne!='1' and virement!='1' and montant<0
    group by MONTH(datetransac),
    YEAR(datetransac)
    ORDER BY
    YEAR(datetransac) DESC,
    MONTH(datetransac) DESC";
     
     
    $resultbilan=mysql_query($requetebilan);
     
    $resultrecettes=mysql_query($requeterecettes);
     
    $resultdepenses=mysql_query($requetedepenses);
     
     
     
     
    while($rowbilan=mysql_fetch_array($resultbilan))
    {
    $mois=$rowbilan['MONTH(datetransac)'];
    $annee=$rowbilan['YEAR(datetransac)'];
     
    $rowdepenses=mysql_fetch_array($resultdepenses);
    $rowrecettes=mysql_fetch_array($resultrecettes);
     
     
    echo "<tr><td>".$nom_mois[$mois]." ".$annee;
    echo "<td align=right><h2>";nb_color($rowbilan['SUM(montant)']);echo "</td>";
    echo "<td align=right><h2>";nb_color($rowrecettes['SUM(montant)']);echo "</td>";
    echo "<td align=right><h2>";nb_color($rowdepenses['SUM(montant)']);echo "</td>";
     
     
    $filtre=3;
     
    ?>
     
    <form action="affichagetransactions.php" name="afficher" method=post>
    <input type=hidden name=filtre value='3'>
    <input type=hidden name=moisetude value=<? echo $mois?>>
    <input type=hidden name=anneeetude value=<?echo $annee?>>
    <td colspan=100><input type=submit value="afficher"></td>
    </tr>
    </form>
     
    <? } ?>
     
    </table>

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Points : 1 093
    Points
    1 093
    Par défaut
    je n'ai pas lu ton code il est trop long pour moi

    mais qu'est-ce qui t'empêche de donner une largeur à tes colonnes (en réalité, à tes cellules), du genre dans la page php :et dans le css
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    td.largeur {width: 10em;}

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 176
    Points : 61
    Points
    61
    Par défaut
    euh... je ne crois pas que ça réponde à la question...
    relis sinon le code, au moins les explications que je donne!
    Le problème comme je l'ai expliqué, avec mysql_fetch_array c'est que si je l'emploie pour 3 requêtes différentes dont je veux afficher les résultats sur une seule ligne, c'est à chaque fois le résultat suivant pour chaque requête qui est affiché. Le mieux c'est un exemple. Imagine que les recettes sont:
    0 pour janvier, 100 pour février, 200 pour mars
    les dépenses:
    100 pour janvier, 0 pour février, 200 pour mars
    et donc le bilan:
    -100 pour janvier, 100 pour février, 0 pour mars
    Tel que je l'ai implémenté, l'ordi écrira sur la premier ligne (la première colonne, c'est le bilan, la deuxième les recettes et la troisième les dépenses:
    -100, 100, 100
    100, 200, 200
    et donc ça ne correspond plus à rien, les données sont décalées...

    Cordialement
    Mathieu

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    jai pas lu ton code ( un peu long ..)mais il te faudrait faire je pense quelque chose de ce genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if($donnée == ''){
    //  tu insert une cellule vide
    }
    else{
    //tu insere ta donnée comme tu l'as fait
    }
    Stay in Bed .. Save Energy

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 176
    Points : 61
    Points
    61
    Par défaut
    C'est pas une bonne idée. mysql_fetch_array trouve une valeur à afficher tant qu'il n'est pas arrivé au bout de la requête...
    mais bon le mieux c sûrement de faire une requête qui recherche les données pour chaque mois, ainsi, même si c'est zéro, il y aura forcément une valeur

    Merci pour tout
    Mathieu

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<td align=right><h2>";nb_color($rowbilan['SUM(montant)']);echo
    a la place de ca si tu fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    echo "<td align=right><h2>";
    if ($rowbilan['SUM(montant)'] != ''){ nb_color($rowbilan['SUM(montant)']);echo "</td>"; }
    else {
    echo "</td>"; }
    ca ne serait pas bon?
    Stay in Bed .. Save Energy

Discussions similaires

  1. [SQL] Affichage des résultats d'une requête
    Par alizea77 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 04/01/2008, 01h39
  2. [MySQL] Affichage des résultats de plusieurs requêtes MySQL
    Par Gillou69 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 09/11/2007, 15h05
  3. Affichage des résultats d'une requête dans listbox
    Par Deallyra dans le forum VBA Access
    Réponses: 8
    Dernier message: 09/10/2007, 14h09
  4. [MySQL] Affichage des résultats d'une requête sur plusieurs pages
    Par leloup84 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/10/2006, 13h24
  5. [MySQL] Affichage des résultats d'un requête
    Par wiwi dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 07/02/2006, 11h25

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