Problème d'affichage de résultat dans un tableau php
RésoluAstolpho Messages postés 73 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je n'arrive pas à afficher le résultat d'un calcul dans un tableau. J'ai le bon résultat dans le champs price, mais dans le champs paid, il me met un paiement de 85 sur chaque ligne, alors qu'il n'y a même pas d'article sur les lignes 9-8 et 7 du tableau.
Le 85 affiché sur chaque ligne correspond a un 1er paiement de 85€ de la facture 6 dans le tableau.
<?php require_once('../inc/connexion.php'); $db = getDB(); // invoice = nfacture // SUM(price) = prixtotal // SUM(amount) = paid //WHERE a.nfacture=b.nfacture try //Connection a la bdd { } catch (Exception $e) { die('Erreur : ' . $e->getMessage()); } $stmt = $db->query(" select a.nfacture, a.prixtotal, b.paid from (select invoices.invoice as nfacture, SUM(price) as prixtotal from invoices LEFT JOIN services ON (invoices.invoice=services.invoice) LEFT JOIN customers ON (invoices.id_customers=customers.id_customers) LEFT JOIN items ON (services.id_items=items.id_items) LEFT JOIN states ON (invoices.invoice=states.invoice) WHERE states.type = 1 AND states.state = 1 GROUP BY nfacture ) as a, (select invoices.invoice as nfacture, SUM(amount) as paid from payments LEFT JOIN invoices ON (payments.invoice=invoices.invoice) GROUP BY nfacture DESC) as b GROUP by nfacture DESC "); echo ' <div class="container-fluid"> <div class="card"> <div class="card-header"> <h3 class="card-title">Factures</h3> </div> <!-- /.card-header --> <div class="card-body "> <table class="table table-striped table-bordered table-hover"> '; echo '<tr>'; echo '<th align="center" >ID</th>'; echo '<th align="center" >Client</th>'; echo '<th align="center" >Price</th>'; echo '<th align="center" >Paid</th>'; echo '</tr>'; while($donnees = $stmt->fetch()) // Renvoit les valeurs de la bdd { echo '<tr>'; echo '<td align="center" width="5%" ><a href="'.URLSITE.'form/invoice.php?invoice='. $donnees['nfacture'] .' "><button type="button" class="btn btn-block btn-primary btn-xs btn-flat">' . $donnees['nfacture'] . '</td></button></a>'; echo '<td align="left" width="30%"></td>'; echo '<td align="left" width="30%"></>'. $donnees['prixtotal'] .' </td>'; echo '<td align="left" width="30%">'. $donnees['paid'] .' </></td>'; echo '<td> <div class="btn-group"> <button type="button" class="btn btn-secondary btn-xs btn-flat ">Action</button> <button type="button" class="btn btn-secondary btn-xs btn-flat dropdown-toggle dropdown-hover dropdown-icon" data-toggle="dropdown"> <span class="sr-only">Toggle Dropdown</span> </button> <div class="dropdown-menu" role="menu"> <a class="dropdown-item" href="#">Action</a> <a class="dropdown-item" href="#">Another action</a> <a class="dropdown-item" href="#">Something else here</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="#">Separated link</a> </div> </div> </td>'; echo '</tr>'; } echo '</table></div></div></div></center>'; $pdo = null; ?>
J'ai le résultat ci-dessous :

Quand j'ajoute le nom du client à la ligne 22 j'ai le message ci-dessous :
( ! ) Notice: Undefined index: fullname in C:\wamp64\www\1678\app\array\invoices.php on line 92
alors que la table customers est bien jointe avec les autres.
Je pense que le problème vient des jointures et principalement de la table items, c'est la seule table ou je n'ai pas ,l'id_customers, ou le champs invoice, c'est normal je l'utilise juste pour l'id de l"item et pour récupérer son prix, dans la table invoice, je ne met que l'id de l'items et il va chercher les informations depuis son id.
Windows / Chrome 108.0.0.0
- E fichier contient un tableau présentant un extrait des livres les plus prêtés à paris en 2016. filtrez le tableau pour ne faire apparaître que les bandes dessinées ado. puis filtrez le tableau pour ne faire apparaître que celles dont l'auteur est zep. quel est le titre de la bande dessinée ado de zep qui a été la plus prêtée d'après ce tableau ?
- Tableau word - Guide
- Tableau ascii - Guide
- Trier un tableau excel - Guide
- Tableau croisé dynamique - Guide
- Imprimer un tableau excel - Guide
7 réponses
Bonjour,
Commence par tester ta requête DIRECTEMENT dans ta BDD via, par exemple, PHPMYADMIN.
Montre nous ce que ça t'affiche et vérifie si cela correspond à tes attentes...
A noter que, ensuite, dans le php, seuls les champs présents dans la partie SELECT de ta requête ne peuvent être utilisés dans le code...
ça me donne les messages ci-dessous :
La sélection courante ne contient pas de colonne unique. Les grilles d'édition, les cases à cocher ainsi que les liens Éditer, Copier et Supprimer ne sont pas disponibles.

Warning: #1287 'GROUP BY with ASC/DESC' is deprecated and will be removed in a future release. Please use GROUP BY ... ORDER BY ... ASC/DESC instead
Le champs pour le nom de l'utilisateur (fullname) est bien dans le select.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionC'est bon j'ai trouvé c'est comme ci-dessous maintenant, les résultats attendu sont les bon.
SELECT a.nfacture, a.prixtotal, customers, b.paid FROM (SELECT invoices.invoice as nfacture, SUM(price) as prixtotal, customers.fullname as customers FROM invoices LEFT JOIN customers ON (invoices.id_customers=customers.id_customers) LEFT JOIN services ON (invoices.invoice=services.invoice) LEFT JOIN items ON (services.id_items=items.id_items) LEFT JOIN states ON (invoices.invoice=states.invoice) WHERE states.type = 1 AND states.state = 1 GROUP BY nfacture ) as a, (SELECT invoices.invoice as nfacture, SUM(amount) as paid FROM invoices LEFT JOIN payments ON (invoices.invoice=payments.invoice) GROUP BY nfacture DESC) as b WHERE a.nfacture=b.nfacture GROUP by nfacture DESC
Bonjour jordane45,
j'ai mis le fullname sur la ligne 3 en "7"
customers.fullname as customers