Page 1 sur 1

Calcul frais de livraison

Posté : 20 oct. 2006, 16:39
par pixfacto
Bonjour à tous,

j'ai un petit problème.

Lors d'une commande, je souhaiterais ajouter les frais de livraison automatiquement.
Si la somme
<350€ => frais de livraison = 10€
>350€ => frais de livraison = 0€

Mons script initial me permet de calculer les frais en fonction du pays de livraison
$pays=$row_pays['continent'];
switch ($pays){
case "belgique":
$p_liv="2.5";
break;
case "europe":
$p_liv="5";
break;
case "monde":
$p_liv="7";
break;
}
Voici mon adaptation, mais ça fonctionne pas
$forfait=$row_listing['prix']
switch ($forfait) {
case "<350":
$p_liv="10";
break;
case ">350":
$p_liv="0";
break;
Pourries-vous me donner un coup de main? Je me casse la tête depuis plusieurs heures.

Merci
Pierre

Posté : 20 oct. 2006, 16:48
par Truc
Le switch() n'est pas adapté dans ce cas.
Utilise un test if()else (ou avec l'opérateur ternaire)
$forfait=$row_listing['prix'];
$p_liv = ($forfait < 350) ? 10 : 0;

Posté : 20 oct. 2006, 17:41
par pixfacto
J'ai essayé pas mal de truc dont ceci, mais c'est pas concluant.
$subtotal_commande=$row_listing['prix'] * $_SESSION['produits'][$num]['qty']; 
$total_commande=$total_commande+$subtotal_commande;
if ($total_commande < 350){
$p_liv = "10";
}
else {
$p_liv = "0";
}
La valeur est touours 10.
Désolé de vous faire perdre votre tps sur un prob. aussi basic.

Pierre

Posté : 20 oct. 2006, 17:47
par Ajoloca
Bonjour,

Commence par vérifier le contenu de tes variables avant les opérations,
Si une seule de tes variables est 0 tu passeras TJ dans la condition < 300

Posté : 20 oct. 2006, 17:49
par Truc
La valeur est touours 10.
C'est que $total_commande est toujours inferieure à 360.

Pour verifier.... affiche cette variable avant le test.

Sinon les frais de livraison sont des valeurs numériques pas besoin des guillemets.

Posté : 23 oct. 2006, 15:57
par pixfacto
J'ai trouvé la solution !
   <?php } while ($row_listing = mysql_fetch_assoc($listing)); 
														
														
														if($total_commande > 350){
														 	$p_liv = 0;
														}else{
														 	$p_liv = 10;
														}?>
Merci de votre aide!

Posté : 23 oct. 2006, 17:42
par Truc
Juste pour rappel :

Nos deux formulations sont exactement les mêmes :
if($total_commande > 350)
{
   $p_liv = 0;
}
else
{
   $p_liv = 10;
}
$p_liv = ($total_commande < 350) ? 10 : 0;
Suivre le lien donné sur l'opérateur ternaire :wink: