Erreur d'affichage de tableau

Messages postés
20
Date d'inscription
vendredi 15 mai 2015
Statut
Membre
Dernière intervention
22 décembre 2015
-
Bonjour,
Je voudrais une aide de votre part.je ne comprends plus rien dans ce code car il fonctionnait bien quand soudain, il a arrêté d'afficher la réponse alors voici le code si vous pouvez apporter votre part.

message d'erreur:
Fatal error: Call to a member function getdesignation() on a non-object in C:\wamp\www\cnps\models\liste_business.php on line 84
Call Stack


<?php

// classe de mon objet

class Statistique{

   private $designation;
   private $nbaffaire;
   private $annee;

  //constructeurs
   function __construct($designation,$nbaffaire,$annee){
            $this->designation=$designation;
            $this->nbaffaire=$nbaffaire;
            $this->annee=$annee;
          }

   // ******** Setters pemettent d'assigner des valeurs aux attributs *******//
    public function setdesignation($designation){
            $this->designation=$designation;
          }

   // ******* getters pemettent de recuperer les valeurs des attributs *******//
    public function getdesignation(){

             return $this->designation;
          }

    public function setnbaffaire($nbaffaire){

           $this->nbaffaire=$nbaffaire;              
          }

    public function getnbaffaire(){

              return $this->nbaffaire;
           }


    public function getannee(){

              return $this->annee;
            }
          }

$bdd = new PDO('mysql:host=localhost;dbname=gestionalertes','root','****');

          $sql = 'SELECT designation,nbaffaire,annee FROM taches ORDER BY annee'; // je récupere dans ma base de données

          $req = $bdd->query($sql);

            while($donnees = $req->fetch() > 0) 
                  { // je met les infos dans un tableau
                   $designation = $donnees['designation'];
                   $nbaffaire = $donnees['nbaffaire'];
                   $annee = $donnees['annee'];

                   $busi[]='';
                   $art = new Statistique($designation, $nbaffaire,$annee);
                   $busi[] = $art;
                    } 
?>

<div style="background:#0066FF; bgcolor:#FFC042; color:#99FFCC; border-radius:15px 15px 0 0 ; border: 1px solid; width: 500px;">
<span style="text-decoration: blink">   
<strong><em>LISTE BUSINESS</em></strong>
</span>
</div>
<div style="bgcolor:#FFC042; border: 0.7px solid; width: 500px;">
<table border="0" width="100%" align="left">
<tr bgcolor="#4AE92B">
<th>DESIGNATION</th>
<th>NBRE AFFAIRE</th>
<th>ANNEE</th>
</tr>

 <?php
        foreach($busi as $stat)
{ ?> 
  <tr>
     <td><?php echo $stat->getdesignation().'<br/>';?></td>
     <td><?php echo $stat->getnbaffaire().'<br/>';?></td>
     <td><?php echo $stat->getannee().'<br/>';?></td>
     <tr>
<?php
 }
?>
</table>
</div>



Aidez moi

EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
Afficher la suite 

2 réponses

Messages postés
25762
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 juin 2019
312
0
Merci
Bonjour,
C'est à cause de cette ligne :
 $busi[]='';

.... tu l'initialises avec un string '' .... ce n'est donc pas un objet... et il n'existe donc aucune fonction qui y soit rattachée....


Modifies ton code ainsi:
      $sql = "SELECT designation,nbaffaire,annee 
                FROM taches 
                ORDER BY annee"; // je récupere dans ma base de données

      $req = $bdd->query($sql);
      
      $busi=array(); //initialisation de la variable busi
      while($donnees = $req->fetch() > 0)  { // je met les infos dans un tableau
          $designation = $donnees['designation'];
          $nbaffaire = $donnees['nbaffaire'];
          $annee = $donnees['annee'];

          $art = new Statistique($designation, $nbaffaire,$annee);
          $busi[] = $art;
       } 



Commenter la réponse de jordane45
Messages postés
20
Date d'inscription
vendredi 15 mai 2015
Statut
Membre
Dernière intervention
22 décembre 2015
0
Merci
plus d'erreur, le tableau s'affiche mais sans les données de la base.

<?php

// classe de mon objet
class Statistique{

private $designation;
private $nbaffaire;
private $annee;

//constructeurs
function __construct($designation,$nbaffaire,$annee){
$this->designation=$designation;
$this->nbaffaire=$nbaffaire;
$this->annee=$annee;
}

// ******** Setters pemettent d'assigner des valeurs aux attributs *******//
public function setdesignation($designation){
$this->designation=$designation;
}

// ******* getters pemettent de recuperer les valeurs des attributs *******//
public function getdesignation(){

return $this->designation;
}

public function setnbaffaire($nbaffaire){

$this->nbaffaire=$nbaffaire;
}

public function getnbaffaire(){

return $this->nbaffaire;
}


public function getannee(){

return $this->annee;
}
}

$bdd = new PDO('mysql:host=localhost;dbname=gestionalertes','root','Geth@lex/007');

/* $sql = 'SELECT designation,nbaffaire,annee
FROM taches ORDER BY annee'; // je récupere dans ma base de données

$req = $bdd->query($sql);

$busi = array();
while($donnees = $req->fetch() > 0)
{ // je met les infos dans un tableau
$designation = $donnees['designation'];
$nbaffaire = $donnees['nbaffaire'];
$annee = $donnees['annee'];

$art = new Statistique($designation, $nbaffaire,$annee);
$busi= $art;
} */

$sql = "SELECT designation,nbaffaire,annee
FROM taches
ORDER BY annee"; // je récupere dans ma base de données

$req = $bdd->query($sql);

$busi=array(); //initialisation de la variable busi
while($donnees = $req->fetch() > 0) { // je met les infos dans un tableau
$designation = $donnees['designation'];
$nbaffaire = $donnees['nbaffaire'];
$annee = $donnees['annee'];

$art = new Statistique($designation, $nbaffaire,$annee);
$busi[] = $art;
}


?>
Commenter la réponse de AlexMarie007