pb écriture php

Petit nouveau ! | 1 Messages

27 août 2006, 18:15

Bonjour, je suis débutant et j'ai récupéré ces lignes de codes
77   class Commande {
78	  var $PrixRoyal = 6;
79	  var $PrixCampagnarde = 8;
80	  var $nomClient;
81	  var $listePizzas;
82	  	function ajouterRoyale($nombre) {
  		$this->listePizzas[0] += $nombre;[/color]
		}
	  	function ajouterCampagnarde($nombre) {
	  		$this->listePizzas[1] +=$nombre;
		}
	  	function CalculerPrix() {
		$montant_Royale=$this->listePizzas[0]* $this->prixRoyal;
		$montant_Campagnarde=$this->listepizzas[1]*$this->prixcampagnarde;
	  	return $montant_royale+$montant_campagnarde;
		}
		function Affichercommande() {
		echo "Commande du client : ".$this->nomclient;
		echo "<BR>Pizzas(s) 'royale' : ".$this->listepizzas[0];
		echo "<BR>Pizzas(s) 'campagnarde(s)' : ".$this->listepizzas[1];
		echo "<HR>Total de votre commande : ".$this->calculerprix();
		echo " euros<BR>";
		}
}
$client1=new Commande();
$client1->nomClient="PHPDébutant";
$client1->ajouterroyale(5); //disons que 0 est le code pour "Pizza royale", j'en veux 5
$client1->ajoutercampagnarde(2);
$client1->affichercommande();
$client2=new commande();
$client2->nomClient="Anne";
$client2->ajouterroyale(1); //je veux deux campagnardes (n°1)
$client2->affichercommande();
?>
Malheureusement, j'ai les messages d'erreur suivants (entre autres):

Code : Tout sélectionner

g:\site_php\prog_objet\pizza1.php on line 83 Notice: Undefined offset: 1 in g:\site_php\prog_objet\pizza1.php on line 86 Notice: Undefined property: nomclient in g:\site_php\prog_objet\pizza1.php on line 94 Commande du client : Notice: Undefined property: listepizzas in g:\site_php\prog_objet\pizza1.php on line 95 Pizzas(s) 'royale' : Notice: Undefined property: listepizzas in g:\site_php\prog_objet\pizza1.php on line 96 Pizzas(s) 'campagnarde(s)' : Notice: Undefined property: prixRoyal in g:\site_php\prog_objet\pizza1.php on line 89 Notice: Undefined property: listepizzas in g:\site_php\prog_objet\pizza1.php on line 90 Notice: Undefined property: prixcampagnarde in g:\site_php\prog_objet\pizza1.php on line 90 Notice: Undefined variable: montant_royale in g:\site_php\prog_objet\pizza1.php on line 91 Notice: Undefined variable: montant_campagnarde in g:\site_php\prog_objet\pizza1.php on line 91
Pourriez-vous m'aider ?
merci

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

27 août 2006, 18:32

Salut,

m'est avis que l'erreur vient de cette ligne :
var $listePizzas; 
Tu ne précises pas que cette varaible est un tableau et, pire, tu n'initialise pas les case 0 et 1.

Donc la 1ere fois que tu executes ce code :
function ajouterRoyale($nombre) {
          $this->listePizzas[0] += $nombre;[/color]
 } 
PHP ne sait pas ce que contient $this->listePizzas[0];
Ce qui me confirme dans cette idée, c'est que toutes les erreurs sont liées à cette variable.

Tu pourrais donc ajouter un contructeur à ta méthode pour initialiser ce tableau.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 19672 Messages

27 août 2006, 19:14

Attentions aux majuscules/minuscules quand tu définis une variable ou une fonction. Corrigé fonctionnel :
<?php
class Commande 
{
    var $PrixRoyal = 6;
    var $PrixCampagnarde = 8;
    var $nomClient;
    var $listePizzas;
    
    function ajouterRoyale($nombre)
    {
        $this->listePizzas[0] += $nombre;
    }
    function ajouterCampagnarde($nombre)
    {
        $this->listePizzas[1] += $nombre;
    }
    function CalculerPrix()
    {
        $montant_Royale = $this->listePizzas[0] * $this->PrixRoyal;
        $montant_Campagnarde = $this->listepizzas[1] * $this->PrixCampagnarde;
        $total = $montant_Royale + $montant_Campagnarde;
        return $total;
    }
    function Affichercommande()
    {
        $nb_royales = (isset($this->listePizzas[0])) ? $this->listePizzas[0] : "0";
        $nb_campagnardes = (isset($this->listePizzas[1])) ? $this->listePizzas[1] : "0";
        echo "Commande du client : ". $this->nomclient;
        echo "<BR>Pizzas(s) 'royale' : ". $nb_royales;
        echo "<BR>Pizzas(s) 'campagnarde(s)' : ". $nb_campagnardes;
        echo "<HR>Total de votre commande : ". $this->CalculerPrix();
        echo " euros<BR><HR>";
    }
}

$client1=new Commande();
$client1->nomClient="PHPDébutant";
$client1->ajouterRoyale(5); //disons que 0 est le code pour "Pizza royale", j'en veux 5
$client1->ajouterCampagnarde(2);
$client1->Affichercommande();
$client2=new Commande();
$client2->nomClient="Anne";
$client2->ajouterRoyale(1); //je veux deux campagnardes (n°1)
$client2->Affichercommande();
?>
Je te laisse le soin d'analyser.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 991 Messages

28 août 2006, 15:46

RRRRRRrrrrRRRRR quand je donne un code tout fait je me fait engueler
(zeus te sent pas viser ....:axe: ) et Cyrano le donne tout cuit et onlui dit rien ... c'est injuste snif je vais pleurer dans mon coin puisque c'est ca . :cry: :cry:
DevOps, Symfony4, Hoa

Mammouth du PHP | 19672 Messages

28 août 2006, 15:53

C'est l'avantage qu'on a d'être une vedette :langue:

Blague à part, c'est vrai que ce n'est pas forcément approprié de mettre un code tout fait, reste quand même que ce n'est pas forcément non plus un avantage pour le posteur qui devra peut-être bien analyser un peu avant utilisation.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: