Notice: Undefined offset d'une fonction dans une classe - PHP - Programmation
Marsh Posté le 08-10-2006 à 22:55:01
Truc tout con mais que les débutants en php ne jugent pas toujours utile de faire : initialise tes variables. En l'occurence, définit ton $listePizzas comme un tableau et initialise $listePizzas[0] et [1] à 0, dans le constructeur par exemple.
C'est pas grand chose, mais ça a au moins un peu plus de sens que $this->listePizzas[0] += $nombre sans qu'on sache ce que vaut le tableau au départ
Marsh Posté le 09-10-2006 à 12:15:54
Code :
|
Marsh Posté le 09-10-2006 à 12:20:57
pourquoi tu en profites pas pour faire un objet pizza ( au moins deux propriétés 'nom' et 'prix') et du coup tu n'aurais plus qu'une méthode dans commande 'addPizza', et tu stockes ta commandes dans un tableau associatif 'NomPizza'=>Nb elements commandés.
Marsh Posté le 09-10-2006 à 12:38:03
Sans aller jusqu'à l'objet Pizza.
Imaginons une classe Commande qui fonctionne comme ça:
Code :
|
Avec un tableau associatif pour stocker la liste.
Marsh Posté le 09-10-2006 à 17:31:27
lol, merci de vos conseils, mais ce n'est pas tout à fait ce que je veux.
Ce code est tiré d'un tuto (phpdebutant). Afin de mieux cerné la chose, il nous montre des exemples simples de classe pour montrer son efficacité.
Je ne suis qu'a ce stade la.
Mon probleme viens plutot de la variable $nombre dans mes fonctions qui déconne, je ne vois pas pourquoi je doit les déclaré sanchant que rien ne ressort de celui ci
En tout cas je prend quand meme bonne note de vos conseils
Marsh Posté le 09-10-2006 à 17:41:20
je peux esquivé cette erreur en modifiant le php.ini
error_reporting = E_ALL & ~E_NOTICE
mais ça fait un peu crado, ya pas une solution svp ?
Marsh Posté le 09-10-2006 à 17:49:46
naceroth te l'a déjà déjà donné hier ta solution. Il a d'ailleur été le premier à te répondre.
C'est quand même pas sorcié de faire un "$listePizzas = array (0 => 0, 1=> 0);" ou de faire une fonction d'initialisation des variables de l'objet.
Marsh Posté le 09-10-2006 à 18:00:50
A merde, je n'avais pas calculé ce qu'il voulais dire, j'était persuader qui plantais sur la variable $nombre d'ou mon erreur.
Merci
Marsh Posté le 08-10-2006 à 22:42:13
Bonsoir,
Voila, je me lance dans les classes php pour paraitre moins bete, mais malheureusement il me viens une erreur.
voici un code copier sur un site bien connu pour voir si j'obtiens bien la meme chose.
<?php
class Commande {
var $prixRoyale = 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->prixRoyale;
$montant_Campagnarde = $this->listePizzas[1] * $this->prixCampagnarde;
return $montant_Royale + $montant_Campagnarde;
}
function afficherCommande() {
echo "Commande du client : ".$this->nomClient;
echo "<BR>Pizza(s) 'Royale' : ".$this->listePizzas[0];
echo "<BR>Pizza(s) 'Campagnarde' : ".$this->listePizzas[1];
echo "<HR>Totale de votre commande : ".$this->calculerPrix();
echo " Euros<BR>";
}
}
$client1 = new Commande();
$client1->nomClient="PHPDebutant";
$client1->ajouterRoyale(5);
$client1->ajouterCampagnarde(2);
$client1->afficherCommande();
?>
J' obtient cette erreur ci
Notice: Undefined offset: 0 in d:\softwares\program files\easyphp1-8\www\template\index.php on line 11
Notice: Undefined offset: 1 in d:\softwares\program files\easyphp1-8\www\template\index.php on line 15
Je ne vois pas pourquoi il me génère une erreur sur ces 2 fonctions pourtant simplistes.
merci ps=> je fonctionne sous easyphp 8, sous mon ftp de chez Free, aucune erreur annoncé
Message édité par Badze le 08-10-2006 à 22:47:36