IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Récupérer les différents prix de la commande [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Par défaut Récupérer les différents prix de la commande
    Bonjour tout le monde,

    Je réalise un site en PHP orientée objet avec des classes, des DAO, des contrôles et des vues.

    Mon souci est pour récupérer(afin d'enregistrer) le prix HT, le prixTVA et le prix total à payer.

    Tout d'abord j'ai une vue nommée "V_commande.php" qui permet d'afficher les renseingements sur le(s) article(s) que le client souhaite commander dont le prix HT...., voici son code :
    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
    <form name="commande" method="POST" action="index.php?action=accepter_commande">
    	<table>
    		<tr>
    			<th>Code</th>			<!-- Création de la colonne "Code" -->
    			<th>Marque</th>			<!-- Création de la colonne "Marque" -->
    			<th>Modele</th>			<!-- Création de la colonne "Modele" -->
    			<th>Cylindre</th>		<!-- Création de la colonne "Cylindre" -->
    			<th>Designation</th>	<!-- Création de la colonne "Designation" -->
    			<th>Prix</th>			<!-- Création de la colonne "Prix" -->
    			<th>Quantit&eacute;</th>		<!-- Création de la colonne "Quantité" -->
    			<th>Montant</th>		<!-- Création de la colonne "Montant" -->
    		</tr>
    		<?php
    		$i=0;
     
    		$LesLignesCdes=$Cde->get_LesLignesCommandes()->getAll(); //renvoie les lignes de commande de la variable 'maCde'
     
    		// Pour chaque lignes de commandes correspondants à la variable "article" on insére les données des articles choissit
    		foreach ($LesLignesCdes as $article)
    		{ 
    			$i=$i+1;?>
    			<tr>
    				<td><?php echo $article->get_article()->get_key(); ?></td>
    				<td><?php echo $article->get_article()->get_marque(); ?></td>
    				<td><?php echo $article->get_article()->get_modele(); ?></td>
    				<td><?php echo $article->get_article()->get_cylindre(); ?></td>
    				<td><?php echo $article->get_article()->get_designation(); ?></td>
    				<td><?php echo number_format($article->get_article()->get_prixHT(),2,"."," ");?></td>
    				<td>
    					<!-- 'type="text"' Permet d'afficher la quantité d'article commandé par article -->
    					<input type="text" readonly="true" name="quantite<?php echo $i; ?>" value="<?php echo $article->get_Qte(); ?>" class="quantite"<?php echo $article->get_Qte(); ?>"/>
    				</td>
    				<td>
    					<!--  number_format permet de formater un nombre pour l'affichage -->
    					<?php echo number_format(($article->get_article()->get_prixHT()*$article->get_Qte()), 2,"."," "); ?>
    				</td>
    				<td>
    					<input type="hidden" name="cumul" value="<?php echo $i; ?>"/>
    				</td>
    			</tr>
    		<?php 
    		}
    		?>
    		<tr>
    			<!--  6 colonnes vides -->
    			<td/><td/><td/><td/><td/><td/>
    				<th>Montant TTC</th>
    				<td><?php echo number_format($MaCde->retournePrixTotalTTC(),2,"."," "); ?></td>
    		</tr>
    		<tr>
    			<!-- 6 colonnes vides -->
    			<td/><td/><td/><td/><td/><td/>
    			<th>Dont T.V.A.</th>
    			<td><?php echo number_format($MaCde->retourneTVA(),2,"."," "); ?></td>
    		</tr>
    		<tr>
    			<!-- 6 colonnes vides -->
    			<td/><td/><td/><td/><td/><td/>
    			<th>Frais de port</th>
    			<td><?php echo number_format($MaCde->retourneFraisPort(),2,"."," "); ?></td>
    		</tr>
    		<tr>
    			<!-- 6 colonnes vides -->
    			<td/><td/><td/><td/><td/><td/>
    			<th>Montant a payer</th>
    			<td><?php echo number_format($MaCde->retournePrixTotalAPayer(),2,"."," "); ?></td>
    		</tr>
    		<tr>
    			<!-- 4 colonnes vides -->
    			<td/><td/><td/><td/>
    			<!-- 'type="image"' permet d'afficher le bouton "commander" -->
    			<td><input type="image" src="images_gabarit/commander1.jpg"/></td>
    			<td/><td/>
    		</tr>
    	</table>
    </form>
    Puis lorsque le client clique sur le bouton "commander" alors l'exécution du controles nommée "C_AccepterCommande.php" est effectué, voici son code :
    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
    <?php
    	session_start();
    	$IdClt=$_COOKIE["siteweb_php"];						// Création du cookie
    	$date=date("Y")."-".date("m")."-".date("d");	// Variable permettant de gérer une date
     
    	//$LeClt=DAO_client::ChargerUnClient($IdClt);	// Permet le chargement d'un client dans la variable "LeClt"
    	$i=0;
     
    	// Pour chaque article appartenant à la variable de session 'commander' on appel la fonction 'AjouterLigneCommande via la variable "MaCde"
    	foreach($_SESSION['Commander'] as $article)
    	{
    		$NvCde=DAO_Commande::NouvelleCde();
    		$i=$i+1;
    		$MaCde=new commande($NvCde, $IdClt, $date);
    		$Cde=$MaCde->AjouterLigneCommande($article,$_POST['quantite'.$i]);	
    	}
     
    	// Appel de la fonction 'Sauvegarder_UneCommande' via la variable "MaCde"
    	$MaCommande=DAO_Commande::SauvegarderCommande($MaCde);
    	unset($_SESSION["panier"]);
    	?>
     
    	<!-- Message de fin de commande -->
    	<div id="finCommande">
    		<?php
    			echo "<h1>votre commande a bien &eacute;t&eacute; prise en compte</h1>";
    		?>
    	</div>
    J'aimerais pouvoir insérer le prixHT, prixTVA et prix total à payer dans la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $MaCde=new commande($NvCde, $IdClt, $date);
    amis malheureusement je n'y arrive pas.

    Comment puis-je faire??

    Cordialement!!

  2. #2
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Bonsoir,

    il y a un bout de code inutile qui se balade dans une balise :

    class="quantite"<?php echo $article->get_Qte(); ?>"/>

    à remplacer par :

    class="quantite" />

    Aussi, concernant ton problème de prix HT TTC etc.. à passer en paramètres à ta classe, il te suffirait de modifier le constructeur de la classe commande(). Par contre, étant donné que tu as l'identifiant du produit en paramètres, je ne vois pas l'intérêt de lui passer ces valeurs car elles sont implicitement associés à l'id.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Par défaut réponse à ThomasR
    il y a un bout de code inutile qui se balade dans une balise :

    class="quantite"<?php echo $article->get_Qte(); ?>"/>

    à remplacer par :

    class="quantite" />
    Effectivement cela été inutile, merci de me l'avoir fais remarqué!!

    Par contre, étant donné que tu as l'identifiant du produit en paramètres, je ne vois pas l'intérêt de lui passer ces valeurs car elles sont implicitement associés à l'id.
    Suis désolé mais je comprend pas trop ce que tu voulais dire par là??

    il te suffirait de modifier le constructeur de la classe commande().
    Je suis d'accord avec toi, je pense aussi que le problème vient d ela mais justement j'ai mit ce sujet sur le forum ca rje vois pas trop comment faire.

    Pourrais-tu m'aider s'il te plais??

    Cordialement!!

  4. #4
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Loic,

    est-ce que tu sais où se trouve le fichier qui contient la classe commande ?

    Si oui, pourrais-tu nous montrer le code de cette classe ?


    Par contre, étant donné que tu as l'identifiant du produit en paramètres, je ne vois pas l'intérêt de lui passer ces valeurs car elles sont implicitement associés à l'id.
    Suis désolé mais je comprend pas trop ce que tu voulais dire par là??
    En fait tu veux faire quoi exactement ?

    Car je pense que tu pourrais créer une méthode dans ta classe qui te retournerait la somme des produits des prix et de la quantité de chaque l'article (à laquelle tu multiplie la TVA si il te faut le TTC).

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Par défaut réponse à ThomasR
    est-ce que tu sais où se trouve le fichier qui contient la classe commande ?
    Oui heureusement que même que je sais ou je met les pages de mon site!!LOL.
    Voici son code :
    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
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    <?php
    class commande
    {
     
    	private $port=4;			 // Le port est une constante : 4 ¤ de frais de port pour chaque commande
    	private $Int_numligne; 			 // Le numero de la ligne de commande
    	private $Int_idCde;				 // Le numéro de la commande
    	private $Date_DateCde;			 // La date de la commande
    	private $Obj_client;			 // Objet client
    	private $Dec_montantHT;			// Le montant HT de la commande
    	private $Dec_montantTVA;      
    	private $Dec_montatTTC;
       	private $Col_lesLignesCommandes; // Collection de LigneCommande
     
    	// Le constructeur
    	public function commande( $leidCde=null, $leClient=null, $laDateCde=null, $LemontantHT=null, $LemontantTVA=null, $LemontantTTC=null)
    	{
    		$this->Int_numligne=1;
    		$this->Int_idCde=$leidCde;
    		$this->Date_DateCde = $laDateCde;
    		$this->Obj_client = $leClient;
    	  	$this->Col_lesLignesCommandes = new collection();
    		$this->Dec_montantHT = $LemontantHT;
    		$this->Dec_montantTVA = $LemontantTVA;
    		$this->Dec_montantTTC = $LemontantTTC;
    	}
     
    	// Les getteurs
    	public function get_idCde()
    	{
    		return $this->Int_idCde;
    	}
    	public function get_Date_Cde()
    	{
    		return $this->Date_DateCde;	
    	}
     	public function get_client()
       	{
          return $this->Obj_client;
       	}	
     	public function get_LesLignesCommandes()
       	{
          return $this->Col_lesLignesCommandes;
       	}
    	public function get_numligne()
       	{
          return $this->Int_numligne;
       	}
    	public function get_montantHT()
    	{
    		return $this->Dec_montantHT;
    	}
    	public function get_montantTVA()
    	{
    		return $this->Dec_montantTVA;
    	}
    	public function get_montantTTC()
    	{
    		return $this->Dec_montantTTC;
    	}
     
    	 // Les setteurs
    	public function set_idCde($leidCde)
    	{
    		$this->Int_idCde =$leidCde;
    	}
    	public function set_Date_Cde($laDateCde)
    	{
    		$this->Date_DateCde =$laDateCde;
    	}
    	public function set_client($leClient)
    	{
    		$this ->Obj_client =$leClient;
    	}
    	public function set_lesLignesCommandes($lesLignes)
    	{
    		$Col_lesLignesCommandes = $lesLignes;
    	}
    	public function set_numligne($Numligne)
    	{
    		$this->Int_numligne=$Numligne;
    	}
    	public function set_montantHT($LemontantHT)
    	{
    		$this->Dec_montantHT=$LemontantHT;
    	}
    	public function set_montantTVA($LemontantTVA)
    	{
    		$this->Dec_montantTVA=$LemontantTVA;
    	}
    	public function set_montantTTC($LemontantTTC)
    	{
    		$this->Dec_montantTTC=$LemontantTTC;
    	}
     
    	// Méthodes : afficher
    	public function Afficher() {
    		$ch=$this->get_idCde()." ".$this->get_Date_Cde()." ".$this->get_client()." ".$this->get_montantTotal()->Afficher();
    		return $ch;
    	}
     
    	// Méthodes : Ajouter une ligne de commande
    	public function AjouterLigneCommande($Article, $Qte) {
    		$ligneCde=new ligne_commande($this,$Article,$Qte,$this->numligne, $this->Dec_montantHT);
    		$this->set_numligne($this->numligne+1);
    		$this->Col_lesLignesCommandes->add($ligneCde);
    	}
     
    	// Méthodes : retourner les lignes de commandes
    	public function retournerLesLignes() {
    		//retourne tout les objets contenu dans ligne de commande
    		$tableau = $this->get_LesLignesCommandes()->getAll();
    		return $tableau;
    	}
     
    	// Méthodes : retourner le nombre de ligne de commande
    	public function retournerNombreLignes() {
    		//retourne le nombre de ligne de commande
    		$tableau = $this->get_lesLignesCommandes()->getAll();
    		return count($tableau);	//on utilise la fonction count
    	}
     
    	// Méthodes : retourne la TVA
    	public function retourneTVA(){
    		$TauxVA=$this->retournePrixTotalTTC()-$this->retournePrixTotalHT();
    		return $TauxVA;
    	}
     
    	// Méthodes : retourner le frais de port
    	public function retourneFraisPort(){
    		$FraisPort=$this->port;
    		return $FraisPort;
    	}
     
    	// Méthodes : retourner le prix total Toute taxe comprise
    	public function retournePrixTotalTTC(){
    		$tableau=$this->retournerLesLignes();	
    		$résultat=0;
    		foreach($tableau as $o) {
    			$résultat=$résultat + $o->get_Article()->get_prixHT() * $o->get_Qte();
    		}
    		return $résultat;
    	}
     
    	// Méthodes : retourner le prix total hors taxe
    	public function retournePrixTotalHT(){
    		$PrixTTC=$this->retournePrixTotalTTC();
    		$PrixHT=$PrixTTC/1.196;
    		return $PrixHT;
    	}
     
    	// Méthodes : retourner le prix total à payer
    	public function retournePrixTotalAPayer(){
    		$PrixTTC=$this->retournePrixTotalTTC();
    		$résultat=$PrixTTC + $this->port;
    		return $résultat;
    	}
    }
    ?>
    En fait tu veux faire quoi exactement ?
    Ben en faite je souhaite réaliser l'enregistrement de la commande d'un client.

    Cordialement

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Par défaut
    Car je pense que tu pourrais créer une méthode dans ta classe qui te retournerait la somme des produits des prix et de la quantité de chaque l'article (à laquelle tu multiplie la TVA si il te faut le TTC).
    Comme vous pouvez le constater dans ma classe, j'ai déja des méthodes permettant de calculer les différents prix dont j'ai besoins.

    Je souhaiterais savoir comment je peux faire pour appeler les méthodes de la classe commande?? Car ce qui me bloque c'est que dans mon contrôles "C_Accepter_Commande" je n'est pas tout les renseignements qui me permettent d'appeler une instance de cette classe donc comment feriez-vous??

    Merci d'avance!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/06/2008, 10h22
  2. Récupérer les éléments en ligne de commandes
    Par wassimb dans le forum C++
    Réponses: 4
    Dernier message: 25/06/2008, 18h55
  3. Récupérer les différentes années sur un format date
    Par Spaccio dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/04/2008, 13h04
  4. Récupérer les différents éléments Internet et Mail
    Par mdriesbach dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 31/10/2005, 13h43
  5. Récupérer les différentes températures de mon PC
    Par bronco dans le forum Assembleur
    Réponses: 2
    Dernier message: 29/07/2005, 09h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo