Page 1 sur 1

Comment calculer ligne après ligne le montant d'un panier en

Posté : 17 juin 2009, 12:50
par arkhon21
Bonjour,

Je cherche comme calculer ligne après ligne le montant d'un panier en php.

Par exemple:

5 Pantalons a 9.95€ = 49.75€

+1 chemise a 3.50€ = 3.50€

Je ne cherche pas calculer le grand total, mais seulement le total pour chaque ligne d' article. En gros quelle syntaxe a utiliser pour pouvoir calculer les 5 pantalons, puis la ligne du dessous et ainsi de suite


Quelqu'un aurait-il une réponse?

Merci

Posté : 17 juin 2009, 13:11
par albat
Modération :
Sans voir ton code, ça va pas être simple...
:roll:

Posté : 17 juin 2009, 13:19
par arkhon21
OK

Voila le code
<?

$linetotal=0;

  for($i = 0; $i < 1; $i++) 
  {            
   $linetotal = $_SESSION['panier']['qteProduit'][$i]* $_SESSION['panier']['prixProduit'][$i]; 
  }
    
{
echo "".$linetotal. "<br>";
}
?>
Ce que j'aimerai c'est savoir c'est le bout de code a placer pour pouvoir passer a la ligne suivante, la calculer, donner le résultat, puis faire de même pour le reste

Merci

Posté : 17 juin 2009, 17:08
par dunbar
OK

Voila le code
<?

$linetotal=0;

  for($i = 0; $i < 1; $i++) 
  {            
   $linetotal = $_SESSION['panier']['qteProduit'][$i]* $_SESSION['panier']['prixProduit'][$i]; 
  }
    
{
echo "".$linetotal. "<br>";
}
?>
Ce que j'aimerai c'est savoir c'est le bout de code a placer pour pouvoir passer a la ligne suivante, la calculer, donner le résultat, puis faire de même pour le reste

Merci
Le formulaire aussi stp

Posté : 17 juin 2009, 17:47
par arkhon21
Voila le code complet,

<?
session_start();
require("conf.php"); 
if(!session_is_registered(myusername)){
header("location:index.php");
}

// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");



$sql="SELECT * FROM order_clients T, clients C WHERE T.myusername=C.myusername ORDER BY date_hour DESC LIMIT 1; " or die ('Erreur SQL !' .$sql. ' <br> ' .mysql_error());
$req = mysql_query($sql) or die ('Erreur SQL !' .$sql. ' <br> ' .mysql_error());
$res = mysql_fetch_array($req) or die ('Erreur SQL !' .$sql. ' <br> ' .mysql_error()); 


?>

<center><table class="catalog7" BORDER=0 CELLSPACING=5 CELLPADDING=5 COLS=4 WIDTH="750" >
<tr>
<td class="catalog6"><b>QTY</b></td>

<td class="catalog6"><b>Description</b></td>

<td class="catalog6"><b>Unity Price</b></td>

<td class="catalog6"><b>Line Total</b></td>
</tr>

<tr>
<td class="catalog7">
<? 

$nbArticles=count($_SESSION['panier']['qteProduit']);
  if ($nbArticles <= 0)
   echo "0";
  else
  {
   for ($i=0 ;$i < $nbArticles ; $i++)
   {
    echo "".htmlspecialchars($_SESSION['panier']['qteProduit'][$i])."<br>";

   }
     
	}
	


;?>
</td>

<td class="catalog7">
<? 
$nbArticles=count($_SESSION['panier']['libelleProduit']);
  if ($nbArticles <= 0)
   echo "Your Cart is Empty";
  else
  {
   for ($i=0 ;$i < $nbArticles ; $i++)
   {
    echo "".($_SESSION['panier']['libelleProduit'][$i])."<br>";

   }
     
	}
	
	

;?>
</td>

<td class="catalog7">
<div align=right>
<? 

$nbArticles=count($_SESSION['panier']['prixProduit']);
  if ($nbArticles <= 0)
   echo "0";
  else
  {
   for ($i=0 ;$i < $nbArticles ; $i++)
   {
    echo "".htmlspecialchars($_SESSION['panier']['prixProduit'][$i])."<br>";

   }
     
	}
	


;?>
</div></td>

<td class="catalog7">
<div align=right>
<?

$linetotal=0;

  for($i = 0; $i < 1; $i++) 
  {            
   $linetotal = $_SESSION['panier']['qteProduit'][$i] * $_SESSION['panier']['prixProduit'][$i]; 
  }
    
{
echo "".$linetotal. "<br>";
}
?>
</div></td>
</tr>

<tr>
<td class="catalog7"></td>

<td class="catalog7"></td>

<td class="catalog7">
<div align=right><b>Sub-Total</b></div>
</td>

<td class="catalog7">
<div align=right>
<?

$total=0;

  for($i = 0; $i < count($_SESSION['panier']['libelleProduit']); $i++) 
  {            
   $total += $_SESSION['panier']['qteProduit'][$i] * $_SESSION['panier']['prixProduit'][$i]; 
  }
    
{
echo "".$total."";
}
?>
</div></td>
</tr>

<tr>
<td class="catalog7"></td>

<td class="catalog7"></td>

<td class="catalog7">
<div align=right><b>Tax</b></div>
</td>

<td class="catalog7">
<div align=right>0.00</div>
</td>
</tr>

<tr>
<td class="catalog7"></td>

<td class="catalog7"></td>

<td class="catalog7">
<div align=right><b>Total</b></div>
</td>

<td class="catalog7">
<div align=right>
<?

$total=0;

  for($i = 0; $i < count($_SESSION['panier']['libelleProduit']); $i++) 
  {            
   $total += $_SESSION['panier']['qteProduit'][$i] * $_SESSION['panier']['prixProduit'][$i]; 
  }
    
{
echo "".$total."";
}
?>
</div></td>
</tr>
</table></center>

Posté : 17 juin 2009, 20:41
par dunbar
Pourquoi ne pas faire une simple boucle WHILE et si je peut me permettre recommence ton code parce là c'est une catastrophe :wink:

Posté : 17 juin 2009, 22:06
par arkhon21
Pourquoi ne pas faire une simple boucle WHILE et si je peut me permettre recommence ton code parce là c'est une catastrophe :wink:
C'est une catastrophe parce c'est une catastrophe? Ou c'est une catastrophe parce que toi non plus t'arrive pas a solutionner?

Car pour une catastrophe, il fonctionne très bien, c'est seulement l'addition de chaque produit qui me manque. Car l'addition final, je l'obtiens correctement.

Mais je vais essayer la boucle WHILE pour obtenir l'addition de chaque produit.

Posté : 18 juin 2009, 02:15
par Nagol
je crois qu'il voulait dire que c'est une catastrophe, parceque c'est une catastrophe :)

le fait de marcher c'est bien, mais il faut travailler sur les perfs, la simplicité, la logique, la présentation, la validité du html final, bref un peu tout

Code : Tout sélectionner

for($i = 0; $i < 1; $i++)
un tour de boucle et puis s'en va? tu peux supprimer ça, ca sert à rien à prioris

Code : Tout sélectionner

echo "".htmlspecialchars($_SESSION['panier']['prixProduit'][$i])."<br>";
echo "" c'est pas très utile, les double quote c'est mal.

Code : Tout sélectionner

<div align=right>
un argument en html ca prend des ", et l'argument right n'existe plus dans aucune des normes de ces 5 dernières années

c'est pas pour t'embéter, mais je pense que tu résoudrais ton probleme en 15 minutes si tu avais un code moins alambiqué, parceque bon au final c'est une adition que tu veux faire...

Posté : 18 juin 2009, 02:17
par Nagol
ah aussi, l'argument "ca marche" c'est pas un truc valable, est ce que ca marchera demain, et après demain, est ce que si un utilisateur fait un truc bizarre ça marche toujours, est ce que ca marche si ton code change de serveur, ou de version de php. y'a beaucoup beaucoup d'aléatoire dans ce domaine, faut etre très omniscient pour pouvoir s'abstraire de bugs. qui plus est, si ca marchais, serais-tu sur ce forum? :)