Problème PHP POO (insertion)
Résolu
PHP
-
PHP -
PHP -
Bonjour, j'ai un problème, je n'arrive pas trouve ou viens de l'erreur.
voici mon code:
index.php
function loadClass($classe){
require 'classes/'.$classe.'.class.php';
}
spl_autoload_register('loadClass');
$perso = new Personnage(array(
'nom' => 'Victor'
));
$db = new PDO('mysql:host=localhost; dbname=test1', 'root', '');
$manager = new PersonnagesManager($db);
$manager->add($perso);
______________________________________________
personnage.class.php
class Personnage
{
private $_id;
private $_nom;
public function hydrate(array $donnees){
foreach($donnees as $key => $value){
$method = 'set'.ucfirst($key);
if(method_exists($this, $method)){
$this->$method($value);
}
}
}
//Getters
public function id(){
return $this->id;
}
public function nom(){
return $this->_nom;
}
//Setters
public function setId($id){
$id = (int) $id;
if($id > 0){
$this->_id = $id;
}
}
public function setNom($nom){
if(is_string($nom)){
$this->_nom = $nom;
}
}
}
________________________________________________________
PersonnagesManager.class.php
class PersonnagesManager
{
private $_db;
public function __construct($db){
$this->setDb($db);
}
public function add(Personnage $perso){
$q = $this->_db->prepare('INSERT INTO personnage SET nom=:nom');
$q->bindValue(':nom', $perso->nom());
$q->execute();
}
public function setDb(PDO $db){
$this->_db = $db;
}
}
__________________________
Je sais que mon code il est longue, mais le problème que je n'arrive pas comprend pourquoi ne arche pas. Merci pour votre aide.
voici mon code:
index.php
function loadClass($classe){
require 'classes/'.$classe.'.class.php';
}
spl_autoload_register('loadClass');
$perso = new Personnage(array(
'nom' => 'Victor'
));
$db = new PDO('mysql:host=localhost; dbname=test1', 'root', '');
$manager = new PersonnagesManager($db);
$manager->add($perso);
______________________________________________
personnage.class.php
class Personnage
{
private $_id;
private $_nom;
public function hydrate(array $donnees){
foreach($donnees as $key => $value){
$method = 'set'.ucfirst($key);
if(method_exists($this, $method)){
$this->$method($value);
}
}
}
//Getters
public function id(){
return $this->id;
}
public function nom(){
return $this->_nom;
}
//Setters
public function setId($id){
$id = (int) $id;
if($id > 0){
$this->_id = $id;
}
}
public function setNom($nom){
if(is_string($nom)){
$this->_nom = $nom;
}
}
}
________________________________________________________
PersonnagesManager.class.php
class PersonnagesManager
{
private $_db;
public function __construct($db){
$this->setDb($db);
}
public function add(Personnage $perso){
$q = $this->_db->prepare('INSERT INTO personnage SET nom=:nom');
$q->bindValue(':nom', $perso->nom());
$q->execute();
}
public function setDb(PDO $db){
$this->_db = $db;
}
}
__________________________
Je sais que mon code il est longue, mais le problème que je n'arrive pas comprend pourquoi ne arche pas. Merci pour votre aide.
A voir également:
- Problème PHP POO (insertion)
- Touche insertion clavier - Guide
- Insertion sommaire word - Guide
- Insertion filigrane word - Guide
- Insertion liste déroulante excel - Guide
- Insertion signature word - Guide
2 réponses
Bonjour,
Quand tu dis que ton code "ne arche pas", il fait quoi ? Erreur ? il ne se passe rien ? Ton évier déborde ?
Quand tu dis que ton code "ne arche pas", il fait quoi ? Erreur ? il ne se passe rien ? Ton évier déborde ?
PHP
Bonjour merci pour votre réponse, il ne se passe rien quand je test, aucun erreur.
j'imagine que c'est normal, tu ne fais rien d'autre que créer une personne et le mettre en manager (si j'ai bien compris)
Avec ce code marche mais je ne sais pas si ce juste.
function loadClass($classe){
require 'classes/'.$classe.'.class.php';
}
spl_autoload_register('loadClass');
$perso = new Personnage();
$perso1 = array(
'nom' => 'Victor'
);
$perso->hydrate($perso1);
$db = new PDO('mysql:host=localhost; dbname=test1', 'root', '');
$manager = new PersonnagesManager($db);
$manager->add($perso);
function loadClass($classe){
require 'classes/'.$classe.'.class.php';
}
spl_autoload_register('loadClass');
$perso = new Personnage();
$perso1 = array(
'nom' => 'Victor'
);
$perso->hydrate($perso1);
$db = new PDO('mysql:host=localhost; dbname=test1', 'root', '');
$manager = new PersonnagesManager($db);
$manager->add($perso);