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 de ma requête MySql


Sujet :

PHP & Base de données

  1. #1
    Invité
    Invité(e)
    Par défaut Affichage de ma requête MySql
    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
    <?php
    try{
        $bdd=new PDO('mysql:host=localhost;dbname=pcg;charset=utf8', 'root','');
        $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);// afficher les erreurs php
    }catch(Exception $e){
        die('Erreur :' . $e->getMessage());
    }
     
    if(!empty($_POST)){
        echo'<script>window.location.href("grandlivre.php")</script>';
    }
    ?>
     
    <!DOCTYPE html>
    <html lang="fr">
     
    <head>
        <meta charset="utf-8">
        <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" href="../css/bootstrap.css">
        <link rel="stylesheet" href="../css/style.css">
        <link rel="stylesheet" href="../css/carousel.css">
        <title>Comptabilité</title>
        <script src="../js/jquery.js"></script>
        <script src="../js/bootstrap.min.js"></script>
    </head>
     
    <body>
        <div id="grandlivre">
            <div class="container">
                <div class="row">
                    <div class="col-sm-12">
                        <h1 style="font-size:25px;text-align:center;color:black;">Grand livre</h1>
                        <table>
                            <thead>
                                <tr>
                                    <th class="journal">Journal</th>
                                    <th class="dateecritures">Date</th>
                                    <th class="libelle">Libellé écritures</th>
                                    <th class="debit">Débit</th>
                                    <th class="credit">Crédit</th>
                                    <th class="solde">Solde</th>
                                </tr>
                            </thead>
                            <tbody>
                                <?php
                                $comptePrecedent = 0;
                                //Sélection des numéros et noms de compte dans le plan comptable
                                $response = $bdd->query('SELECT * FROM plancomptable');
                                $plancomptable = $response->fetchAll();
                                $response->closeCursor();
     
                                //Sélection des écritures comptables correspondant au numéro de compte
                                $responses = $bdd->query('SELECT * FROM ecriturescomptables E INNER JOIN plancomptable B ON E.numerocompte = B.compte ORDER BY E.numerocompte, E.date_operation');
                                $ecritures = $responses->fetchAll();
                                setlocale(LC_ALL, ['fr_FR.UTF8','fra', 'french']);
                                $responses->closeCursor();
     
                                    foreach( $ecritures as $ecriture ) {
                                        if( $comptePrecedent != $ecriture['compte'] ) {
                                            $dateoperation = new DateTime($ecriture['date_operation']);
                                            $debit = $ecriture['debit'];
                                            $credit = $ecriture['credit'];
                                            echo '<tr class="titrecompte"><th colspan="6">'.htmlspecialchars($ecriture['compte']).'. '.htmlspecialchars($ecriture['libelle_plan']).'</th></tr>'; 
                                        if($debit < 0){
                                            echo '<tr><td>'.htmlspecialchars($ecriture['journal']).'</td><td>'.utf8_encode(strftime('%d %B %Y', $dateoperation->format('U'))).'</td><td>'.htmlspecialchars($ecriture['libelle_comptable']).'</td><td>'.''.'</td><td>'.number_format($credit, 2, ',', ' ').'</td></tr>';
                                          }else {
                                             echo '<tr><td>'.htmlspecialchars($ecriture['journal']).'</td><td>'.utf8_encode(strftime('%d %B %Y', $dateoperation->format('U'))).'</td><td>'.htmlspecialchars($ecriture['libelle_comptable']).'</td><td>'.number_format($debit, 2, ',', ' ').'</td><td>'.''.'</td></tr>';
                                        }
                                        //Calcul des totaux débit et crédit et solde respectif
                                        $response1=$bdd->query('SELECT SUM(debit) AS totaldebiteur, SUM(credit) AS totalcrediteur FROM ecriturescomptables WHERE numerocompte = '.$ecriture['compte'].' GROUP BY numerocompte');
                                        $totaux=$response1->fetchAll();
                                        if (!empty($totaux)){
                                            foreach($totaux as $total){
                                                $compte = $ecriture['compte'];
                                                $libelle_plan = $ecriture['libelle_plan'];
                                                $totaldebiteur = $total['totaldebiteur'];
                                                $totalcrediteur = $total['totalcrediteur'];
                                                $soldedebiteur = $totaldebiteur - $totalcrediteur;
                                                $soldecrediteur = $totalcrediteur - $totaldebiteur;
     
                                                if($totaldebiteur > $totalcrediteur){
                                                    echo '<tr><td>'.'</td><td>'.'</td><td class="totaux">'.'Solde débiteur'.'</td><td class="totaux">'.number_format($totaldebiteur, 2, ',', ' ').'</td><td class="totaux">'.number_format($totalcrediteur, 2, ',', ' ').'</td><td class="totaux">'.number_format($soldedebiteur, 2, ',', ' ').'</td></tr>';
                                                }else {
                                                    echo '<tr><td>'.'</td><td>'.'</td><td class="totaux">'.'Solde créditeur'.'</td><td class="totaux">'.number_format($totaldebiteur, 2, ',', ' ').'</td><td class="totaux">'.number_format($totalcrediteur, 2, ',', ' ').'</td><td class="totaux">'.number_format($soldecrediteur, 2, ',', ' ').'</td></tr>';
                                                }
                                            }
                                        }
                                            // Insertion et Mise à jour solde
                                            $insertionMAJsoldes = $bdd->prepare('INSERT INTO balance (compte, libelle_plan, soldedebiteur, soldecrediteur) VALUES ( :compte, :libelle_plan, :soldedebiteur, :soldecrediteur ) ON DUPLICATE KEY UPDATE compte = :compte, libelle_plan = :libelle_plan, soldedebiteur = :soldedebiteur, soldecrediteur = :soldecrediteur;');
                                            $insertionMAJsoldes->execute( array(
                                                'compte' => $compte,
                                                'libelle_plan' => $libelle_plan,
                                                'soldedebiteur' => $soldedebiteur,
                                                'soldecrediteur' => $soldecrediteur
                                            ));
                                            $insertionMAJsoldes->closeCursor();
                                        }
                                $comptePrecedent = $ecriture['compte'];
                                }
                                ?>
                            </tbody>
                        </table>
                    </div>
                </div>
            </div>
        </div>
     
        <script type="application/javascript" src="../js/jquery-3.4.1.min.js"></script>
        <script src="../js/script.js"></script>
    </body>
     
    </html>
    Bonjour,

    Dans la partie "Sélection des écritures comptables correspondant au numéro de compte", ma requête Sql fonctionne parfaitement. Mon problème se situe dans l'affichage de résultats de ma requête à partir du foreach. Cela m'affiche qu'un seul résultat et non tous les résultats souhaités.

    Merci d'avance.
    Dernière modification par Invité ; 16/02/2020 à 17h14.

  2. #2
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    salut,

    plusieurs points :
    qu'est ce que tu penses faire avec ces lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(!empty($_POST)){
        echo'<script>window.location.href("grandlivre.php")</script>';
    }
    pouquoi utiliser utf8_encode() partout ?
    Ton charset est utf-8, si tes scripts sont encodés en utf-8 sans BOM et que la connexion à la base de données est bien sur utf-8 (ce qui est le cas), tout ce que tu manipules sera en utf-8 sans avoir rien à faire.

    Quelle version de PHP ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Salut,

    Le echo n'est pas utile dans ce fichier, je suis d'accord.

    Mais, le reste de ta réponse ne m'est d'aucune utilité, car cela ne répond pas à ma problématique.
    Dernière modification par rawsrc ; 17/02/2020 à 12h55. Motif: Inutile de citer un message dans son intégralité pour y répondre

  4. #4
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    ah ouais ! tu ne t'es pas posé la question du pourquoi de mes questions ?
    Bon bah ce n'est pas grave, je voulais juste reprendre ton code intégralement et beaucoup plus proprement mais tant pis, ça sera pour une autre fois.

    PS : tu ne semble pas savoir comment doit être faite une redirection, mais pour ce que j'en dis...

  5. #5
    Invité
    Invité(e)
    Par défaut
    Je n'ai pas le souvenir d'avoir demandé une aide quelconque pour un code propre, mais de m'aider à régler ma problématique, c'est tout. J'ai l'impression que tu ne m'as pas compris.

  6. #6
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    bah si tu avais écris ton code plus proprement, tu aurais vu de suite que la totalité de ton code de rendu n'est exécuté qu'à la condition vérifiée : if( $comptePrecedent != $ecriture['compte'] ) {. Donc à chaque fois que cette condition n'est pas vérifiée, rien ne s'affiche (c'est-à-dire presque tout le temps)

    Ecrire un pavé de cet acabit, c'est prendre des risques. Il vaut mieux diviser tout ça en blocs distincts avec par exemple des closures

  7. #7
    Invité
    Invité(e)
    Par défaut
    Même en le supprimant, cela ne change rien. Pour moi, le problème se situe

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    code des lignes 101-102 mal placé.

    Cela "répond à ta problématique".
    Mais je n'en dirais pas plus, compte tenu du ton employé...

  9. #9
    Invité
    Invité(e)
    Par défaut
    Visiblement, on ne peut pas dire les choses en face. Pour moi, ce forum m'empêche de m'exprimer librement et j'ai le sentiment d'être rabaissé et dénigré. Pour ces raisons, je me désinscris et publierai un avis très négatif sur ce site.

  10. #10
    Invité
    Invité(e)
    Par défaut
    1- Essaie de dire "merci", pour commencer, à ceux qui prennent la peine de te répondre, et tu verras que les choses peuvent être différentes.

    2- ASTUCE : si tu veux qu'on ne s'occupe QUE de ta problématique, ne montre QUE le code nécessaire et suffisant.

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

Discussions similaires

  1. [MySQL] Problème avec l'affichage de ma requête mysql
    Par vins31 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 04/06/2007, 20h18
  2. Problème d'affichage d'une requête
    Par alexandrebergercyr dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 04/05/2007, 20h40
  3. [MySQL] Problème d'affichage d'une requête
    Par frakosun dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 23/04/2007, 18h22
  4. Réponses: 1
    Dernier message: 07/08/2006, 10h22
  5. problème $_POST et $_SESSION et requête MYSQL
    Par GarGamel55 dans le forum Requêtes
    Réponses: 9
    Dernier message: 25/01/2006, 22h10

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