Affichage des donnees dans un tableau

olivierndategana Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
olivierndategana Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

4 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour, qu'as-tu essayé?
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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   Statut Membre Dernière intervention  
 
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 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > olivierndategana Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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   Statut Membre Dernière intervention  
 
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