Calculer les totaux des champs d'un tableau

pulls Messages postés 160 Statut Membre -  
 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.
A voir également:

24 réponses

Utilisateur anonyme
 
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 ?
0
pulls Messages postés 160 Statut Membre 3
 
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
0
Utilisateur anonyme
 
comme ça = http://pour-ccm.zz.mu/index3.html
0
pulls Messages postés 160 Statut Membre 3
 
oui comme ça, mais sans le bouton CALCULEZ. Je veux que dès que le tableau se charge, les totaux s'affichent aussi.

Cordialement
0
Utilisateur anonyme
 
voila, mais si tu as du texte dans tes td ca va bloquer , tu en as du texte ?
0
pulls Messages postés 160 Statut Membre 3
 
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.
0
Utilisateur anonyme
 
test et si ça bloque on regardera
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pulls Messages postés 160 Statut Membre 3
 
je ne vois rien à tester s'il vous plait.
0
Utilisateur anonyme
 
voilà j'ai fait une modif avec du texte

http://pour-ccm.zz.mu/index3.html
0
Utilisateur anonyme
 
ha j'ai pas réfleichi j'ai mis le texte n'importe comment, je te propose de tester sur ton site et on corrigera les problèmes après
0
pulls Messages postés 160 Statut Membre 3
 
C'est exactement ça que je veux.
0
pulls Messages postés 160 Statut Membre 3
 
c'est ça que je veux, la première colonne represente mon champ date

je teste
0
Utilisateur anonyme
 
ok
0
pulls Messages postés 160 Statut Membre 3
 
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
0
Utilisateur anonyme
 
voilà

http://pour-ccm.zz.mu/index3.html

j'ai fait des modifs
0
pulls Messages postés 160 Statut Membre 3
 
Il n'ya que total qui s'affiche dans le pied de page.

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
0
Utilisateur anonyme
 
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
0
pulls Messages postés 160 Statut Membre 3
 
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
0
Utilisateur anonyme
 
tu peux faire un clique droit -> afficher code source et me donner le tableau stp ?
0
pulls Messages postés 160 Statut Membre 3
 
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>





0
Utilisateur anonyme
 
oui mais là il y a pas de tableau avec des valeurs ?
0
pulls Messages postés 160 Statut Membre 3
 
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.
0
Utilisateur anonyme
 
oui mais normalement elles s'affichent dans le html ?
0
pulls Messages postés 160 Statut Membre 3
 
oui elle s'affichent, j'en ai pour 256 lignes. je les affiche avec une boucle PHP.

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
0
Utilisateur anonyme
 
je n'arrive pas à comprendre pourquoi cela ne fonctionne pas chez vous :/

c'est le seul tableau de la page ?
0
Utilisateur anonyme
 
j'ai compris
attendez
0
pulls Messages postés 160 Statut Membre 3
 
oui c'est le seul tableau, je vous ai d'ailleurs envoyé tout le code source , sans laisser une seule ligne.
0
pulls Messages postés 160 Statut Membre 3
 
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
0
Utilisateur anonyme
 
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|[׺°"~'"°º×
0
pulls Messages postés 160 Statut Membre 3
 
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.
0
Utilisateur anonyme
 
je crois comprendre
je dois partir là, je reprends prochainement
0
Utilisateur anonyme
 
salut, en fait j'ai réfléchi et je comprends pas trop :/
0
pulls Messages postés 160 Statut Membre 3
 
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
0
Utilisateur anonyme
 
ok, mais il me semble que les opération php/sql rafraîchissent à chaque fois la page, donc le code JS, si il est placé en bas de page devrait fonctionner et faire à chaque fois le calcul pour le nombre de ligne qui s'affichent.
0