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 :

Faire la somme d'une colonne et afficher les enregistrements correspondants à une date d'enregistrement


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Juillet 2021
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Juillet 2021
    Messages : 14
    Points : 9
    Points
    9
    Par défaut Faire la somme d'une colonne et afficher les enregistrements correspondants à une date d'enregistrement
    Bonjour,

    j'ai une table dont je veux faire la somme d'une colonne et afficher les enregistrements en fonction de la date saisie dans le champs d'un formulaire de recherche. La table comprend les colonne noms, type_versement, versement, date_paiement. Lorsque je valide la date (par exemple 2021-07-03) depuis le formulaire , j'obtient la somme correspondant aux enregistrements de cette date. par contre, je n'ai que l'affichage du premier enregistrement de cette date. je pense que mon problème est lié à la requête. j'ai parcouru les forums sur les requêtes avec les fonctions d'agrégation en vain.

    merci d'avance de bien vouloir m'aider!

    mon code:

    Code php : 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
    <?php
     
    $resultats = "";
     
    if (isset($_POST['search']) && !empty ($_POST['search'])) {
    try {
      $db = new PDO('mysql:host=localhost;dbname=bdd', 'XXX','X', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
    } catch (PDOException $e) {
      die ($e->getMessage());
    }
     
    $query = $_POST['search'];
     
     
    $req = $db->prepare("SELECT noms,versement,type_versement,date_paiement,(SELECT SUM(versement)) AS total FROM cinquiemev WHERE date_paiement LIKE ?");
     
    $req->execute(array('%' . $query . '%'));
     
    } 
     ?>
     
     <!DOCTYPE html>
    <html lang="en" dir="ltr">
      <head>
        <meta charset="utf-8">
        <title>BILAN QUOTIDIENT</title>
      </head>
      <body><br>
        <form method="post">
          <label for="search">TOTAL QUOTIDIENT: </label>
          <input type="search" name="search" value="">
          <input type="submit" name="submit" value="valider">
        </form></br>
     
     <table width="80%" border="1" cellspacing="0" bordercolor="#FFFFFF">
    <thead>
    <tr>
    <td>NOM ET PRENOMS</td>
    <td>MONTANT*(FCFA)</td>
    <td>NATURE VERSEMENT</td> 
    <td>DATE DE PAIEMENT</td>
    <td><span style="position: absolute; bottom: 300px; left: 1050px; width: 242px; heigth: 70px;">
    TOTAL =
    </span></td>
    </tr>
    </thead>
    <tbody>
    <?php while($data = $req->fetch(PDO::FETCH_ASSOC)): ?>
    <tr>
    <td><?php echo htmlspecialchars($data['noms']);?></td>
    <td><?php echo htmlspecialchars($data['versement']);?></td>
    <td><?php echo htmlspecialchars($data['type_versement']);?></td>
    <td><?php echo htmlspecialchars($data['date_paiement']);?></td>
    <td><?php echo htmlspecialchars($data['total']);?></td>
    </tr>
    <td><?php endwhile; ?></td>
    </tbody>
    </table>
      </body>
    ou
    Nom : Capture d’écran (28).png
Affichages : 129
Taille : 83,3 Ko
    ma table:
    Nom : Capture d’écran (24).png
Affichages : 118
Taille : 198,4 Ko

    voilà le résultat que j'ai:
    Nom : Capture d’écran (27).png
Affichages : 106
Taille : 34,5 Ko

  2. #2
    Inactif  
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2021
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2021
    Messages : 645
    Points : 1 280
    Points
    1 280
    Par défaut
    Bonjour,

    Il suffit de faire 2 requêtes.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Juillet 2021
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Juillet 2021
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Bonjour,

    Il suffit de faire 2 requêtes.
    merci de votre reponse,
    comment dois-je faire?

  4. #4
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 043
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 043
    Points : 8 075
    Points
    8 075
    Billets dans le blog
    17
    Par défaut
    Requête 1 – Obtenir le total

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT ALL SUM(versement) AS total
    FROM cinquiemev
    WHERE DATE(date_paiement) = :search

    Requête 2 – Obtenir les lignes

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT ALL noms, type_versement, versement, date_paiement
    FROM cinquiemev
    WHERE DATE(date_paiement) = :search
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  5. #5
    Inactif  
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2021
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2021
    Messages : 645
    Points : 1 280
    Points
    1 280
    Par défaut
    Bonjour,

    1- SELECT ALL ??
    2- date_paiement est au format DATETIME alors que :search au format DATE -> on peut utiliser la fonction DATE()

    Requête 1 – Obtenir le total
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT SUM(versement) AS total
    FROM cinquiemev
    WHERE DATE(date_paiement) = :search

    Requête 2 – Obtenir les lignes
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT noms, type_versement, versement, date_paiement
    FROM cinquiemev
    WHERE DATE(date_paiement) = :search

  6. #6
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 043
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 043
    Points : 8 075
    Points
    8 075
    Billets dans le blog
    17
    Par défaut
    2- date_paiement est au format DATETIME
    Bien vu, je corrige
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Juillet 2021
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Juillet 2021
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Bonsoir,

    grâce à vous je suis parvenu au résultat escompté. Effectivement la bonne structure est de faire les deux requêtes. Toutefois la condition DATE(date_paiement) = :search, ne marche pas avec mon code. En lieu et place de celle-ci, l'emploi de DATE(date_paiement) LIKE ? marche bien. Mes remerciements à vous (jreaux62 et Séb) pour votre précieuse contribution.

    mon code php final:

    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
    <?php
     
    $resultats = "";
     
    if (isset($_POST['search']) && !empty ($_POST['search'])) {
    try {
      $db = new PDO('mysql:host=localhost;dbname=bdd', 'XX','X', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
    } catch (PDOException $e) {
      die ($e->getMessage());
    }
     
    $query = $_POST['search'];
     
     
    $req1 = $db->prepare(" SELECT  SUM(versement) AS total FROM cinquiemev WHERE DATE(date_paiement) LIKE ? ");
    $req2 = $db->prepare(" SELECT noms, type_versement, versement, date_paiement FROM cinquiemev WHERE DATE(date_paiement) LIKE ? ");
     
    $req1->execute(array('%' . $query . '%'));
    $req2->execute(array('%' . $query . '%'));
    } 
     ?>
     
     <!DOCTYPE html>
    <html lang="en" dir="ltr">
      <head>
        <meta charset="utf-8">
        <title>BILAN QUOTIDIENT</title>
      </head>
      <body><br>
        <form method="post">
          <label for="search">TOTAL QUOTIDIENT: </label>
          <input type="search" name="search" value="">
          <input type="submit" name="submit" value="valider">
        </form></br>
     
     <table width="80%" border="1" cellspacing="0" bordercolor="#FFFFFF">
    <thead>
    <tr>
    <td>NOM ET PRENOMS</td>
    <td>MONTANT&nbsp(FCFA)</td>
    <td>NATURE VERSEMENT</td> 
    <td>DATE DE PAIEMENT</td>
    <td><span style="position: absolute; bottom: 300px; left: 1050px; width: 242px; heigth: 70px;">
    TOTAL =
    </span></td>
    </tr>
    </thead>
    <tbody>
    <?php while($data = $req1->fetch(PDO::FETCH_ASSOC)): ?>
    <tr>
     
    <td><?php echo htmlspecialchars($data['total']);?></td>
    </tr>
    <td><?php endwhile; ?></td>
    <?php while($data = $req2->fetch(PDO::FETCH_ASSOC)): ?>
    <tr>
    <td><?php echo htmlspecialchars($data['noms']);?></td>
    <td><?php echo htmlspecialchars($data['versement']);?></td>
    <td><?php echo htmlspecialchars($data['type_versement']);?></td>
    <td><?php echo htmlspecialchars($data['date_paiement']);?></td>
    </tr>
    <td><?php endwhile; ?></td>
    </tbody>
    </table>
    </body>
    </html>

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

Discussions similaires

  1. Faire la somme d'une colonne obtenue avec la fonction SUM()
    Par gouzou38 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 14/05/2011, 11h01
  2. Faire la somme d'une colonne dans la même requête
    Par logiciel_const dans le forum SQL
    Réponses: 23
    Dernier message: 26/10/2010, 10h47
  3. Faire la somme d'une colonne
    Par vg-matrix dans le forum Rave
    Réponses: 1
    Dernier message: 02/11/2009, 16h28
  4. faire la somme d'une colonne ou il y a des chifres et du texte
    Par newcodeur dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 03/07/2008, 15h28
  5. faire la somme d'une colonne d'une listbox
    Par Namson dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 26/04/2007, 00h34

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