Calculer les totaux des champs d'un tableau
pulls
Messages postés
160
Statut
Membre
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
je programme en php/mysql,
Je parviens à calculer dans une boucle en php, le total des champs d'un tableau dont les données viennent d'une base de données. Mais j'ai un problème, ce total est figé; quand je fait un filtre dans mon tableau pour n'afficher que certaines lignes, le même total reste affiché.
Je voudrais que ce total varie en fonction de nombre de lignes affichées suivant un critère de recherche. J'utilise data Table pour faire les recherches dans mon tableau.
Comment dois-je le faire en javascript, s'il vous plait?
Cordialement.
je programme en php/mysql,
Je parviens à calculer dans une boucle en php, le total des champs d'un tableau dont les données viennent d'une base de données. Mais j'ai un problème, ce total est figé; quand je fait un filtre dans mon tableau pour n'afficher que certaines lignes, le même total reste affiché.
Je voudrais que ce total varie en fonction de nombre de lignes affichées suivant un critère de recherche. J'utilise data Table pour faire les recherches dans mon tableau.
Comment dois-je le faire en javascript, s'il vous plait?
Cordialement.
A voir également:
- Calculer les totaux des champs d'un tableau
- Tableau word - Guide
- Trier un tableau excel - Guide
- Tableau ascii - Guide
- Comment calculer la moyenne sur excel - Guide
- Imprimer un tableau excel - Guide
24 réponses
salut, j'ai fait un tableau tout simple et une fonction JS qui calcule tout les td
http://pour-ccm.zz.mu/index3.html
c'est ça que tu veux ?
http://pour-ccm.zz.mu/index3.html
c'est ça que tu veux ?
merci de vouloir m'aider,
je veux pluto le total sur la dernière cellule de chaque colonne. Pour etre plus claire, je voudrais que le total de chaque colonne s'affiche à la dernière ligne.
cordialement
je veux pluto le total sur la dernière cellule de chaque colonne. Pour etre plus claire, je voudrais que le total de chaque colonne s'affiche à la dernière ligne.
cordialement
oui comme ça, mais sans le bouton CALCULEZ. Je veux que dès que le tableau se charge, les totaux s'affichent aussi.
Cordialement
Cordialement
mon tableau a 3 champs: date, quantité 1 et quantité 2. les champs quantité 1 et quantité 2 n'ont pas de texte. je vais donc avoir la somme totale de chacune de ces 2 colonnes.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
S'il vous plait, j'ai oublié de vous dire que les totaux sont dans les cellules Th de mon tableau, donc le pied de page. J'ai copié le script au bas de mon tableau et ça n'affiche rien, peut être c'est du à la présence des cellules th.
cordialement
cordialement
Il n'ya que total qui s'affiche dans le pied de page.
voici mes codes:
cordialement
voici mes codes:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>dataview_ad</title>
<script type="text/javascript" src="../libs/jquery.min.js"></script>
<script type="text/javascript" src="../libs/jquery.dataTables.js"></script>
<!--<script type="text/javascript" src="../libs/dataTables.js"></script>-->
<script type="text/javascript"> $(document).ready(function() { $('#example').dataTable();} );</script>
<link href="../style/global.css" rel="stylesheet" type="text/css">
<?php
@session_start();
if (($_SESSION['idRegion'])==1)
{
include '../connections/config_dla.php';
}
else if (($_SESSION['idRegion'])==3)
{
include '../connections/config_bssam.php';
}
else if (($_SESSION['idRegion'])==2)
{
include '../connections/config_yde.php';
}
else if (($_SESSION['idRegion'])==4)
{
include '../connections/config_ga.php';
}
else if (($_SESSION['idRegion'])==6)
{
include '../connections/config_ma.php';
}
include '../function/function.php';
if (!isset($_SESSION['cusr']))
{
header("Location:../index.php");
}
?>
<script language="javascript" src="../function/function_js.js"></script>
<style type="text/css">
<!--
.Style3 {color: #000000; font-weight: bold; }
.Style4 {
font-family: Verdana, Arial, Helvetica, sans-serif;
color:#FFF;
}
-->
</style>
<title></title>
</head>
<body>
<?php
$req = "SELECT idVendeur FROM TbCommission WHERE Comnette<0 ";
$rs = mssql_query($req);$i=0;
while ($ligne = mssql_fetch_array($rs))
{
extract($ligne);
$i++;
}
?>
<form id="form1" name="form1" method="post" action="">
<?php
echo '<MARQUEE direction="left" bgcolor="yellow" >'.$i." ".'Vendeurs en commissions négatives'.'</MARQUEE>' ;
?>
<div align="center" class="Style1"><a href="#" onclick="showPoPupWindow('commission_list_vend_neg.php', 'window', 1130, 1100)">Afficher les commissions négatives</a></div>
<table width="1105" border="0" align="left" cellpadding="0" cellspacing="1" bordercolor="#FF00FF" bgcolor="#FFFFFF" class="display" id="example" >
<caption class="important" >
<span class="Style4"> COMMISSIONS MOIS EN COURS </span>
</caption>
<thead >
<tr>
<td width="276" class="important"><div align="center" class="Style3">Date</div></td>
<td width="34" class="important"><div align="center" class="Style3"> Cse</div></td>
<td width="43" class="important"><div align="center" class="Style3">Code</div></td>
<td width="35" class="important"><div align="center" class="Style3">Rca</div></td>
<td width="77" class="important"><div align="center" class="Style3"> Percu</div></td>
<td width="73" class="important"><div align="center" class="Style3">Cdef</div></td>
<td width="69" class="important"><div align="center" class="Style3"> C brutes</div></td>
<td width="60" class="important"><div align="center" class="Style3"> Ecarts+</div></td>
<td width="56" class="important"><div align="center" class="Style3"> Ecarts-</div></td>
<td width="65" class="important"><div align="center" class="Style3"> Rembmt</div></td>
<td width="40" class="important"><div align="center" class="Style3"> Ass</div></td>
<td width="47" class="important"><div align="center" class="Style3"> Impot</div></td>
<td width="58" class="important"><div align="center" class="Style3"> Avance</div></td>
<td width="40" class="important"><div align="center" class="Style3"> Scol</div></td>
<td width="46" class="important"><div align="center" class="Style3"> Dette</div></td>
<td width="69" align="center" class="important"><strong>C Nettes</strong></td>
</tr>
</thead>
<tbody > <!-- TemplateBeginEditable name="EditRegion1" -->
<?php
$req = "SELECT * FROM TbCommission ORDER BY idVendeur ASC ";
$rs = mssql_query($req);$i=1;
while ($ligne = mssql_fetch_array($rs))
{
extract($ligne);
?>
<tr bgcolor="<?php echo alternerRowColor($i);?>">
<td height="22"><div align="right"><?php echo $Datecom?></div></td>
<td><div align="center"><?php echo $Nbrecourse?></div></td>
<td><div align="right"><?php echo $idVendeur?></div></td>
<td><div align="right"><?php echo $RCA?> </div></td>
<td><div align="right"><?php echo $Totalpercu?> </div></td>
<td><div align="right"><?php echo $CDEF?> </div></td>
<td><div align="right"><?php echo $Combrute?> </div></td>
<td><div align="right"><?php echo $Ecart?> </div></td>
<td><div align="right"><?php echo $Ecartmoins?> </div></td>
<td><div align="right"><?php echo $REC?> </div></td>
<td><div align="right"><?php echo $Assur?> </div></td>
<td><div align="right"><?php echo $Impot?> </div></td>
<td><div align="right"><?php echo $Avance?> </div></td>
<td><div align="right"><?php echo $Scol?></div></td>
<td><div align="right"><?php echo $Dette?></div></td>
<td><div align="right"><?php echo $Comnette?></div></td>
</tr>
<!-- TemplateEndEditable -->
<?php
$i++;}
?>
</tbody>
<tfoot class="important" >
<tr><th colspan="16"> </th></tr>
</tfoot>
</table>
<script type="text/javascript">
var tds = document.getElementsByTagName("td");
var trs = document.getElementsByTagName("tr").length;
var ths = document.getElementsByTagName("th");
var len = tds.length;
var calc = "";
var count = len / (trs - 1);
var nbr = len - count;
var tab = new Array;
c = 0;
d = 0;
for (var i = 0; i < len; i++) {
calc = parseFloat(calc + parseFloat((tds[d].innerHTML)));
tab[c] = calc;
d = d + count;
if (d > nbr + c) {
c++;
d = c;
calc = "";
}
}
for (var t = 0; t < tab.length; t++) {
ths[t].innerHTML = tab[t];
if (ths[t].innerHTML == "NaN") {
ths[t].innerHTML = "total";
}
}
</script>
</form>
</body>
</html>
cordialement
alors voilà, j'ai enlevé php et j'ai du rajouter autant de th qu'il y a de colonnes. J'ai modifié le javascript pour cette méthode. Tu n'aura pas le choix pour les th sinon tout les résultat seront collé. On peut jouer avec des espaces, mais le résultat n'est pas garanti
http://pour-ccm.zz.mu/index3.html
http://pour-ccm.zz.mu/index3.html
cette fois cela a changé, ça m'affiche Total dans le champ date et NaN dans les autres champs où les valeurs doivent s'y trouver.
par ailleurs, mes cellules de pied de page sont bien séparé par des bordures. Le seul problème maintent c'est remplacé NaN par des valeurs.
cordialement
par ailleurs, mes cellules de pied de page sont bien séparé par des bordures. Le seul problème maintent c'est remplacé NaN par des valeurs.
cordialement
ok,
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>dataview_ad</title>
<link href="style/global.css" rel="stylesheet" type="text/css" />
<style type="text/css">
.Style13 {color: #CCCCCC; font-family: Verdana, Arial, Helvetica, sans-serif;}
body,td,th {
color: #FFF;
font-size: 18px;
}
</style>
<script language="javascript" src="function/function_js.js"></script>
</head>
<body bgcolor="#000000">
<table class="kpon" width="100%" height="100%">
<tr>
<td height="24" class="important" colspan="2"><table width="1124" border="0" cellspacing="0">
<tr>
<td width="73" height="38" bgcolor="#E561A0" ><img src="../images/DVVert.jpg" width="73" height="35" /></td>
<td width="82"> </td>
<td width="116"> </td>
<td width="12"> </td>
<td width="284" class="deconnexion">Ouest _ N. ouest</td>
<td width="391" class="deconnexion" >paul talla</td>
<td width="149"><div align="right" class="Style5">
<a href="../index.php?pid=2" class="deconnexion">Déconnexion</a> </div></td>
</tr>
</table></td>
</tr>
<tr>
<td width="18%" height="739" valign="top" class="important" align="center" >
<!-- http://www.cssplay.co.uk -->
<!-- traduit et adapté par outils-web.com -->
<!-- chargement des feuilles de style -->
<link rel="stylesheet" type="text/css" href="../style/global.css"/>
<div id="corps">
<!-- emplacement du menu -->
<div id="list" align="left" >
<ul>
<li><a href="../administrateur/main.php?pid=xtax">DERNIERS PARIS COLLECTES</a></li>
<li><a href="../administrateur/main.php?pid=mimani">REMBOURSEMENT ECARTS</a></li>
<li><a href="../administrateur/main.php?pid=mimax">COMMISSIONS EN COURS</a></li>
<li><a href="../administrateur/main.php?pid=xmax">ENJEUX</a></li>
<li><a href="../administrateur/main.php?pid=mine">UTILISATEUR</a></li>
<li><a href="../administrateur/main.php?pid=mipe">VILLE</a></li>
<!--<li><a href="#">RECLAMATIONS EN INSTANCE</a></li>-->
<li><a href="../administrateur/main.php?pid=xxax">CHANGER DE MOT DE PASSE</a></li>
</ul>
</div>
</div>
<p><img src="../images/LOGO.jpg" alt="" width="70" height="42" />
</p>
</td>
<td width="100%" bgcolor="#CCCCCC">
<iframe allowtransparency="true" src="
commission_list.php
" frameborder="0" scrolling="yes" width="100%" height="750px" align="middle" ></iframe>
</td>
</tr>
</table>
</body>
</html>
Les valeurs viennent d'une base de données mysql, comme vous avez pu remarquer dans les premiers codes que je vous ai envoyés.
oui elle s'affichent, j'en ai pour 256 lignes. je les affiche avec une boucle PHP.
comme suit:
Cordialement
comme suit:
<?php
$req = "SELECT * FROM TbCommission ORDER BY idVendeur ASC ";
$rs = mssql_query($req);$i=1;
while ($ligne = mssql_fetch_array($rs))
{
extract($ligne);
?>
<tr bgcolor="<?php echo alternerRowColor($i);?>">
<td height="22"><div align="right"><?php echo $Datecom?></div></td>
<td><div align="center"><?php echo $Nbrecourse?></div></td>
<td><div align="right"><?php echo $idVendeur?></div></td>
<td><div align="right"><?php echo $RCA?> </div></td>
<td><div align="right"><?php echo $Totalpercu?> </div></td>
<td><div align="right"><?php echo $CDEF?> </div></td>
<td><div align="right"><?php echo $Combrute?> </div></td>
<td><div align="right"><?php echo $Ecart?> </div></td>
<td><div align="right"><?php echo $Ecartmoins?> </div></td>
<td><div align="right"><?php echo $REC?> </div></td>
<td><div align="right"><?php echo $Assur?> </div></td>
<td><div align="right"><?php echo $Impot?> </div></td>
<td><div align="right"><?php echo $Avance?> </div></td>
<td><div align="right"><?php echo $Scol?></div></td>
<td><div align="right"><?php echo $Dette?></div></td>
<td><div align="right"><?php echo $Comnette?></div></td>
</tr>
<!-- TemplateEndEditable -->
<?php
$i++;}
?>
</tbody>
<tfoot class="important" >
<tr>
<th ></th><th ></th><th ></th><th ></th><th ></th><th ></th><th ></th><th ></th><th ></th><th ></th><th ></th><th ></th><th ></th><th ></th><th ></th><th ></th>
</tr>
</tfoot>
</table>
Cordialement
oui c'est le seul tableau, je vous ai d'ailleurs envoyé tout le code source , sans laisser une seule ligne.
sil vous plait, je voudrais aussi vous signaler que le champ Cse et code, ne doivent pas avoir de total, il s'agit du N° de la course et du code vendeur. Faire une somme dans ces colonnes n'a aucune importance
Cordialement
Cordialement
re
en fait le problème venait du div dans les td...enfin j'espere. Es ce que vous pourriez mettre une class dans chaque div des td ou il y a les valeurs
et modifier cette ligne :
var tds = document.getElementsByClassName("maclass");
comme j'ai fait dans cette page http://pour-ccm.zz.mu/index3.html
׺°"~'"°º×]|I{*------» m3745p10!7 «------*}I|[׺°"~'"°º×
en fait le problème venait du div dans les td...enfin j'espere. Es ce que vous pourriez mettre une class dans chaque div des td ou il y a les valeurs
et modifier cette ligne :
var tds = document.getElementsByClassName("maclass");
comme j'ai fait dans cette page http://pour-ccm.zz.mu/index3.html
׺°"~'"°º×]|I{*------» m3745p10!7 «------*}I|[׺°"~'"°º×
il ya un grand changement cette fois ci, le total s'affiche pour certaine colonnes, zéro pour d'autres (4) et vide pour 2.
merci infiniment lobotoFix de votre disponibilité, si je pouvais avoir les totaux des autres colonnes.
mais j'ai une préoccupation, mon problème au départ ce nétait pas dafficher le total, puisque je peux le faire avec du PHP, mon problème était de rendre ce total flottant. Je mexplique: je fais une recherche sur le code 10125 par exemple, et je n'affiche que les lignes du code 10125, je voudrais que le total change et n'affiche que le total des données du code 10125. et quand j'affiche par la cellule RECHERCHER de mon tableau le code 10126, je n'ai que le total de ce code.
et quand jaffiche tous les codes , j'ai le total de tous les codes ainsi de suite.
Mais ce que vous avez fait pour moi, va me permettre d'apprendre beaucoup en javascript, et je vous en remercie infiniment.
Je ne sais pas si je me suis fait comprendre par rapport au total variable suivant l'affichage des lignes d'un tableau par l'outil rechercher.
Cordialement.
merci infiniment lobotoFix de votre disponibilité, si je pouvais avoir les totaux des autres colonnes.
mais j'ai une préoccupation, mon problème au départ ce nétait pas dafficher le total, puisque je peux le faire avec du PHP, mon problème était de rendre ce total flottant. Je mexplique: je fais une recherche sur le code 10125 par exemple, et je n'affiche que les lignes du code 10125, je voudrais que le total change et n'affiche que le total des données du code 10125. et quand j'affiche par la cellule RECHERCHER de mon tableau le code 10126, je n'ai que le total de ce code.
et quand jaffiche tous les codes , j'ai le total de tous les codes ainsi de suite.
Mais ce que vous avez fait pour moi, va me permettre d'apprendre beaucoup en javascript, et je vous en remercie infiniment.
Je ne sais pas si je me suis fait comprendre par rapport au total variable suivant l'affichage des lignes d'un tableau par l'outil rechercher.
Cordialement.
Merci lobotoFix, d'avoir pensé à moi. Je cherchais déjà comment contourné le problème en affichant des pages personnalisées.
je vais essayé de m'expliquer d'avantage.
Supposons que vous ayez un tableau de 1000 lignes qui affiche un total général de ces 1000 lignes. vOUS AVEZ AU DESSUS DE CE TABLEAU une case pour entrer un critère de recherche dans ce tableau qui affiche après validation de la recherche, plutot 10 lignes, vous voyez que etant donné que le total General etait calculé pour 1000 lignes , il ne sera plus juste pour 10 lignes affichées après recherche.
Comment donc faire que le total ne correspond que au nombre de lignes affichées.
Pensez un peu au fonctionnement du tableau croisé dynamique de EXCEL.
merci
je vais essayé de m'expliquer d'avantage.
Supposons que vous ayez un tableau de 1000 lignes qui affiche un total général de ces 1000 lignes. vOUS AVEZ AU DESSUS DE CE TABLEAU une case pour entrer un critère de recherche dans ce tableau qui affiche après validation de la recherche, plutot 10 lignes, vous voyez que etant donné que le total General etait calculé pour 1000 lignes , il ne sera plus juste pour 10 lignes affichées après recherche.
Comment donc faire que le total ne correspond que au nombre de lignes affichées.
Pensez un peu au fonctionnement du tableau croisé dynamique de EXCEL.
merci