Requète PHP

Résolu/Fermé
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 - Modifié par papyclic le 2/01/2015 à 11:32
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 - 2 janv. 2015 à 23:58
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>
A voir également:

9 réponses

papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
2 janv. 2015 à 23:57
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
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
2 janv. 2015 à 23:58
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
Utilisateur anonyme
2 janv. 2015 à 22:56
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
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
2 janv. 2015 à 11:52
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
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
2 janv. 2015 à 22:44
Bonjour
Si quelqu'un pourrait m'aider s'ils vous plait, je suis bloqué et j'aimerai bien comprendre.
Je vous remercie
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
2 janv. 2015 à 23:24
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
crapoulou Messages postés 28161 Date d'inscription mercredi 28 novembre 2007 Statut Modérateur, Contributeur sécurité Dernière intervention 21 mai 2024 7 998
2 janv. 2015 à 23:28
Bonsoir,

En effet, il te manque la variable bdd en argument de ta fonction construct.
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
2 janv. 2015 à 23:37
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
crapoulou Messages postés 28161 Date d'inscription mercredi 28 novembre 2007 Statut Modérateur, Contributeur sécurité Dernière intervention 21 mai 2024 7 998
2 janv. 2015 à 23:41
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
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
2 janv. 2015 à 23:52
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
crapoulou Messages postés 28161 Date d'inscription mercredi 28 novembre 2007 Statut Modérateur, Contributeur sécurité Dernière intervention 21 mai 2024 7 998
2 janv. 2015 à 23:53
Ok.
Je laisse la main à "le père."
0