Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1125 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Petit tuto sur les class

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Petit tuto sur les class

n°1461747
nycius
Ich liebe dich !
Posté le 20-10-2006 à 23:37:25  profilanswer
 

Hello  :hello: ,
 
Je me suis fait un petit tuto pour bien apprendre la gestion des class.
 
Jme suis créer un ptit truc pour commander des voitures doccaz.
 
Seulement j'ai un soucis , je n'arrive pas a afficher le montant total de la commande, comment reprendre dynamiquement et pas a la main le total de chaque commande de voiture ?
 

Code :
  1. class vehicule_occasion {
  2.   var $modele;
  3.   var $annee;
  4.   var $voiture;
  5.  
  6.  
  7.   function ajouter($id_voiture,$nombre)
  8.   {
  9.    $this->voiture[$id_voiture] += $nombre;
  10.   }
  11.  
  12.   function calculerPrix($id_voiture)
  13.   {
  14.     $montant = $this->voiture[$id_voiture] * $this->prix[$id_voiture];
  15.     return $montant;
  16.   }
  17.  
  18.   function calculerPrixFinal($total)
  19.   {
  20.     $montant = $this->calculerPrix(0)+$this->calculerPrix(1);
  21.     return $montant;
  22.   }
  23.  
  24.   function afficherCommande($total)
  25.   {
  26.     for($i=0;$i<$total;$i++)
  27.     {
  28.       echo "Voiture : ".$this->modele[$i];
  29.       echo "<br>Voiture : ".$this->annee[$i];
  30.       echo "<br>Nombre commandé : ".$this->voiture[$i];
  31.       echo "<br>Montant Commande : ".$this->calculerPrix($i)." Euros";
  32.       echo "<hr>";
  33.     }
  34.        
  35.         echo "Totale de votre commande : ".$this->calculerPrixFinal($total);   
  36.         echo " Euros<BR>";
  37.   }
  38.    
  39. }
  40. $vehicule = new vehicule_occasion();
  41. $vehicule->modele[0]="Peugeot 405 GRD";
  42. $vehicule->annee[0]="1982";
  43. $vehicule->prix[0]=4890;
  44. $vehicule->ajouter(0,4);
  45. $vehicule->modele[1]="Peugeot 205 GTi";
  46. $vehicule->annee[1]="1988";
  47. $vehicule->prix[1]=3456;
  48. $vehicule->ajouter(1,1);
  49. $nombre_produit = 2;
  50. $vehicule->afficherCommande($nombre_produit);

mood
Publicité
Posté le 20-10-2006 à 23:37:25  profilanswer
 

n°1461775
Alisteroid
Posté le 21-10-2006 à 00:22:28  profilanswer
 

Code :
  1. function afficherCommande($total)
  2.   {
  3.     for($i=0;$i<$total;$i++)
  4.     {
  5.       echo "Voiture : ".$this->modele[$i];
  6.       echo "<br>Voiture : ".$this->annee[$i];
  7.       echo "<br>Nombre commandé : ".$this->voiture[$i];
  8.       echo "<br>Montant Commande : ".$this->calculerPrix($i)." Euros";
  9.       $montant_total += $this->calculerPrix($i)
  10.       echo "<hr>";
  11.     }
  12.        
  13.         echo "Totale de votre commande : ".$montant_total;   
  14.         echo " Euros<BR>";
  15.   }
  16.    
  17. }


Voila la solution la plus simple et dynamique


Message édité par Alisteroid le 21-10-2006 à 00:28:46
n°1461778
Alisteroid
Posté le 21-10-2006 à 00:28:27  profilanswer
 

Code :
  1. function calculerPrix($id_voiture)
  2.   {
  3.     $montant = $this->voiture[$id_voiture] * $this->prix[$id_voiture];
  4.     calculerPrixFinal($montant);
  5.     return $montant;
  6.   }
  7.  
  8.   function calculerPrixFinal($montant=null)
  9.   {
  10.     if ($montant !=null)           
  11.         $montant_total += $montant;
  12.     else return $montant_total;
  13.   }
  14.  
  15.   function afficherCommande($total)
  16.   {
  17.     for($i=0;$i<$total;$i++)
  18.     {
  19.       echo "Voiture : ".$this->modele[$i];
  20.       echo "<br>Voiture : ".$this->annee[$i];
  21.       echo "<br>Nombre commandé : ".$this->voiture[$i];
  22.       echo "<br>Montant Commande : ".$this->calculerPrix($i)." Euros";
  23.       echo "<hr>";
  24.     }
  25.        
  26.         echo "Totale de votre commande : ".$this->calculerPrixFinal();   
  27.         echo " Euros<BR>";
  28.   }
  29.    
  30. }


autre solution :D
Je débute aussi en objets php :D


Message édité par Alisteroid le 21-10-2006 à 00:30:23
n°1461840
nycius
Ich liebe dich !
Posté le 21-10-2006 à 11:41:02  profilanswer
 

sebondus > Merci beaucoup :)

n°1461843
Alisteroid
Posté le 21-10-2006 à 11:47:49  profilanswer
 

De rien ;)

n°1465864
nycius
Ich liebe dich !
Posté le 27-10-2006 à 09:49:00  profilanswer
 

Bon j'en ai refais un pour faire un systeme simple de calcul de chiffres seulement ca ne fonctionne pas, le total des 2 chiffres n'apparait pas.
 
Si qqun a une solution et meme des bons tutoriaux sur les classes  :whistle:  
 

Code :
  1. <?
  2. class Chiffre {
  3.     function calculerTOTAL($nombre=null)
  4.      {
  5.         if ($nombre!=null)           
  6.           $total += $nombre;
  7.         else
  8.           return $total;
  9.      }
  10.    
  11.      function ajouter($nombre) {
  12.         $this->nombreTo[$nombre] += $nombre;
  13.         $chif = $this->nombreTo[$nombre];
  14.         calculerTOTAL($chif);
  15.     }
  16.    
  17.     function view() {
  18.         echo count($this->nombreTo).' chiffres<br>';
  19.         echo $this->calculerTOTAL();
  20.     }
  21. }
  22. $calcul = new Chiffre(); 
  23. $calcul->ajouter(584);
  24. $calcul->ajouter(24424);
  25. $calcul->view();
  26. ?>

n°1465867
anapajari
s/travail/glanding on hfr/gs;
Posté le 27-10-2006 à 09:52:02  profilanswer
 

bin $total est une variable locale à la fonction calculerTOTAL, fonction qui de surcroit ne retourne rien si $nombre n'est pas null ou retourne null si $nombre est null.
Donc à quoi t'attends-tu exactement?

n°1465881
nycius
Ich liebe dich !
Posté le 27-10-2006 à 10:01:21  profilanswer
 

J'aimerai incrémenter le nombre pour chaque ajout pour ensuite derriere afficher le total
 
 
Tu ferais comment ?

n°1465884
Berceker U​nited
PSN : berceker_united
Posté le 27-10-2006 à 10:06:11  profilanswer
 

Je crois qu'il y a un truc qui ne va pas lorsque tu appelle ta classe. Ta classe telle que tu l'a défini gére qu'un véhicule et non pas un ensemble donc si tu as deux voiture doit faire ceci.

Code :
  1. $Vehicule = array();
  2. $Vehicule[0] = new MaClasse()
  3. $Vehicule[0]->Modele = '....';
  4. ...
  5. $Vehicule[1] = new MaClasse()
  6. $Vehicule[1]->Modele = '....';
  7. ...


 
 


Message édité par Berceker United le 27-10-2006 à 10:08:19
n°1465887
nycius
Ich liebe dich !
Posté le 27-10-2006 à 10:10:38  profilanswer
 

berceker u nited > ma class sur les voitures marche sans soucis

Message cité 1 fois
Message édité par nycius le 27-10-2006 à 10:10:54
mood
Publicité
Posté le 27-10-2006 à 10:10:38  profilanswer
 

n°1465959
anapajari
s/travail/glanding on hfr/gs;
Posté le 27-10-2006 à 10:57:49  profilanswer
 

nycius a écrit :

J'aimerai incrémenter le nombre pour chaque ajout pour ensuite derriere afficher le total
Tu ferais comment ?


Pour commencer, apprendre "l'objet" en php4 c'est comme apprendre à planter des clous avec une agrapheuse, c'est pas la meilleure façon ... Je te conseillerais d'au moins faire ça en php5!
Ensuite ta classe est mal nommée, il ne s'agit pas d'un chiffre mais d'un nombre. De surcroît tu ne lui a déclaré aucun attribut c'est n'importe quoi. Donc refaite en php5, ça donnerait quelque chose dans le genre:

Code :
  1. class Nombre {
  2.   private $valeur;
  3.   function __construct( $nb=0){
  4.     $this->valeur = $nb;
  5.   }
  6.   public function ajouter( $nb){
  7.     if ( is_int($nb) ){
  8.       $this->valeur += $nb;
  9.     } else if (is_object($nb) && get_class($nb)=='Nombre'){
  10.       $this->valeur += $nb->valeur;
  11.     }
  12.   }
  13.   function __toString(){
  14.     return (string)$this->valeur;
  15.   }
  16. }


 

nycius a écrit :

berceker u nited > ma class sur les voitures marche sans soucis


c'est pas parce qu'elle "marche" qu'elle est logique et/ou correctement implémentée hein :/

Message cité 1 fois
Message édité par anapajari le 27-10-2006 à 10:58:37
n°1465981
Berceker U​nited
PSN : berceker_united
Posté le 27-10-2006 à 11:20:15  profilanswer
 

anapajari a écrit :


[...]
c'est pas parce qu'elle "marche" qu'elle est logique et/ou correctement implémentée hein :/


 
Merci  :jap:.
 
Un classe n'est pas un "sac à fonction" ou boite à outils. Avant de coder il faut que tu comprennes ce que c'est la notion objet et être sur d'avoir bien compris au risque de se retrouver avec quelque chose d'ingérable donc autant rester sur du procédurale. C'est pas une critique insultante que je fais je parle par expérience car je suis passé par là. L'objet c'est pas du code, c'est pas une façon de développé c'est purement une vue d'esprit qui peut être compréhensible pour un non developpeur. Un boucher, charcutier, prostituer peuvent être capable de comprendre la logique.  
Voila, bon courage Nycius car c'est en étant face au problème que tu apprendras et comprendra.


Message édité par Berceker United le 27-10-2006 à 11:20:49
n°1465990
nycius
Ich liebe dich !
Posté le 27-10-2006 à 11:26:57  profilanswer
 

berceker u nited > Exact, je veux apprendre l'objet donc je me fais des tutos comme ceux la.
Si tu as un bon site de tuto/exemple/methodo sur les class en php4/5 je suis preneur

n°1466028
Berceker U​nited
PSN : berceker_united
Posté le 27-10-2006 à 12:13:09  profilanswer
 

Ben nous pouvons déjà commencer par se que souhaite faire.  
Première avant de parler de code il faut analyser le scénario. Tu veux gérer les commandes de voiture d'occasion. Dé là, tu peux isoler des mots clés. Voiture et Commande.  
Maintenant seul toi peux répondre à ces questions :
- Comment tu identifies, caractérise un véhicule.
- Idem pour la commande


Message édité par Berceker United le 27-10-2006 à 12:13:24

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Petit tuto sur les class

 

Sujets relatifs
Class et MVCComment inserer un petit moteur de recherche ?
Fonction vs Classcherche un petit editeur de html dans une zone de saisie
[Résolu] un tuto flash pour débuter ?petit scipt pour se connecter a ma messagerie orange
Petit soucis avec strcat[MySQL/PHP] Petit soucis de renommage de fichiers proposés en download
tuto Visual Basic 
Plus de sujets relatifs à : Petit tuto sur les class


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR