Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/07/2011, 17h47   #1
Invité de passage
 
Inscription : juillet 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : juillet 2011
Messages : 3
Points : 1
Points : 1
Par défaut Un probleme de debutant

Bonjour,

Je suis debutant en PHP et j'ai quelques difficultés a comprendre quel est le probleme dans mon code. J'aimerais donc calculer, a la fin, le prix total avec une promotion qui depend du nombre de pneu acheté. Quand je fais le test du code sur un navigateur Internet, le prix total ($totalamout) ne change pas apres avoir calculer l'ajout des taxes.

Est-ce une erreur de placement des deux dernieres lignes de code ? Y'a t-il un probleme au niveau de la promotion ($discount)?

Voici ce que le navigateur Internet me renvoie:

Citation:
Items ordered: 112
Subtotal: $610.00
Total including tax: $671.00
The total amount with your discount is $671.00
Le dernier prix devant etre different de l'avant dernier vu la promotion...

Que dois-je faire pour que le dernier prix soit correcte (avec promotion)?

Merci !

PS: J'apprend a partir d'un livre ecrit anglais et non sur ce site et desolé pour la mise en forme, je n'ai pas encore l'habitude.

Code :
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
echo "<p>Order processed at ".date('H:i, jS F Y')."</p>";
 
	echo "<p>Your order is as follows: </p>";
 
	$totalqty = 0;
	$totalqty = $tireqty + $oilqty + $sparkqty;
 
	if ($totalqty < 1)	{
		echo '<p style="color:red">';
		echo "Please order at least one item from the list!</br>";
		echo '</p>';
	} else {
 
	echo "Items ordered: ".$totalqty."<br />";
 
	$totalamount = 0.00;
 
	define('TIREPRICE', 100);
	define('OILPRICE', 10);
	define('SPARKPRICE', 4);
 
	$totalamount = $tireqty * TIREPRICE
				 + $oilqty * OILPRICE
				 + $sparkqty * SPARKPRICE;
 
	echo "Subtotal: $".number_format($totalamount,2)."<br />";
 
	$taxrate = 0.10;  // local sales tax is 10%
	$totalamount = $totalamount * (1 + $taxrate);
	echo "Total including tax: $".number_format($totalamount,2)."<br />";
	}
 
	if ($tireqty < 10) {
		$discount = 0; // No discount
	} elseif (($tireqty >= 11) && ($tireqty <= 49)) {
		$discount = 0.05; // Discount of 5%
	} elseif (($tireqty >= 50) && ($tireqty <= 99)) {
		$discount = 0.10; // Discount of 10%
	} elseif ($tireqty >= 100) {
		$discount = 0.15; // Discout of 15%
	}
	$totalamount = $totalamount * (1 - $discount);
	echo "The total amount with your discount is $".number_format($totalamount,2)."<br />";
Timur2011 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2011, 18h14   #2
Invité régulier
 
Homme
Consultant MOA
Inscription : juillet 2011
Messages : 9
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant MOA
Secteur : Finance

Informations forums :
Inscription : juillet 2011
Messages : 9
Points : 6
Points : 6
Bonjour Timur,

A priori ton code fonctionne plutot bien, par contre, je remarque que ton totalamount fait $610, or pour avoir un discount, il faut acheter au moins 10 pneus, or le cout de dix pneus selon ton code est 10*100 = $1000.

J'en conclus donc que l'achat n'est pas composé de pneus, mais d'OIL ou de SPARK, d'ou l'innexistance de discount.

As-tu vérifié que ton achat comportait bien au moins 10 pneus?
(Selon ton code, on a un discount lorque l'on achete 10 pneus, ici le client achete bien 112 items mais moins de dix pneux =) sinon le prix serait supérieur a 610 d'ou l'origine du probleme)

PS : tu peux faire un petit echo $tireqty avant ta derniere ligne
echo "The total amount with your discount is $".number_format($tot(...)
pour verifier

Cordialement,
eurekgeez est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 12/07/2011, 19h53   #3
Invité de passage
 
Inscription : juillet 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : juillet 2011
Messages : 3
Points : 1
Points : 1
Je me sens totalement bete... Il faudrait que je commence a faire marcher mes neurones !

Donc, oui mon code fonctionne bien.

Citation:
Order processed at 19:50, 12th July 2011

Your order is as follows:

Items ordered: 14
Subtotal: $1,214.00
Total including tax: $1,335.40
The total amount with your discount is $1,268.63
Pouvez-vous me dire si la mise en forme du code est bonne ? Devrais-je prendre en compte certaines regles?

Merci eurekgeez !
Timur2011 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 08h31   #4
Membre éprouvé
 
Homme romain escudier
Développeur informatique
Inscription : juin 2011
Messages : 300
Détails du profil
Informations personnelles :
Nom : Homme romain escudier
Âge : 22
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2011
Messages : 300
Points : 471
Points : 471
Ton code est correct, juste 2 choses:
_rajouter des commentaire (plus il y en a mieux c'est)
_la structure des if (enfin ça c'est perso):

Code :
1
2
3
4
5
6
7
8
if (condition)
{
  code;
}
else if (autrecondition)
{
  autrecode;
}
j'ai appris à coder de cette manière et je la trouve plus lisible que de mettre tout sur 2 lignes.

Autre petit détail lorsque ton if ne comporte qu'une seul instruction tu n'as pas besoin des accolade:

Code :
1
2
if (condition)
 uneseuleinstruction;
reviens au même que:

Code :
1
2
3
4
if (condition)
{
  uneseuleinstruction;
}
__________________
Pas de solution, pas de probleme

Une réponse utile (ou +1) le pouce vert
Une réponse à votre question

skeud est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 13/07/2011, 13h19   #5
Invité de passage
 
Inscription : juillet 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : juillet 2011
Messages : 3
Points : 1
Points : 1
Il est vrai que c'est plus lisible de votre facon.

Merci de votre aide, Skeud !
Timur2011 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h38.


 
 
 
 
Partenaires

Hébergement Web