Comptage d'un trableau

Résolu
johnjohn88888 Messages postés 3 Date d'inscription samedi 27 octobre 2018 Statut Membre Dernière intervention 28 octobre 2018 - Modifié le 27 oct. 2018 à 09:50
johnjohn88888 Messages postés 3 Date d'inscription samedi 27 octobre 2018 Statut Membre Dernière intervention 28 octobre 2018 - 28 oct. 2018 à 17:25
Bonjour,

Je suis nouveau sur le site, je commence à coder quelques petits truc perso.

J'ai un petit soucis. J'aimerai savoir comment additionner des éléments une boucle en faisait un tri.

$requete = mysql_query("SELECT * FROM commande_facture WHERE date = '$commande'");
   if(mysql_num_rows($requete)>=1){ 
   
while ($donnees = mysql_fetch_array($requete) )
{
$id_commande = $donnees['id_commande'];
$id_client = $donnees['id_client'];
$type = $donnees['type'];
$montant = $donnees['montant'];
$cash = $donnees['cash'];
$banque = $donnees['banque'];
$bon = $donnees['bon_achat'];
$date= $donnees['date'];
$information= $donnees['information'];
$modele= $donnees['modele'];
$an = substr($donnees['date'], -4);
$acompte_cash = $donnees['acompte_cash'];
$acompte_banque = $donnees['acompte_banque'];
$acompte_bon = $donnees['acompte_bon'];
$acompte_date =$donnees['acompte_date'];
$num_commande = $donnees['id_co_repa'];
$solde = $montant - $acompte_banque - $acompte_bon - $acompte_cash;
$id_co = $donnees['id_co_repa'];

$soldetotal += $solde;
$soldebanque += $banque;
$soldecash +=  $cash;
   
$panier = mysql_query("SELECT * FROM ligne WHERE id_commande ='$id_commande' && annee = '$an' ORDER BY id_article ASC");
  if(mysql_num_rows($panier)>=1){
  
  while ($donnees1 = mysql_fetch_array($panier) )
{
$code_tva = $donnees1['code_tva'];
if ($code_tva == 1){$tva = 1.21;$tva2 = 21;}
else {$tva = 1.06;$tva2=6;}
if($donnees1['prix_htva'] == ''){
$prix_unitaire = $donnees1['prix_unitaire'];}
else{
$prix_unitaire = $donnees1['prix_htva'] * $tva;
}
$total =($prix_unitaire * (1-($donnees1['remise']/100))) * $donnees1['quantite'];


if($tva2 == 6){$total6 += $total;} else {$total21 += $total;};


$test = $montant - $total6 -$acompte_cash-$acompte_banque;

foreach( $donnees1 as $value ) 
  echo $value . '<br />';



  
  }



if ($total6  == 0) {
         $t6 = $total6;
         }
        else { $t6 = ($total6);
 }
if ($total21 == 0) {
         $t21 = $total21;
        }
        else {
         $t21 = ($montant-$acompte_cash-$acompte_banque);
         $t21s = ($total21-$acompte_cash-$acompte_banque);
         $global21 += ($montant - $acompte_cash - $acompte_banque);
         
 }
        $this->Cell($w[0],6,"Vente Facture B4L$id_commande",0,0,"C");
       
        $this->Cell($w[1],6,''.number_format($total6,2,',','').'' ,0,0,"C");
        $this->Cell($w[2],6,''.number_format($test,2,',','').'' ,0,0,"C");
  $this->Cell($w[3],6,''.number_format(($total6)-($total6/1.06),2,',','').'€' ,0,0,"C");
        $this->Cell($w[4],6,''.number_format(($t21)-($t21/1.21),2,',','').'€',0,0,"C");
        $this->Cell($w[5],6,''.number_format($cash,2,',','').'Ä',0,0,"C");
        $this->Cell($w[6],6,''.number_format($banque,2,',','').'Ä',0,0,"C");   
        $this->Ln();
   
}
}


Dans la premiere boucle, je récupère les premières donnée pour la recherche de la deuxieme boucle .

Cette ligne pose probleme

if($tva2 == 6){$total6 += $total;} else {$total21 += $total;};


voici le tableau a trier

249 - 1
249 - 2
249 - 3
250 - 1
250 - 2
250 - 3

Premiere ligne de la boucle j'ai 249 - 6 mais en deuxième ligne j'ai 250 - 12 (je voudrais avoir juste l'addition deux 3 dernières lignes.

Merci pour votre aide.

EDIT : Correction des balises de code

2 réponses

jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 344
27 oct. 2018 à 10:06
Bonjour,

Déjà, lorsque tu postes ton code, merci d'y mettre la coloration syntaxique. Pour ça il suffit d'indiquer le langage.
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Ensuite, vu que tu débutes, autant partir sur les bonnes pratiques.
Pour commencer, l'extension mysql est obsolète. Il faut désormais utiliser PDO ou mysqli
http://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top

Il serait bien également de faire de l'indentation dans ton code voir même d'écrire tes instructions en respectant un minimum la norme PSR (tu trouveras sur le net)
Je t'invite au passage à lire et appliquer ceci :
http://www.commentcamarche.net/faq/48399-php-gestion-des-erreurs-debogage-et-ecriture-du-code

Concernant ton souci... il serait bien de nous dire un peu plus que "Cette ligne pose probleme ".
- Un message d'erreur ?
- Le comportement attendu (lequel ? ) n'est pas le bon ?

Sachant que je n'ai pas vu, dans ton code, l'endroit où tu initialises tes deux variables $total6 et $total21.

Personnellement, pour alléger un peu l'écriture du code, j'utiliserai, quand c'est possible, l'écriture ternaire au lieu des if/else habituelle.
Comme ceci:
$total6  = 0;
$total21 = 0;
 while ($donnees1 = mysql_fetch_array($panier) )
{
	$code_tva = $donnees1['code_tva'];
	$tva = $code_tva == 1 ? 1.21 : 1.06;
	$tva2 = $code_tva == 1 ? 21 : 6;
	$prix_unitaire = $donnees1['prix_htva'] == '' ?  (float) $donnees1['prix_unitaire'] : (float) $donnees1['prix_htva'] * $tva;
	
	$total = (float)( ($prix_unitaire * (1-($donnees1['remise']/100))) * $donnees1['quantite']);

	if($tva2 == 6){
		$total6 += $total;
	} else {
		$total21 += $total;
	}



0
johnjohn88888 Messages postés 3 Date d'inscription samedi 27 octobre 2018 Statut Membre Dernière intervention 28 octobre 2018
27 oct. 2018 à 11:31
Merci pour les infos, je vais devoir revoir les cours alors ca évolue tellement ;) Le site en question date De 2014 et je modifie un truc ;)

J'ai mis un lien du résultat.

http://admin-test.bike4life-shop.com/admin_site/bilan.php?commande=17-10-2018

En gros le première ligne est bonne. $total6 correspond au montant 6% et $total21 au montant 21%.

Pour la 2e ligne, il additionne le résultat à celui de la première ligne.
0
jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 344
27 oct. 2018 à 12:56
Oui.
Faut que tu remettes tes variables a zero avant de passer à la seconde ligne
0
johnjohn88888 Messages postés 3 Date d'inscription samedi 27 octobre 2018 Statut Membre Dernière intervention 28 octobre 2018
28 oct. 2018 à 17:25
Un grand merci ;)
0
Rejoignez-nous