|
Publicité | |||||||||||||||||||||||
|
|
#1 (permalink) |
|
Membre actif
![]() Date d'inscription: décembre 2008
Messages: 199
|
Bonjour,
Cela faitun bout de temps que j'ai un problème pour calculer la somme des colonne d'un tableau. Il s'agit d'un tableau de répartition en fontion des années. Ci-dessous mon script Code :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" > <head> <?php if (!empty($titre)) //Si le titre est indiqué, on l'affiche entre les balises <title> { echo '<title> '.$titre.' </title>'; } else //Sinon, on écrit forum par défaut { echo '<title> dus region </title>'; } ?> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <link rel="stylesheet" media="screen" type="text/css" title="Design" href="#" /> </head> <body> <h2><center><b><u> Ventilation des montants par année d'origine</u></b></center></h2><br><br> <a href="../index.php"> Retour à l'index</a><br> <?php include('../includes/inc_conexion.php'); $result = mysql_query("SELECT nom_region FROM region ORDER BY id ASC")or die(mysql_error()); echo '<form action="synthese_region.php" method="post">'; echo '<select name="frm_select_region">'; while ($row = mysql_fetch_array($result)) { //si c'est le nom de la région qui est commun aux deux tables c'est le champ nom_region que tu dois mettre en value de ton select// echo '<option value="'.$row['nom_region'].'">'.$row['nom_region'].'</option>'; } echo '</select>'; echo '<input type="submit" value="Go" />'; echo '</form>'; $var = ""; $ligne = "<table BORDER=1 BORDERCOLOR=#CCCCCC BGCOLOR=#fffccc CELLSPACING=0 CELLPADDING=1 WIDTH=100% ALIGN=left font-family='Verdana' size=2px> <td bgcolor='#669999'><b><u>Numero</u></b></td> <td bgcolor='#669999'><b><u>Societe</u></b></td> <td bgcolor='#669999'><b><u>Adhérent</u></b></td> <td bgcolor='#669999'><b><u>Montant</u></b></td> <td bgcolor='#669999'><b><u>Anterieur à 2008</u></b></td> <td bgcolor='#669999'><b><u>2008</u></b></td> <td bgcolor='#669999'><b><u>2009</u></b></td> <td bgcolor='#669999'><b><u>2010</u></b></td> <td bgcolor='#669999'><b><u>-1 mois</u></b></td> <td bgcolor='#669999'><b><u>Vérif</u></b></td>"; $total = 0; if(isset($_POST["frm_select_region"]) AND $_POST["frm_select_region"] != NULL) { $var = $_POST["frm_select_region"]; $rqt2 = mysql_query("SELECT * FROM societe WHERE nom_region = '$var' ORDER BY societe")or die(mysql_error()); } else { $rqt2 = mysql_query("SELECT * FROM societe ORDER BY societe")or die(mysql_error()); } echo("Région selectionnée : $var </br></br>"); if(mysql_num_rows($rqt2) > 0) { while($tableau2 = mysql_fetch_array($rqt2)) { $id = $tableau2['id_numero']; $societe = $tableau2['societe']; $adherent = $tableau2['adherent']; $ville = $tableau2['ville']; $region = $tableau2['nom_region']; $enseigne = $tableau2['enseigne']; $telephone = $tableau2['telephone']; $fax = $tableau2['fax']; $siret = $tableau2['siret']; $rqt = mysql_query("SELECT * FROM facture WHERE id_numero = '$id' ORDER BY `id_numero`")or die(mysql_error()); $ant08 = 0; //ici l'initialisation des variables par année// $a08 = 0; $a09 = 0; $a10 = 0; $a_1 = 0; $annee= ""; //ici initialisation des variables total pour chaque année// $Tant08 = 0; $Ta08 = 0; $Ta09 = 0; $Ta10 = 0; $Ta_1 = 0; //c'est pour les facture datant d'un - d'un mois ($Ta_1)// $Tmont_2 = 0; // sert a la totalisation des lignes $Tmont_3 = 0; // sert à la totalisation de la colonne des totaux $mont = 0; while($tableau = mysql_fetch_array($rqt)) { //calcul par année// if($tableau['annee'] < 2008) { $ant08 += addslashes($tableau['montant']); } if($tableau['annee'] == 2008) { $a08 += addslashes($tableau['montant']); } if($tableau['annee'] == 2009) { $a09 += addslashes($tableau['montant']); } if($tableau['annee'] == 2010) { $a10 += addslashes($tableau['montant']); } if($tableau['annee'] == 20101) { $a_1 += addslashes($tableau['montant']); } //fin du calcul par année// $mont += addslashes($tableau['montant']); $Tmont_2 = ($ant08 + $a08 + $a09 + $a10 + $a_1); // totalisation de la ligne // } $total += $mont; //calcul du total par année// $Tant08 += $ant08; $Ta08 += $a08; $Ta09 += $a09; $Ta10 += $a10; $Ta_1 += $a_1; $Tmont_3 += $Tmont_2; // Totalisation de la colonne // if($mont > 0) { $ligne .= "<tr> <td><a href='../includes/relance_02.php?numero=$id' target='_self'>".$id."</a></td> <td>".$societe."</td> <td>".$adherent."</td> <td align='right' bgcolor='#669999'>".$mont."</td> <td align='right'>".$ant08."</td> <td align='right'>".$a08."</td> <td align='right'>".$a09."</td> <td align='right'>".$a10."</td> <td align='right'>".$a_1."</td> <td align='right' bgcolor='#669999'>".$Tmont_2."</td></tr>"; // total de la ligne // } } $ligne .= "<tr><td colspan='3' bgcolor='#669999'>Total Final</td><td align='right' bgcolor='#669999'>".$total."</td>"; $ligne .= "<td colspan='1' align='right' bgcolor='#669999'>".$Tant08."</td>"; $ligne .= "<td colspan='1' align='right' bgcolor='#669999'>".$Ta08."</td>"; $ligne .= "<td colspan='1' align='right' bgcolor='#669999'>".$Ta09."</td>"; $ligne .= "<td colspan='1' align='right' bgcolor='#669999'>".$Ta10."</td>"; $ligne .= "<td colspan='1' align='right' bgcolor='#669999'>".$Ta_1."</td>"; // concerne les factures de moins d'un mois // $ligne .= "<td colspan='9' align='right' bgcolor='#669999'>".$Tmont_3."</td></tr>"; // total des differents totaux // $ligne .= "</table>"; } echo ("$ligne </br>"); mysql_close(); ?> Runcafre91 |
|
|
|
|
|
#3 (permalink) |
|
Membre actif
![]() Date d'inscription: décembre 2008
Messages: 199
|
Bonjour,
Le problème se situe pluto a ce niveau : Code :
//ici initialisation des variables total pour chaque année// $Tant08 = 0; $Ta08 = 0; $Ta09 = 0; $Ta10 = 0; $Ta_1 = 0; //c'est pour les facture datant d'un - d'un mois ($Ta_1)// $Tmont_3 = 0; // sert à la totalisation de la colonne des totaux $Tant08 += $ant08; $Ta08 += $a08; $Ta09 += $a09; $Ta10 += $a10; $Ta_1 += $a_1; $Tmont_3 += $Tmont_2; // Totalisation de la colonne // Runcafre91 |
|
|
|
|
|
#5 (permalink) | |
|
Membre actif
![]() Date d'inscription: décembre 2008
Messages: 199
|
Citation:
excuse lors de la création de ce post j'ai oublié de joindre une capture écran Donc ce qui ne fontionne pas, il ne fait pas le total des colonnes , comme résultat j'a 0 à chaque fois que j'initialise ou pas la variable. Cf capture écran Merci de votre aide Runcafre91 Dernière modification par runcafre91 ; 07/02/2010 à 18h31. |
|
|
|
|
|
|
#7 (permalink) | |
|
Membre actif
![]() Date d'inscription: décembre 2008
Messages: 199
|
Citation:
J'ai fai un écho de mes différents variable et à chaque fois ils m'affiche 0 Concenant l'erreur signalée ou supposé pourras tu etre plus précis stp Merci de votre aide Runcafre91 |
|
|
|
|
|
|
#8 (permalink) |
|
Membre éprouvé
![]() Date d'inscription: juin 2007
Localisation: Bordeaux
Messages: 407
|
je pense que c'est 2011 et pas 20101 non ?
Sinon, si tu as toujours 0 pour tes $a08, $a09... alors il semblerait que soit tu n'entres jamais dans tes if (ie: $tableau['annee'] vaut jamais 2008, 2009 etc) soit $tableau['montant'] vaut toujours 0. As tu vérifié ces 2 variables si tu as toujours ton problème ? |
|
|
|
|
|
#9 (permalink) | |
|
Membre actif
![]() Date d'inscription: décembre 2008
Messages: 199
|
Citation:
j'ai essayé de voir d'ou viens le problème sans succes. Pour la ventillation par les année cela fonctionne mais c'est seulement que je faire le total de la colonne que la j'ai que des 0 Pour l'erreur que vous avez signalé cela n'en ai pas un, en fait cela siginfie 20101 ---> année 2010 mois 1 pour la ventillation par année voir la capture écran précedent. Merci pour votre aide. |
|
|
|
|
|
|
#10 (permalink) | |
|
Membre éprouvé
![]() Date d'inscription: juin 2007
Localisation: Bordeaux
Messages: 407
|
Citation:
Code php :
addslashes($tableau['montant']) Logiquement, tu récupères des montants de ta table non ? dans tout les cas cette fonction t'ajoutera des \ le cas échéant et je vois pas comment tu vas pouvoir ajouter une chaine de caractère avec éventuellement des \ à un montant. Que te donnent les valeurs de tes montants à chaque enregistrement récupéré ? Code php :
while($tableau = mysql_fetch_array($rqt)) echo $tableau['montant']; |
|
|
|
|
|
|
#11 (permalink) | |
|
Membre actif
![]() Date d'inscription: décembre 2008
Messages: 199
|
Citation:
J'ai apporté des modifications en enlevant les addslashes qui n'avaient pas lieu d'être. En faisisant un echo de $tableau['montant']; j'ai bien les montants qui s'affiche. Au niveau du total de la colonne cela n'a rien changer Ci-joint une caputre écran Runcafre91 Dernière modification par runcafre91 ; 07/02/2010 à 18h31. |
|
|
|
|
|
|
#13 (permalink) | |
|
Membre actif
![]() Date d'inscription: décembre 2008
Messages: 199
|
Citation:
Le code ci-dessus sert pour le calcule par année, a ce niveau j'arrive a avoir les montant pour chaque année. Mais ce qui ne fonctionne pas c'est lorsque je veux additionné toute la colonne qu'a chaque fois j'ai 0 en total. Faut-il créé une nouvelle variable afin de stocké le resultat au fur et a mesure j'ai créé une variable : $val pour fair eun test sur une colonne donc j'ai le code suivant : Code :
$val=$a09; echo $val; $Ta09 += $val; Est ce que cela ne serait pas du a un problème de format car avant chaque montant il n'affiche plusieur 0 Merci de votre aide Runcafre91 |
|
|
|
|
|
|
#14 (permalink) |
|
Membre éprouvé
![]() Date d'inscription: juin 2007
Localisation: Bordeaux
Messages: 407
|
Pourquoi ne pas changer de requete SQL directement pour qu'elle te fasse le travail ?
Code php :
$rqt = mysql_query("SELECT montant, SUM(montant) FROM facture WHERE id_numero = '$id' GROUP BY annee ")or die(mysql_error()); |
|
|
|
|
|
#15 (permalink) | |
|
Membre actif
![]() Date d'inscription: décembre 2008
Messages: 199
|
Citation:
j'avais déja pensé a cette éventualité mais cela ne convenais pas a ce que je voulais faire. Merci toute de même por l'idée. Runcafre91 |
|
|
|
|
|
|
![]() |
||
Somme des colonnes d'un tableau
|
||
| Outils de la discussion | |
|
|