Requète PHP

Résolu
papyclic Messages postés 451 Statut Membre -  
papyclic Messages postés 451 Statut Membre -
Bonjour,
J'ai créé une requète afin d'afficher la liste des membres, bien sur mon problème c'est que rien ne s'affiche ça aurai été trop beau.
Pouvez-vous m'expliquer d'ou peux venir mon soucie s'ils vous plait.
Merci beaucoup de pouvoir m'aider un peu.
Voici ma class
<?php
class Liste_membre_class {

    private $nom;
    private $prenom; 
    private $email;
    private $fixe;
    private $mobile;

 private $bdd;
 
 public function __construct($nom, $prenom, $email, $fixe, $mobile) {

  $this->nom       = $nom;
  $this->prenom      = $prenom;
  $this->email      = $email;
  $this->fixe       = $fixe;
  $this->mobile  = $mobile;
  
  $this->bdd    = bdd();
 }
 
    public static function ListeMembre() {
        $sql = "SELECT * FROM tb_adherent ORDER BY nom, prenom ASC";
  $requete = $this->bdd->prepare($sql);
        $requete->execute();
        $nombre_membre = ($requete->rowCount() > 0) ? $requete->rowCount() . ' Membres' : '0 membre';
        echo '<ul>';
        echo '<li style="margin-left:950px; background-color: #FFFFFF;">'.$nombre_membre.'</li>';
        echo '</ul>';
    
        while($donnees = $requete -> fetchObject('Liste_membre_class')) {
            echo '<tr>';
            echo '<td>'.$donnees->nom.'</td>';
            echo '<td>'.$donnees->prenom.'</td>';
            echo '<td>'.$donnees->email.'</td>';
            $tel1 = $donnees->fixe; $tel1 = wordwrap ($tel1, 2, ' ', 1);
            echo '<td>'.$tel1.'</td>';
            $tel2 = $donnees->mobile; $tel2 = wordwrap ($tel2, 2, ' ', 1);
            echo '<td>'.$tel2.'</td>';
            echo '</tr>';
        }
    }
}

ma page qui est censée afficher la liste des membres
<br/>

 <div id="ListeMembre">
  <table cellpadding="0" cellspacing="1">
   <tr>
    <th width="15%">Nom</th>
    <th width="15%">Prénom</th>
    <th width="36%">Email</th>
    <th width="17%">Téléphone Fixe</th>
    <th width="17%">Téléphone Mobile</th>
   </tr>
<?php
$Liste_membre = new Liste_membre_class($nom, $prenom, $email, $fixe, $mobile);
$Liste_membre->ListeMembre();
?>
  </table>
 </div>

9 réponses

  1. papyclic Messages postés 451 Statut Membre 3
     
    Bonjour
    Ca y est voilà ce que j'ai fait et ça fonctionne
    <?php
    class Liste_membre_class {
    
        private $nom;
        private $prenom;	
        private $email;
        private $fixe;
        private $mobile;
    
    	private $bdd;
    	
    	public function __construct() {
    		
    		$this->nom		= isset($_POST['nom']) ? Security::clean($_POST['nom']) : '';
    		$this->prenom	= isset($_POST['prenom']) ? Security::clean($_POST['prenom']) : '';
    		$this->email     = isset($_POST['email']) ? Security::clean($_POST['email']) : '';
    		$this->fixe		= isset($_POST['fixe']) ? Security::clean($_POST['fixe']) : '';
    		$this->mobile	= isset($_POST['mobile']) ? Security::clean($_POST['mobile']) : '';
    		
    		$this->bdd 			= bdd();
    	}
    

    Merci à vous tous.
    Cordialement
    2
    1. papyclic Messages postés 451 Statut Membre 3
       
      mince j'ai oublié l'autre methode
          public function ListeMembre() {
              $sql = "SELECT * FROM tb_adherent ORDER BY nom, prenom ASC";
      		$requete = $this->bdd->prepare($sql);
              $requete->execute();
              $nombre_membre = ($requete->rowCount() > 0) ? $requete->rowCount() . ' Membres' : '0 membre';
              echo '<ul>';
              echo '<li style="margin-left:950px; background-color: #FFFFFF;">'.$nombre_membre.'</li>';
              echo '</ul>';
          
              while($donnees = $requete->fetchObject()) {
                  echo '<tr>';
                  echo '<td>'.$donnees->nom.'</td>';
                  echo '<td>'.$donnees->prenom.'</td>';
                  echo '<td>'.$donnees->email.'</td>';
                  $tel1 = $donnees->fixe; $tel1 = wordwrap ($tel1, 2, ' ', 1);
                  echo '<td>'.$tel1.'</td>';
                  $tel2 = $donnees->mobile; $tel2 = wordwrap ($tel2, 2, ' ', 1);
                  echo '<td>'.$tel2.'</td>';
                  echo '</tr>';
              }
          }
      
      0
  2. Utilisateur anonyme
     
    Bonjour

    La prochaine fois, donne le message d'erreur complet, en particulier le numéro de ligne qui permet de savoir où se trouve l'erreur.

    Tu as utilisé $this dans une méthode statique, ce qui est interdit. En effet, $this désigne l'instance d'objet courante, et le mot-clé static signifie justement qu'une méthode peut être appelée sans qu'aucun objet ne soit instancié : c'est une méthode de la classe, pas des objets de cette classe.
    Voir la doc : https://www.php.net/manual/fr/language.oop5.static.php
    En fait, c'est ta méthode ListeMembre qui n'a pas de raison d'être statique.
    1
  3. papyclic Messages postés 451 Statut Membre 3
     
    Bonjour

    Mon erreur est...

    Fatal error: Using $this when not in object context in C

    Je crois comprendre que j'utilise $this en dehors d'un objet ??
    Je n'arrive vraiment pas à résoudre mon soucis.
    Ayez pitié d'un débutant
    Merci vraiment de votre aide.
    0
  4. papyclic Messages postés 451 Statut Membre 3
     
    Bonjour
    Si quelqu'un pourrait m'aider s'ils vous plait, je suis bloqué et j'aimerai bien comprendre.
    Je vous remercie
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. papyclic Messages postés 451 Statut Membre 3
     
    Bonjour
    Je te remercie "le Père".
    Maintenant j'ai cette erreur tu peux m'expliquer se que cela signifie s'il te plait.
    Je te remercie
    Warning: Missing argument 1 for Liste_membre_class::__construct() in
    

    l'erreur se situe ligne 11
    class Liste_membre_class {
    
        private $nom;
        private $prenom;	
        private $email;
        private $fixe;
        private $mobile;
    
    	private $bdd;
    	
    	public function __construct($nom, $prenom, $email, $fixe, $mobile) {
    
    		$this->nom 		    = $nom;
    		$this->prenom 	    = $prenom;
    		$this->email 	    = $email;
    		$this->fixe 	    	= $fixe;
    		$this->mobile		= $mobile;
    		
    		$this->bdd 			= bdd();
    	}
    
    0
  7. crapoulou Messages postés 28002 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   8 046
     
    Bonsoir,

    En effet, il te manque la variable bdd en argument de ta fonction construct.
    0
  8. papyclic Messages postés 451 Statut Membre 3
     
    En fait j'ai bien mis un sixième argument "$bdd" mais ça ne change rien.
    je te renvoie mes 2 fichiers si tu as un peu de temps à me consacré.
    Merci
    <?php
    class Liste_membre_class {
    
        private $nom;
        private $prenom;	
        private $email;
        private $fixe;
        private $mobile;
    
    	private $bdd;
    	
    	public function __construct($nom, $prenom, $email, $fixe, $mobile) {
    
    		$this->nom 		    = $nom;
    		$this->prenom 	    = $prenom;
    		$this->email 	    = $email;
    		$this->fixe 	    	= $fixe;
    		$this->mobile		= $mobile;
    		
    		$this->bdd 			= bdd();
    	}
    	
        public function ListeMembre() {
            $sql = "SELECT * FROM tb_adherent ORDER BY nom, prenom ASC";
    		$requete = $this->bdd->prepare($sql);
            $requete->execute();
            $nombre_membre = ($requete->rowCount() > 0) ? $requete->rowCount() . ' Membres' : '0 membre';
            echo '<ul>';
            echo '<li style="margin-left:950px; background-color: #FFFFFF;">'.$nombre_membre.'</li>';
            echo '</ul>';
        
            while($donnees = $requete->fetchObject('Liste_membre_class')) {
                echo '<tr>';
                echo '<td>'.$donnees->nom.'</td>';
                echo '<td>'.$donnees->prenom.'</td>';
                echo '<td>'.$donnees->email.'</td>';
                $tel1 = $donnees->fixe; $tel1 = wordwrap ($tel1, 2, ' ', 1);
                echo '<td>'.$tel1.'</td>';
                $tel2 = $donnees->mobile; $tel2 = wordwrap ($tel2, 2, ' ', 1);
                echo '<td>'.$tel2.'</td>';
                echo '</tr>';
            }
        }
    }
    

    <br/>
    <?php
        $nom		= isset($_POST['nom']) ? Security::clean($_POST['nom']) : '';
        $prenom		= isset($_POST['prenom']) ? Security::clean($_POST['prenom']) : '';
        $email     	= isset($_POST['email']) ? Security::clean($_POST['email']) : '';
        $fixe		= isset($_POST['fixe']) ? Security::clean($_POST['fixe']) : '';
    	$mobile		= isset($_POST['mobile']) ? Security::clean($_POST['mobile']) : '';
    ?>
    	<div id="ListeMembre">
    		<table cellpadding="0" cellspacing="1">
    			<tr>
    				<th width="15%">Nom</th>
    				<th width="15%">Prénom</th>
    				<th width="36%">Email</th>
    				<th width="17%">Téléphone Fixe</th>
    				<th width="17%">Téléphone Mobile</th>
    			</tr>
    <?php
    $Liste_membre = new Liste_membre_class($nom, $prenom, $email, $fixe, $mobile, $bdd);
    $Liste_membre->ListeMembre();
    ?>
    		</table>
    	</div>
    

    En fait ça me retourne 1 erreur pas argument comme il y en a 5 ça fait 5 erreur mais bon c'est la même en fait
     Warning: Missing argument 1 for Liste_membre_class::__construct() in C
    
    0
  9. crapoulou Messages postés 28002 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   8 046
     
    public function __construct($nom, $prenom, $email, $fixe, $mobile)


    Ce n'est pas plutôt ceci ?

    public function __construct($nom, $prenom, $email, $fixe, $mobile, $bdd) {
    0
  10. papyclic Messages postés 451 Statut Membre 3
     
    Non en fait j'avais essayé déjà
    Alors ce que j'ai fait j'ai supprimé les 5 argument et je n'ai plus d'erreur mais par contre ça m'affiche le nombre de membre mais pas la liste des membres.
    Merci
    0
    1. crapoulou Messages postés 28002 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   8 046
       
      Ok.
      Je laisse la main à "le père."
      0