Calcul frais de livraison

Eléphanteau du PHP | 44 Messages

20 oct. 2006, 16:39

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

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

20 oct. 2006, 16:48

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;

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 44 Messages

20 oct. 2006, 17:41

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

ViPHP
ViPHP | 1961 Messages

20 oct. 2006, 17:47

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
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

20 oct. 2006, 17:49

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.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 44 Messages

23 oct. 2006, 15:57

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!

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

23 oct. 2006, 17:42

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:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute