Bonsoir!

Je cherche à faire un calcul de montant à la ligne puis d'un total résultant du résultat d'un formulaire avec le code suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<form method="post" action="commander1.php">
 
 <div id="commande">
    <div class="rowtitle">
      <span class="reference">Référence</span>
      <span class="format">Format</span>
      <span class="price">Prix TTC</span>
      <span class="quantite">Quantité</span>
    </div>
 
 
<!-- Condition 1 -->
 
    <?php if($_SESSION['panier'][1]['verrou'] == "vide"){ ?>
 
 
    <?php  $products = $DB->query('SELECT * FROM article order by clef ');
           foreach ($products as $produit):                                   ?>
 
       <input type="hidden" name="panier[<?php echo $produit->clef; ?>][clef]" value="<?php echo $produit->clef; ?>"/>
       <input type="hidden" name="panier[<?php echo $produit->clef; ?>][designation]" value="<?php echo $produit->designation; ?>"/>
       <input type="hidden" name="panier[<?php echo $produit->clef; ?>][format]" value="<?php echo $produit->format; ?>"/>       
       <input type="hidden" name="panier[<?php echo $produit->clef; ?>][prix]" value="<?php echo $produit->prix; ?>"/>   
       <input type="hidden" name="panier[<?php echo $produit->clef; ?>][montantligne]" value=""/>       
       <input type="hidden" name="panier[<?php echo $produit->clef; ?>][verrou]" value="encours"/>
 
    <div class="row">
      <span class="reference"><?php echo $produit->designation; ?></span>      
      <span class="format"><?php echo $produit->format; ?></span>
      <span class="price"><?php echo number_format($produit->prix,2,',',' '); ?> €</span>
      <span class="quantite"><input type="number" name="panier[<?php echo $produit->clef; ?>][qte]" min="0" max="999" size="5"/></span>                              
    </div>
 
 
 
    <?php endforeach; ?>
 
    <div class="rowlast">      
      <span class="total"></span>
      <span class="totalprice"></span>
    </div>
 
    </br><center><input name="Valider" value="Valider" type="submit" class="bouton"/></center>
 
<!-- Condition 2 -->
 
    <?php } else { ?>
 
      <?php         
      $panier = $_SESSION['panier'];
      $ids = array_keys($panier);  
      $total = 0 ;
      $montantligne = 0;
      foreach ($panier as $valeur): $valeur['montantligne'] = $valeur['qte'] * $valeur['prix']; endforeach;
      foreach ($panier as $valeur): $total += $valeur['montantligne']; endforeach;
      foreach ($panier as $valeur):
      ?>
 
 
       <input type="hidden" name="panier[<?php echo $valeur['clef']; ?>][clef]" value="<?php echo $valeur['clef']; ?>"/>
       <input type="hidden" name="panier[<?php echo $valeur['clef']; ?>][designation]" value="<?php echo $valeur['designation']; ?>"/>
       <input type="hidden" name="panier[<?php echo $valeur['clef']; ?>][format]" value="<?php echo $valeur['format']; ?>"/>       
       <input type="hidden" name="panier[<?php echo $valeur['clef']; ?>][prix]" value="<?php echo $valeur['prix']; ?>"/>
       <input type="hidden" name="panier[<?php echo $valeur['clef']; ?>][montantligne]" value="<?php echo $valeur['qte'] * $valeur['prix']; ?>"/>
       <input type="hidden" name="panier[<?php echo $valeur['clef']; ?>][verrou]" value="encours"/>
 
 
    <div class="row">      
      <span class="reference"><?php echo $valeur['designation']; ?></span>   
      <span class="format"><?php echo $valeur['format']; ?></span>
      <span class="price"><?php echo number_format($valeur['prix'],2,',',' '); ?> €</span>
      <span class="quantite"><input type="number" name="panier[<?php echo $valeur['clef']; ?>][qte]" value="<?php echo $valeur['qte']; ?>" min="0" max="999" size="5"/></span>
    </div>
 
 
 
    <?php endforeach; ?> 
 
    <div class="rowlast">      
      <span class="total"><?php echo $total; ?></span>
      <span class="totalprice"></span>
    </div>
 
    </br><center><input name="Valider" value="Valider" type="submit" class="bouton"/></center>
 
 
 
 
    <?php } ?>
je gère parallelement un fichier fonction :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
 
   if(!isset($_SESSION)){
         session_start();  
         }
   if(!isset($_SESSION['panier'])){
      $_SESSION['panier']=array();
      $_SESSION['panier'][1]['verrou'] = "vide";
   }
 
   if(isset($_POST['Valider']))
   {      
      $_SESSION['panier'] = $_POST['panier'];
      $_SESSION['montantligne'] = $_POST['montantligne'];
   }  
 
   if(!isset($_SESSION['montantligne'])){
      $total = 0;
   }else{
      $total = array_sum($_SESSION['montantligne']);
   }
 
function mult($a, $b) {    return $a * $b;} 
 
?>
Seulement je suis obliger de valider deux fois mon formulaire afin de voir apparaitre mon total avec la bonne valeur.

J'aimerais donc dès la première validation de mon formulaire obtenir le bon total et ne sais pas comment contourner ce problème ...

Merci d'avance !