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 -
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
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:
- Affichage des donnees dans un tableau
- Fuite données maif - Guide
- Tableau word - Guide
- Trier un tableau excel - Guide
- Tableau ascii - Guide
- Imprimer un tableau excel - Guide
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é?
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
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
Voici ce que j'ai essayé et le résultat que j'ai
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:

<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:
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
- 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...
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...
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>