Bonjour, j'apprend nouvellement la POO et j'utilise PDO pour la connexion, affichage des info de ma BDD.
J'ai 3 classes:
- une pour la connexion à la BDD,
- une qui contient les méthodes d'ordre générale (affichage, etc..)
- et une pour gérer les méthodes spécifiques telle que les membres (connexion, ajout, modification, etc...) qui extends de la class des méthodes générales
Mon problème c'est comment appeler une méthode de la class "méthodes générales" dans la class fille afin de bénéficier de ses méthodes.
Classe connexio BDD
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 <?php class DBconnexion { public static function PDO() { try { $bdd= new PDO('mysql:host=localhost;dbname=ajmci', 'root', '', array( PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8', PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING)); } catch(PDOException $e){ die('<h1>Impossible de se connecter a la base de donnees</h1>'); } return $bdd; } } ?>Classe managerMember
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 Classe globalManager <?php class manager { protected $bdd; public function __construct(PDO $bdd) { $this->bdd = $bdd; } } $ddb = DBconnexion::PDO(); $gManager = new manager($ddb); ?>
Page traitement connexion membre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 <?php session_start(); //On demarre la session class memberManager extends manager { public $table; public $login; protected $password; //Fonction connexion membre function logMember($table, $login, $password){ //execute login via function prepare pour prevenir les injection MySQL $result = $this->bdd->prepare("SELECT * FROM ".$table." WHERE login ='".$login."' AND motpass = '".$password."'"); $result->execute(); $data = $result->fetch(PDO::FETCH_OBJ); $row = count($data); if($row != 0){ if(($data->login == $login) && $data->motpass == $password){ $_SESSION['login'] = $data->login; $_SESSION['profil'] = $data->profil; return true; } }else{ return false; } } } $gManagerMember = new memberManager; ?>
Erreur affiché
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 <?php require('class/db.class.php'); require('class/manager.class.php'); require('class/memberManager.class.php'); if($_POST) { $table = "administrateur"; $login = $_POST['login']; $password = $_POST['motpasse']; $connect = $gManagerMember->logMember($table, $login, $password); if($connect == true){ echo 'Bon'; exit; } else { echo "pas bon"; } } ?>
NB: le principe pour moi c'est d'avoir une classe qui traite les méthodes standarts et une classe fille qui elle traite les méthodes spécifiques.Catchable fatal error: Argument 1 passed to manager::__construct() must be an instance of PDO, none given, called in D:\EasyPHP-12.1\www\ajmci_news\class\memberManager.class.php on line 33 and defined in D:\EasyPHP-12.1\www\ajmci_news\class\manager.class.php on line 14
Partager