Php class

Bonjour,
si'l vous plai c quoi l'erreur

<?php

try{
$bdd = new PDO('mysql:host=localhost;dbname=labo', 'root', '');
}
catch (Exception $e)
{
die('Erreur : ' . $e->getMessage());
}
class membres{

var $nom;
var $prenom;
function __construct(){
$this->nom=null;
$this->prenom=null;

}
function addmember($n,$p){
$this->nom=$n;
$this->prenom=$p;
$req="insert into info_membres values ('','$this->nom','$this->prenom','','','')";
$statm=$bdd->prepare($req);
$res=$statm->exec();
}

}

$membre=new membres();
$membre->addmember('younes','benhlal');

?>

mercii

5 réponses

  1. Comme il est dit : Fatal error: Non-static method PDO::prepare() cannot be called statically

    Cela signifie que PDO::prepare n'est pas une méthode statique, et qu'il s'agit donc d'une méthode d'instance.

    $bdd étant une instance de la classe PDO, il faut appeler "prepare" ainsi :
    $bdd->prepare
    1
    1. Qu'elle est l'erreur qui est affiché à ton écran stp ? :P
      0
      1. bon j'ai modifier le code en ca : voila la nouvelle erreur
        Fatal error: Non-static method PDO::prepare() cannot be called statically, assuming $this from incompatible context in C:\Program Files\EasyPHP-5.3.7RC4\www\dreamweaver\mini\tet.php on line 25

        et voila le code

        <?php

        try{
        $bdd = new PDO('mysql:host=localhost;dbname=labo', 'root', '');
        }
        catch (Exception $e)
        {
        die('Erreur : ' . $e->getMessage());
        }
        class membres{

        var $nom;
        var $prenom;
        function __construct($n,$p){
        $this->nom=$n;
        $this->prenom=$p;

        }
        function addmember(){
        $no=$this->nom;
        $pre=$this->prenom;
        $req="insert into info_membres values ('','$no','$pre','','','')";
        $statm=PDO::prepare($req);
        $res=$statm->exec();
        }

        }

        $membre=new membres('bn','you');
        $membre->addmember();

        ?>
        0
        1. <?php
          class members{

          var $id;
          var $nom;
          var $prenom;
          var $tel;
          var $email;
          var $type;

          function __construct(){

          require_once("cnx.php");
          $req="select * from info_membres ";
          $statement=$bdd->query($req);
          $member=$statement->fetch();
          $this->id=$member['id'];
          $this->nom=$member['nom'];
          $this->prenom=$member['prenom'];
          $this->tel=$member['tel'];
          $this->email=$member['email'];
          $this->type=$member['type'];

          }

          function display_member(){
          echo $this->id;
          echo $this->nom;
          echo $this->prenom;
          echo $this->tel;
          echo $this->email;
          echo $this->type;
          }

          }

          $p=new members();
          $p->display_member();
          ?>

          comment proceder pour afficher tous les membres?? mercii
          0
          1. Salut !
            On utilise plus var avant les declarations des variables, mais plutot !
            public, private ou protected
            private : Pour ne pas pouvoir y accéder directement a partir d'une instance créée, et que cette variable ne va pas être hérité.
            protected : Même chose, sauf que la variable peut être hérité.

            Hmm donc tu peux faire quelque chose dans ce genre !

            <?php  
            class members {  
             private $cnx; 
            
             public function __construct(){  
              require_once('cnx.php');  
              $this->cnx = $bdd; 
             }  
            
             public function display_members($number) { 
              $found = false; 
              $req = 'SELECT * FROM students'; 
               
              if(is_numeric($number)) $req .= ' WHERE id = '.$number; 
              else if($number != 'All') return false; 
            
              $statement = $this->cnx->query($req);  
              while($datas = $statement->fetch()) { 
               $found = true; 
               echo '<p>'.$datas['nom'].'</p>'; 
              } 
               
              if(!$found) { 
                              if($number == 'All') echo 'Aucun utilisateur trouvé.'; 
                else echo 'Utilisateur introuvable.'; 
                              return false; 
                            } 
                            return true; 
             } 
            }  
            
            $p = new members();  
            $p->display_members('All'); 
            $p->display_members(1); 
            $p->display_members(547); 
            ?> 
            0
          2. Sinon, pour ne pas trop solliciter la BD !
            On enregistre le tout dans un tableau, et on travaille la dessus directement !

            class members { 
            	private $cnx;
            	private $members = array(); //Liste des membres; 
            
            	public function __construct(){ 
            		require_once('cnx.php'); 
            		$this->cnx = $bdd;
            		$req = 'SELECT * FROM students';
            
            		$statement = $this->cnx->query($req); 
            		while($datas = $statement->fetch()) array_push($this->members,$datas);
            	} 
            
            	public function display_members($number) {
            		$found = false;
            
            		if(!is_numeric($number) && $number == 'All') {
            			foreach($this->members AS $datas) {
            				echo '<p>'.$datas['nom'].'</p>';
            				if($found != true) $found = true;
            			}
            		}
            		else if(is_numeric($number)) {
            			foreach($this->members AS $datas)
            				if($datas['id'] == $number) {
            					echo '<p>'.$datas['nom'].'</p>';
            					$found = true;
            					break;
            				}
            		}
            	
            		if(!$found && $number == 'All') echo 'Aucun utilisateur trouvé.';
            		else if(!$found) echo 'Utilisateur introuvable.';
            	}
            }
            0
          3. merciiiiiiiiiiiiii bcpppppppppppp
            0