Désolé pour ce titre confus, je ne savais pas exactement comment décrire mon problème en une phrase.
En gros, je compte faire une interface pour modifier les informations personnels de l'utilisateur se connectant à son compte sur mon site.
Dans cette optique je dois au préalable récupérer ces info pour les lui afficher, ces info sont dans ma base de donnée dans un tableau :
Code : Tout sélectionner
<?php
class Bdd {
/*
*
* Ellipse attributs et d'autres méthodes
*
*/
protected function getConnexion() { // Retourne une instance de connexion à la base
if (!isset($this->connexion)) {
// Le dsn contient les informations (sorte de chemin) pour se connecter à la base
$dsn = 'mysql:host=' . $this->host . ';dbname=' . $this->dbName . ';port=' . $this->port;
// Créé une instance de connexion à la base, les enregistrements sont récupérés sous la forme d'un objet
$this->connexion = new PDO($dsn, $this->username, $this->password, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION ,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ
]);
}
return $this->connexion;
}
protected function setTable($table) {
$this->table = $this->dbName . '.' . $table;
}
protected function getTable() {
return $this->table;
}
?>
Code : Tout sélectionner
<?php
class Evaluateurs extends Bdd {
/*
*
* Attributs
*
*/
public function __construct(){
$this->setTable('evaluateurs');
}
/*
*
* Ellipse d'autres méthodes
*
*/
public function getData($data_name, $id){
/*
// Méthode 1 :
$prepare = 'SELECT :data_name FROM ' . $this->getTable() . ' WHERE id = :id';
$execute = [
'data_name' => $data_name,
'id' => $id
];
// Méthode 2 :
$prepare = 'SELECT ' . $data_name . ' FROM ' . $this->getTable() . ' WHERE id = :id';
$execute = [
// 'data_name' => $data_name,
'id' => $id
];
*/
$requete = $this->getConnexion()->prepare($prepare);
$requete->execute($execute);
return $requete->fetch()->$data_name;
}
}
?>
Code : Tout sélectionner
<?php
class Evaluateur extends Evaluateurs {
public function __construct($email){
$this->setTable('evaluateurs');
$this->setId($email);
}
public function setId($email){
if(!isset($this->id)){
$prepare = 'SELECT id FROM ' . $this->getTable() . ' WHERE email = :email';
$execute = [
'email' => $email
];
$requete = $this->getConnexion()->prepare($prepare);
$requete->execute($execute);
$this->id = $requete->fetch()->id;
}
}
public function getId(){
return $this->id;
}
public function getFirstName($id) {
$this->first_name = $this->getData('first_name', $id);
return $this->first_name;
}
public function getLastName($id) {
$this->last_name = $this->getData('last_name', $id);
return $this->last_name;
}
}
- La première méthode va me renvoyer pour le "first name" : first_name, pour le "last name" : last_name, l'email : email, etc..
- La deuxième va bien me renvoyer ce que je veux (le contenu la cellule visée).
Ma question est : pourquoi donc?
Si ça se trouve il y a une erreur bête mais je bloque dessus et je ne trouve pas...
Je vous remercie d'avance !