Affichage des donnees dans un tableau

Fermé
olivierndategana Messages postés 3 Date d'inscription lundi 8 juin 2020 Statut Membre Dernière intervention 9 juin 2020 - Modifié le 8 juin 2020 à 15:07
olivierndategana Messages postés 3 Date d'inscription lundi 8 juin 2020 Statut Membre Dernière intervention 9 juin 2020 - 9 juin 2020 à 13:48
Bonjour la communauté
J'ai deux tables : l'un c'est lignebudget et l'autre c'est souslignebudget. Ayant plusieurs lignes budgétaires dont chacune peut avoir une ou plusieurs sous lignes budgétaires j'aimerai afficher dans un tableau chaque ligne budgetaire avec ses sous lignes comme illustre cette image en bas :


sur cette image : fournitures et personnel sont des lignes budgétaires.
J'utilise le php

Merci d'avance

4 réponses

yg_be Messages postés 23327 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 novembre 2024 Ambassadeur 1 551
8 juin 2020 à 15:13
bonjour, qu'as-tu essayé?
0
jordane45 Messages postés 38288 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 15 novembre 2024 4 703
8 juin 2020 à 15:13
Bonjour,

oui... et ?
Qu'as tu commencé à faire ?
Sur quoi bloques tu exactement ?
Quelle est la structure de tes tables ?

Sais tu faire des requêtes SQL ?
Sais tu faire des boucles en PHP ?

Qu'utilises tu pour relier ton code php à ta bdd ? mysqli ? pdo ?

Ton souci est au niveau de la requête SQL ( vu que tu as posté dans le forum mysql ) ou de ton code PHP ( et dans ce cas il faudra que je déplace ta question dans le bon forum.. ) ??

NB: Pour poster ton code sur le forum, tu devras utiliser les balises de code.
Explications ( à lire entièrement ) disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code


0
olivierndategana Messages postés 3 Date d'inscription lundi 8 juin 2020 Statut Membre Dernière intervention 9 juin 2020
Modifié le 8 juin 2020 à 21:09
Voici ce que j'ai essayé et le résultat que j'ai
<table class="table table-bordered table-hover">
 <thead>                  
  <th bgcolor="green">CODE</th>
  <th bgcolor="green">LIGNE BUDGETAIRE</th>
  <th bgcolor="green">UNITE</th>
  <th bgcolor="green">QTE</th>
  <th bgcolor="green">FREQ</th>
  <th bgcolor="green">CU</th>
  <th bgcolor="green">CT</th>
  <th bgcolor="green">%</th>
  <th bgcolor="green">OBS/NOTES</th>
 </thead>
 <tbody>
  <?php 
   require 'ajout/cnx.php';
   $donneess = "SELECT * FROM budgetline, projet  where budgetline.idprojet=projet.id and projet.id='$idprojet'";
   $recupp=$connexion->prepare($donneess);
   $recupp->execute();
   $count=$recupp->roWcount();
   if ($count>0){
    $donnees = "SELECT budgetline.montant,budgetline.codeligne, budgetline.designation,  souslignebudget.codesousligne,souslignebudget.desig, souslignebudget.unite, souslignebudget.qte, souslignebudget.montantunitaire, souslignebudget.frequence, souslignebudget.montanttotal, souslignebudget.pourcentage, souslignebudget.observation FROM souslignebudget,budgetline where souslignebudget.idligne=budgetline.id and budgetline.idprojet='$idprojet'";
    $recup=$connexion->prepare($donnees);
    $recup->execute();
    $count=$recup->roWcount();
    if ($count>0){
     $service=$recup->fetchall(PDO::FETCH_OBJ);
  ?>
     <?php foreach ($service as $ser):?>
     <?php
      echo "<tr>";
      echo "<td colspan='9' class='justifier' bgcolor='gray'><strong>".$ser->codeligne.". ".$ser->designation."</strong></td>";
      echo "</tr>";
      echo "<tr>";
       echo "<td class='justifier'><strong>".$ser->codesousligne."</strong></td>";echo "<td class='justifier'>".$ser->desig."</td>";
       echo "<td>".$ser->unite."</td>";
       echo "<td>".$ser->qte."</td>";
       echo "<td>".$ser->frequence."</td>";
       echo "<td>".$ser->montantunitaire."</td>";
       echo "<td><strong>".$ser->montanttotal."</strong></td>";
       echo "<td>".$ser->pourcentage."</td>";
       echo "<td class='justifier'>".$ser->observation."</td>";
      echo "</tr>";
      echo "<tr>";
       echo "<td colspan='6' class='justifier' bgcolor='gray'><strong>SOUS-TOTAL</strong></td>";
       echo "<td class='justifier' bgcolor='gray'><strong>".$ser->montant."</strong></td>";
       echo "<td bgcolor='gray'></td>";
       echo "<td bgcolor='gray'></td>";
      echo "</tr>";
     ?>
     <?php endforeach;?>
     <?php
     $totgen=0;
     require 'ajout/cnx.php';
     $donnees2 = "SELECT  souslignebudget.montanttotal FROM souslignebudget,budgetline,projet where souslignebudget.idligne=budgetline.id and budgetline.idprojet=projet.id and projet.id='$idprojet'";
     $recupp=$connexion->prepare($donnees2);
     $recupp->execute();
     $servicee=$recupp->fetchall(PDO::FETCH_OBJ);
     ?>
     <?php foreach ($servicee as $serr):?>
     <?php
      $totgen+=$serr->montanttotal;?>
     <?php endforeach;?>
     <?php 
     echo "<tr>";
      echo "<td class='justifier'colspan='6'bgcolor='gray'>"."<strong>"."TOTAL GENERAL DU BUDGET"."</strong>"."</td>";
      echo "<td class='justifier'colspan='2' bgcolor='gray'>"."<strong>".$totgen." $"."</strong>"."</td><td bgcolor='gray'></td>";
     echo "</tr>";
     ?>
     <?php 
    }else {
     echo "<script type='text/javascript'> alert('-Erreur: Aucune sous ligne budgétaire déjà enregistrée -')</script>";
     echo "<meta http-equiv='refresh' content='0;URL=allproject.php'>";
    }
    ?>
   <?php
   }else {
    echo "<script type='text/javascript'> alert('-Erreur: Aucune ligne budgétaire déjà enregistrée -')</script>";
    echo "<meta http-equiv='refresh' content='0;URL=allproject.php'>";
   }
   ?>
 </tbody>
</table>


EDIT : Ajout du LANGAGE dans les BALISES DE CODE

Résultat : pour chaque sous ligne budgétaire on affiche la désignation de la ligne et le sous total comme le montre l'image suivante:
0
yg_be Messages postés 23327 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 novembre 2024 1 551 > olivierndategana Messages postés 3 Date d'inscription lundi 8 juin 2020 Statut Membre Dernière intervention 9 juin 2020
8 juin 2020 à 20:40
bonjour, je suggère de commencer par des exercices plus simples, pour maîtriser la technique avant de faire des exercices plus compliqués.
0
jordane45 Messages postés 38288 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 15 novembre 2024 4 703
Modifié le 8 juin 2020 à 21:20
Pour commencer, je t'avais demandé de lire ENTIEREMENT les consignes concernant les balises de code ( j'ai corrigé ton message pour y mettre le langage.)
Je te réinvite donc à lire ENTIEREMENT le fonctionnement des balises de code avant de reposter sur le forum :
https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code

Ensuite, quelques remarques concernant ton code :

- Il n'y a pas besoin, visiblement, de faire plusieurs requêtes.....
Une seule devrait te permettre d'obtenir toutes les infos voulues
SELECT * 
FROM souslignebudget SB
LEFT JOIN budgetline B ON  SB.idligne = B.id
LEFT JOIN projet P  ON B.idprojet = P.id  
AND B.idprojet = '$idprojet'


- La fonction rowCount ne s'utilise JAMAIS sur une requête SELECT en PDO. ( à la place, tu peux faire un count sur le résultat du fetchAll )

- Vu que tu codes en PDO, voici quelques conseils à appliquer :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs


- Je t'invite également à utiliser les consignes données ici pour correctement écrire/présenter ton code. Histoire que ça soit plus lisible et maintenable..
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code

- On remarque également des soucis sur les caractères accentués...
La solution se trouve là :
https://forums.commentcamarche.net/forum/affich-37584944-php-html-caracteres-accentues-et-l-utf8

Commence déjà par faire ces modifications et reviens nous voir avec le "nouveau" code si ton souci persiste.


PS: Je déplace ta question dans le forum php ... la question ne concernant pas réellement un souci sql visiblement...


0
olivierndategana Messages postés 3 Date d'inscription lundi 8 juin 2020 Statut Membre Dernière intervention 9 juin 2020
9 juin 2020 à 13:48
En attendant que j'appliques les bonnes pratiques de codage, voici les codes:
<thead>                  
  <th bgcolor="green">CODE</th>
  <th bgcolor="green">LIGNE BUDGETAIRE</th>
  <th bgcolor="green">UNITE</th>
  <th bgcolor="green">QTE</th>
  <th bgcolor="green">FREQ</th>
  <th bgcolor="green">CU</th>
  <th bgcolor="green">CT</th>
  <th bgcolor="green">%</th>
  <th bgcolor="green">OBS/NOTES</th>
 </thead>
 <tbody>

  <?php 
   require 'ajout/cnx.php';
   $donneess = "SELECT * FROM budgetline, projet  where budgetline.idprojet=projet.id and projet.id='$idprojet'";
   $recupp=$connexion->prepare($donneess);
   $recupp->execute();
   $count=$recupp->roWcount();
   if ($count>0){
    $donnees = "SELECT budgetline.montant,budgetline.codeligne, budgetline.designation,  souslignebudget.codesousligne,souslignebudget.desig, souslignebudget.unite, souslignebudget.qte, souslignebudget.montantunitaire, souslignebudget.frequence, souslignebudget.montanttotal, souslignebudget.pourcentage, souslignebudget.observation FROM souslignebudget,budgetline where souslignebudget.idligne=budgetline.id and budgetline.idprojet='$idprojet'";
    $recup=$connexion->prepare($donnees);
    $recup->execute();
    $count=$recup->roWcount();
    if ($count>0){
     $service=$recup->fetchall(PDO::FETCH_OBJ);
  ?>
     <?php foreach ($service as $ser):?>
     <?php
      echo "<tr>";
      echo "<td colspan='9' class='justifier' bgcolor='gray'><strong>".$ser->codeligne.". ".$ser->designation."</strong></td>";
      echo "</tr>";
      echo "<tr>";
       echo "<td class='justifier'><strong>".$ser->codesousligne."</strong></td>";echo "<td class='justifier'>".$ser->desig."</td>";
       echo "<td>".$ser->unite."</td>";
       echo "<td>".$ser->qte."</td>";
       echo "<td>".$ser->frequence."</td>";
       echo "<td>".$ser->montantunitaire."</td>";
       echo "<td><strong>".$ser->montanttotal."</strong></td>";
       echo "<td>".$ser->pourcentage."</td>";
       echo "<td class='justifier'>".$ser->observation."</td>";
      echo "</tr>";
      echo "<tr>";
       echo "<td colspan='6' class='justifier' bgcolor='gray'><strong>SOUS-TOTAL</strong></td>";
       echo "<td class='justifier' bgcolor='gray'><strong>".$ser->montant."</strong></td>";
       echo "<td bgcolor='gray'></td>";
       echo "<td bgcolor='gray'></td>";
      echo "</tr>";
     ?>
     <?php endforeach;?>
     <?php
     $totgen=0;
     require 'ajout/cnx.php';
     $donnees2 = "SELECT  souslignebudget.montanttotal FROM souslignebudget,budgetline,projet where souslignebudget.idligne=budgetline.id and budgetline.idprojet=projet.id and projet.id='$idprojet'";
     $recupp=$connexion->prepare($donnees2);
     $recupp->execute();
     $servicee=$recupp->fetchall(PDO::FETCH_OBJ);
     ?>
     <?php foreach ($servicee as $serr):?>
     <?php
      $totgen+=$serr->montanttotal;?>
     <?php endforeach;?>
     <?php 
     echo "<tr>";
      echo "<td class='justifier'colspan='6'bgcolor='gray'>"."<strong>"."TOTAL GENERAL DU BUDGET"."</strong>"."</td>";
      echo "<td class='justifier'colspan='2' bgcolor='gray'>"."<strong>".$totgen." $"."</strong>"."</td><td bgcolor='gray'></td>";
     echo "</tr>";
     ?>
     <?php 
    }else {
     echo "<script type='text/javascript'> alert('-Erreur: Aucune sous ligne budgétaire déjà enregistrée -')</script>";
     echo "<meta http-equiv='refresh' content='0;URL=allproject.php'>";
    }
    ?>
   <?php
   }else {
    echo "<script type='text/javascript'> alert('-Erreur: Aucune ligne budgétaire déjà enregistrée -')</script>";
    echo "<meta http-equiv='refresh' content='0;URL=allproject.php'>";
   }
   ?>

 </tbody>
</table>
0