Faire une somme en php

Faire une somme en php - PHP - Programmation

Marsh Posté le 14-02-2010 à 12:41:29    

je suis vraiment pas un pro en php et je voudrais faire des somme à partir d'un certains nombre de critères que l'utilisateurs aura à selectionner.
Voici mon code :
$colname1__sum = '-1';
$colname2__sum = '-1';
$colname3__sum = '-1';
$query_sum="";
$sum = "";
$totalRows_sum = "";
   
 if (isset($HTTP_GET_VARS['code']) && isset($HTTP_GET_VARS['sens']) && isset($HTTP_GET_VARS['nature'])) {
 if (!empty($HTTP_GET_VARS['code']) && !empty($HTTP_GET_VARS['sens']) && !empty($HTTP_GET_VARS['nature'])) {
  $colname1__sum = $HTTP_GET_VARS['code'];
  $colname2__sum = $HTTP_GET_VARS['sens'];
  $colname3__sum = $HTTP_GET_VARS['nature'];
  echo 'testSOMME1';
  $query_sum = sprintf("SELECT SUM(f_cargo.poids_colis)  AS sum_poids_colis_1 FROM (f_manifest INNER JOIN f_cargo ON f_cargo.manifest_id=f_manifest.manifest_id) WHERE f_manifest.code_agree_consignataire='%s'  AND f_manifest.import_export='%s'  AND f_cargo.nature_colis='%s'", $colname1__sum,$colname2__sum,$colname3__sum);
  $sum = $connexion->SelectLimit($query_sum) or die($connexion->ErrorMsg());
  $totalRows_sum = $sum->RecordCount();
 
}
else
{
if (!empty($HTTP_GET_VARS['code']) && !empty($HTTP_GET_VARS['sens'])) {
  $$colname1__sum = $HTTP_GET_VARS['code'];
  $$colname2__sum = $HTTP_GET_VARS['sens'];
  echo 'testSOMME2';
  $query_sum = sprintf("SELECT SUM(f_cargo.poids_colis)  AS sum_poids_colis_1 FROM (f_manifest INNER JOIN f_cargo ON f_cargo.manifest_id=f_manifest.manifest_id) WHERE f_manifest.code_agree_consignataire='%s'  AND f_manifest.import_export='%s'", $colname1__sum,$colname2__sum);
  $rs_sum = $connexion->SelectLimit($query_sum) or die($connexion->ErrorMsg());
  $totalRows_sum = $rs_sum->RecordCount();
 
}
else
{
if (!empty($HTTP_GET_VARS['sens']) && !empty($HTTP_GET_VARS['nature'])) {
  $colname2__sum = $HTTP_GET_VARS['sens'];
  $colname3__sum = $HTTP_GET_VARS['nature'];
  echo 'testSOMME3';
  $query_sum = sprintf("SELECT SUM(f_cargo.poids_colis)  AS sum_poids_colis_1 FROM (f_manifest INNER JOIN f_cargo ON f_cargo.manifest_id=f_manifest.manifest_id) WHERE f_manifest.import_export='%s'  AND f_cargo.nature_colis='%s'", $colname2__sum,$colname3__sum);
  $sum = $connexion->SelectLimit($query_sum) or die($connexion->ErrorMsg());
  $totalRows_sum = $sum->RecordCount();
 
}
else
{
if (!empty($HTTP_GET_VARS['code']) && !empty($HTTP_GET_VARS['nature'])) {
  $colname1__sum = $HTTP_GET_VARS['code'];
  $colname3__sum = $HTTP_GET_VARS['nature'];
  echo 'test4';
  $query_sum = sprintf("SELECT SUM(f_cargo.poids_colis)  AS sum_poids_colis_1 FROM (f_manifest INNER JOIN f_cargo ON f_cargo.manifest_id=f_manifest.manifest_id) WHERE f_manifest.code_agree_consignataire='%s' AND f_cargo.nature_colis='%s'", $colname1__sum,$colname3__sum);
  $sum = $connexion->SelectLimit($query_sum) or die($connexion->ErrorMsg());
$totalRows_sum = $sum->RecordCount();
 
}
else
{
if (!empty($HTTP_GET_VARS['code'])) {
  $colname1__sum = $HTTP_GET_VARS['code'];
  $query_sum = sprintf("SELECT SUM(f_cargo.poids_colis)  AS sum_poids_colis_1 FROM (f_manifest INNER JOIN f_cargo ON f_cargo.manifest_id=f_manifest.manifest_id) WHERE f_manifest.code_agree_consignataire='%s'", $colname1__sum);
  $sum = $connexion->SelectLimit($query_sum) or die($connexion->ErrorMsg());
$totalRows_sum = $sum->RecordCount();
 
}
else
{
if (!empty($HTTP_GET_VARS['sens'])) {
  $colname2__sum = $HTTP_GET_VARS['sens'];
  $query_sum = sprintf("SELECT SUM(f_cargo.poids_colis)  AS sum_poids_colis_1 FROM (f_manifest INNER JOIN f_cargo ON f_cargo.manifest_id=f_manifest.manifest_id) WHERE f_manifest.import_export='%s'", $colname2__sum);
  $sum = $connexion->SelectLimit($query_sum) or die($connexion->ErrorMsg());
  $totalRows_sum = $sum->RecordCount();
 
}
else
{if (!empty($HTTP_GET_VARS['nature'])) {
  $colname3__sum = $HTTP_GET_VARS['nature'];
  $query_sum = sprintf("SELECT SUM(f_cargo.poids_colis)  AS sum_poids_colis_1 FROM (f_manifest INNER JOIN f_cargo ON f_cargo.manifest_id=f_manifest.manifest_id) WHERE f_cargo.nature_colis='%s'", $colname3__sum);
  $sum = $connexion->SelectLimit($query_sum) or die($connexion->ErrorMsg());
  $totalRows_sum = $sum->RecordCount();
 
}
 
else
{
$query_sum=sprintf("SELECT SUM(f_cargo.poids_colis)  AS sum_poids_colis_1 FROM (f_manifest INNER JOIN f_cargo ON f_cargo.manifest_id=f_manifest.manifest_id) WHERE f_manifest.code_agree_consignataire='%s'  AND f_manifest.import_export='%s'  AND f_cargo.nature_colis='%s'" );
$sum = $connexion->SelectLimit($query_sum) or die($connexion->ErrorMsg());
$totalRows_sum = $sum->RecordCount();
}
}
}
}
}
}
}
}  
 
 
Voici le code d'affichage du résultat:<?php echo $sum->Fields('sum_poids_colis_1'); ?>
Le problème c'est qu'à l'affichage du résultat, j'ai cette erreur de ligne exactement là ou je l'affiche.
Fatal error: Call to a member function on a non-object in c:\easyphp1-8\www\decisionnel\search2.php on line 461
 
Merci d'avance pour vos différents aides.
 

Reply

Marsh Posté le 14-02-2010 à 12:41:29   

Reply

Marsh Posté le 14-02-2010 à 23:16:59    

Utilise la balise de code stp
 

Code :
  1. $colname1__sum = '-1';
  2. $colname2__sum = '-1';
  3. $colname3__sum = '-1';
  4. $query_sum="";
  5. $sum = "";
  6. $totalRows_sum = "";
  7.  
  8. if (isset($HTTP_GET_VARS['code']) && isset($HTTP_GET_VARS['sens']) && isset($HTTP_GET_VARS['nature']))
  9. {
  10.      if (!empty($HTTP_GET_VARS['code']) && !empty($HTTP_GET_VARS['sens']) && !empty($HTTP_GET_VARS['nature']))
  11.      {
  12.           $colname1__sum = $HTTP_GET_VARS['code'];
  13.           $colname2__sum = $HTTP_GET_VARS['sens'];
  14.           $colname3__sum = $HTTP_GET_VARS['nature'];
  15.           echo 'testSOMME1';
  16.           $query_sum = sprintf("SELECT SUM(f_cargo.poids_colis)  AS sum_poids_colis_1 FROM (f_manifest INNER JOIN f_cargo ON f_cargo.manifest_id=f_manifest.manifest_id) WHERE f_manifest.code_agree_consignataire='%s'  AND f_manifest.import_export='%s'  AND f_cargo.nature_colis='%s'", $colname1__sum,$colname2__sum,$colname3__sum);
  17.           $sum = $connexion->SelectLimit($query_sum) or die($connexion->ErrorMsg());
  18.           $totalRows_sum = $sum->RecordCount();
  19.     }
  20.     else
  21.     {
  22.         if (!empty($HTTP_GET_VARS['code']) && !empty($HTTP_GET_VARS['sens']))
  23.         {
  24.               $$colname1__sum = $HTTP_GET_VARS['code'];
  25.               $$colname2__sum = $HTTP_GET_VARS['sens'];
  26.               echo 'testSOMME2';
  27.               $query_sum = sprintf("SELECT SUM(f_cargo.poids_colis)  AS sum_poids_colis_1 FROM (f_manifest INNER JOIN f_cargo ON f_cargo.manifest_id=f_manifest.manifest_id) WHERE f_manifest.code_agree_consignataire='%s'  AND f_manifest.import_export='%s'", $colname1__sum,$colname2__sum);
  28.               $rs_sum = $connexion->SelectLimit($query_sum) or die($connexion->ErrorMsg());
  29.               $totalRows_sum = $rs_sum->RecordCount();
  30.         }
  31.         else
  32.         {
  33.             if (!empty($HTTP_GET_VARS['sens']) && !empty($HTTP_GET_VARS['nature']))
  34.             {
  35.                   $colname2__sum = $HTTP_GET_VARS['sens'];
  36.                   $colname3__sum = $HTTP_GET_VARS['nature'];
  37.                   echo 'testSOMME3';
  38.                   $query_sum = sprintf("SELECT SUM(f_cargo.poids_colis)  AS sum_poids_colis_1 FROM (f_manifest INNER JOIN f_cargo ON f_cargo.manifest_id=f_manifest.manifest_id) WHERE f_manifest.import_export='%s'  AND f_cargo.nature_colis='%s'", $colname2__sum,$colname3__sum);
  39.                   $sum = $connexion->SelectLimit($query_sum) or die($connexion->ErrorMsg());
  40.                   $totalRows_sum = $sum->RecordCount();
  41.             
  42.             }
  43.             else
  44.             {
  45.                 if (!empty($HTTP_GET_VARS['code']) && !empty($HTTP_GET_VARS['nature']))
  46.                 {
  47.                       $colname1__sum = $HTTP_GET_VARS['code'];
  48.                       $colname3__sum = $HTTP_GET_VARS['nature'];
  49.                       echo 'test4';
  50.                       $query_sum = sprintf("SELECT SUM(f_cargo.poids_colis)  AS sum_poids_colis_1 FROM (f_manifest INNER JOIN f_cargo ON f_cargo.manifest_id=f_manifest.manifest_id) WHERE f_manifest.code_agree_consignataire='%s' AND f_cargo.nature_colis='%s'", $colname1__sum,$colname3__sum);
  51.                       $sum = $connexion->SelectLimit($query_sum) or die($connexion->ErrorMsg());
  52.                         $totalRows_sum = $sum->RecordCount();
  53.                 
  54.                 }
  55.                 else
  56.                 {
  57.                     if (!empty($HTTP_GET_VARS['code']))
  58.                     {
  59.                           $colname1__sum = $HTTP_GET_VARS['code'];
  60.                           $query_sum = sprintf("SELECT SUM(f_cargo.poids_colis)  AS sum_poids_colis_1 FROM (f_manifest INNER JOIN f_cargo ON f_cargo.manifest_id=f_manifest.manifest_id) WHERE f_manifest.code_agree_consignataire='%s'", $colname1__sum);
  61.                           $sum = $connexion->SelectLimit($query_sum) or die($connexion->ErrorMsg());
  62.                         $totalRows_sum = $sum->RecordCount();
  63.                     
  64.                     }
  65.                     else
  66.                     {
  67.                         if (!empty($HTTP_GET_VARS['sens']))
  68.                         {
  69.                           $colname2__sum = $HTTP_GET_VARS['sens'];
  70.                           $query_sum = sprintf("SELECT SUM(f_cargo.poids_colis)  AS sum_poids_colis_1 FROM (f_manifest INNER JOIN f_cargo ON f_cargo.manifest_id=f_manifest.manifest_id) WHERE f_manifest.import_export='%s'", $colname2__sum);
  71.                           $sum = $connexion->SelectLimit($query_sum) or die($connexion->ErrorMsg());
  72.                           $totalRows_sum = $sum->RecordCount();
  73.                         
  74.                         }
  75.                         else
  76.                         {
  77.                             if (!empty($HTTP_GET_VARS['nature']))
  78.                             {
  79.                                   $colname3__sum = $HTTP_GET_VARS['nature'];
  80.                                   $query_sum = sprintf("SELECT SUM(f_cargo.poids_colis)  AS sum_poids_colis_1 FROM (f_manifest INNER JOIN f_cargo ON f_cargo.manifest_id=f_manifest.manifest_id) WHERE f_cargo.nature_colis='%s'", $colname3__sum);
  81.                                   $sum = $connexion->SelectLimit($query_sum) or die($connexion->ErrorMsg());
  82.                                   $totalRows_sum = $sum->RecordCount();
  83.                             
  84.                             }
  85.                              else
  86.                             {
  87.                                 $query_sum=sprintf("SELECT SUM(f_cargo.poids_colis)  AS sum_poids_colis_1 FROM (f_manifest INNER JOIN f_cargo ON f_cargo.manifest_id=f_manifest.manifest_id) WHERE f_manifest.code_agree_consignataire='%s'  AND f_manifest.import_export='%s'  AND f_cargo.nature_colis='%s'" );
  88.                                 $sum = $connexion->SelectLimit($query_sum) or die($connexion->ErrorMsg());
  89.                                 $totalRows_sum = $sum->RecordCount();
  90.                             }
  91.                         }
  92.                     }
  93.                 }
  94.             }
  95.         }
  96.     }
  97. }


 
Je n'ai pas bien compris ce que tu souhaitais faire... Tu répètes en tous cas plusieurs fois le même code ou presque, et c'est mal, car tu pourrais sans doute simplifier tout ca  ;)


Message édité par Pascal le nain le 14-02-2010 à 23:34:32
Reply

Marsh Posté le 15-02-2010 à 00:57:16    

Imbriquer quelques if ne ferait probablement pas de mal effectivement.
 

Code :
  1. if (!empty($HTTP_GET_VARS['code']))
  2. {
  3.    if (!empty($HTTP_GET_VARS['sens']))
  4.    {
  5.        if (!empty($HTTP_GET_VARS['nature']))
  6.        {
  7.            ...
  8.        }
  9.        else
  10.        {
  11.            ...
  12.        }
  13.    }
  14.    else
  15.    {
  16.        ...
  17.    }
  18. }
  19. else
  20. {
  21.    ...
  22. }


Ca serait quand même plus propre et lisible.


Message édité par Gigathlon le 15-02-2010 à 00:59:55
Reply

Marsh Posté le 15-02-2010 à 00:59:23    

Pour info on utilise plus $HTTP_GET_VARS depuis des années [:cend]  
utilise plutot : $_GET['code']
 
De meme pour les formulaires : $_POST
 
 
;)


---------------
A VENDRE: Razer Chroma ARGB Controller / Boitier / Support Triple Screen / Ventirad / Carte USB3
Reply

Marsh Posté le 15-02-2010 à 10:10:50    

En faite j'ai testé ma requête et elle marche bien. Mon problème c'est au niveau de l'affichage du résultat qui me renvoie une erreur : Fatal error: Call to a member function on a non-object in c:\easyphp1-8\www\decisionnel\search2.php.  Voici comment j'affiche le résultat de ma requête: :<?php echo $sum->Fields('sum_poids_colis_1'); ?>  
Ya t-il une erreur ?????

Reply

Marsh Posté le 15-02-2010 à 10:23:25    

on va déjà simplifié ton truc

Code :
  1. $colname = array('code' => 'f_manifest.code_agree_consignataire',
  2.                 'sens'     => 'f_manifest.import_export',
  3.                 'nature'=> 'f_cargo.nature_colis');
  4.  
  5. $sql = 'SELECT SUM(f_cargo.poids_colis)  AS sum_poids_colis_1
  6.         FROM f_manifest
  7.         INNER JOIN f_cargo ON f_cargo.manifest_id=f_manifest.manifest_id';
  8.  
  9. if(!empty($_POST))
  10. {
  11.     $post = $_POST;
  12.     $data = array();
  13.     
  14.     foreach($post as $key => $value)
  15.     {
  16.         $data[] =  "{$colname[$key]}='%s'";
  17.     }
  18.     
  19.     $sql .= ' WHERE ' . implode(' AND ', $data);
  20.     
  21.     $query = vsprintf($sql, $post);
  22.     
  23.     echo $query;        
  24.  
  25.     //$sum             = $connexion->SelectLimit($query_sum) || exit($connexion->ErrorMsg());
  26.     //$totalRows_sum     = $sum->RecordCount();
  27. }


 
et puis ton erreur c'est dans la page search2.php a la ligne 461, je doute que ca soit le script que tu nous a passé, montre nous ce qu'il y'a autour de ca


Message édité par stealth35 le 15-02-2010 à 10:27:13
Reply

Marsh Posté le 15-02-2010 à 12:24:46    

Tu utilises un objet $sum qui n'a pas été initialisé comme tel. Avant d'utiliser un objet, tu dois créer une instance de cet objet par un new.


---------------
http://www.aideinfo.com/  Whois adresses IP/domaines le plus évolué !!  FAQ Free Mobile
Reply

Marsh Posté le 15-02-2010 à 12:50:09    

Merci a tous. J'ai trouvé mon erreur c'etait juste une erreur d'acollade non fermé dans mon code

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed