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

  FORUM HardWare.fr
  Programmation
  PHP

  Notice: Undefined offset d'une fonction dans une classe

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Notice: Undefined offset d'une fonction dans une classe

n°1454012
Badze
Aime les frites
Posté le 08-10-2006 à 22:42:13  profilanswer
 

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
mood
Publicité
Posté le 08-10-2006 à 22:42:13  profilanswer
 

n°1454013
naceroth
Posté le 08-10-2006 à 22:55:01  profilanswer
 

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 :)

n°1454199
Chaos Inte​stinal
Posté le 09-10-2006 à 12:15:54  profilanswer
 

Code :
  1. <?
  2. class Commande {
  3. /* ... */
  4. function Commande() {
  5.  $this->listePizzas = array(0 => 0, 1 => 0);
  6. }
  7. /* ... */
  8. }
  9. ?>

n°1454205
anapajari
s/travail/glanding on hfr/gs;
Posté le 09-10-2006 à 12:20:57  profilanswer
 

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.

n°1454213
Chaos Inte​stinal
Posté le 09-10-2006 à 12:38:03  profilanswer
 

Sans aller jusqu'à l'objet Pizza.
 
Imaginons une classe Commande qui fonctionne comme ça:

Code :
  1. $commande->addPizza("Royale", 5);
  2. $commande->addPizza("Campagnarde", 2);


 
Avec un tableau associatif pour stocker la liste.

n°1454507
Badze
Aime les frites
Posté le 09-10-2006 à 17:31:27  profilanswer
 

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

n°1454509
Badze
Aime les frites
Posté le 09-10-2006 à 17:41:20  profilanswer
 

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 ?

n°1454512
omega2
Posté le 09-10-2006 à 17:49:46  profilanswer
 

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.

n°1454518
Badze
Aime les frites
Posté le 09-10-2006 à 18:00:50  profilanswer
 

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


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

  Notice: Undefined offset d'une fonction dans une classe

 

Sujets relatifs
help sur une fonctionUtiliser xml_set_element_handler() avec des méthodes d'une classe
aide OpenOffice.org utiliser la fonction "RECHERCHEV"fonction qui n'accepte que certains caracteres dans une chaine
Fonction php --> javascriptFonction excel sous macro VBA
Scale en fonction de StageProbleme Fonction Porte avec MATLAB
Aide sur fonction Delai 
Plus de sujets relatifs à : Notice: Undefined offset d'une fonction dans une classe


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