Enregistrer des données vers MySQL
.
<?php
class School {
protected $_id;
protected $_name;
protected static $error;
const MESSAGE_ERROR_ID = 'ID doit être un entier.';
const MESSAGE_ERROR_TEXT = 'TEXT doit être une chaîne de caractères.';
const MESSAGE_ERROR_DATECREATION = 'DATE doit être au format YYYY-MM-DD.';
const MESSAGE_ERROR_TITLE = 'TITRE doit être une chaîne de caractères.';
const MESSAGE_ERROR_END = 'L\'objet ne peut pas être créé.';
public function __construct(array $schools) {
$this->setId($schools['id']);
$this->setName($schools['name']);
if(!empty(self::$error)) {
throw new Exception(self::$error . self::MESSAGE_ERROR_END);
}
}
public function setError($message) {
self::$error = $message;
}
public function getError() {
return self::$error;
}
public function setId($id) {
if((is_int($id)) AND ($id > 0)) {
$this->_id = $id;
}
else {
$this->setError(self::MESSAGE_ERROR_ID);
}
}
public function setName($name) {
if(is_string($name)) {
$this->_name = $name;
}
else {
$this->setError(self::MESSAGE_ERROR_TEXT);
}
}
public function getId() {
return $this->_id;
}
public function getName() {
return $this->_name;
}
}
?>
.
<?php
class schoolManager {
private $_bdd;
public function __construct($bdd) {
$this->setDb($bdd);
}
public function setDb(PDO $db) {
$this->__bdd = $db;
}
public function addSchools(School $school) {
$query = 'INSERT INTO school (name) VALUES(:name)';
$stmnt = $this->__bdd->prepare($query);
$stmnt->execute([':name' => htmlspecialchars(($school)->getName())]);
}
public function getSchools($id = '') {
if(empty($id)) {
$query = 'SELECT id, name FROM school';
$stmnt = $this->__bdd->prepare($query);
}
elseif(is_numeric($id)) {
$query = 'SELECT id, name FROM school WHERE id = :id';
$stmnt = $this->__bdd->prepare($query);
$stmnt->bindParam(':id', $id);
}
$stmnt->execute();
while($row = $stmnt->fetch(PDO::FETCH_ASSOC)) {
$results[] = $row;
}
return $results;
}
}
?>
.
<?php
require('class/School.php');
require('class/schoolManager.php');
try {
$bdd = new PDO('mysql:host=localhost;dbname=schools', '10111110', '10111110');
}
catch(Exception $e) {
'Erreur de connexion : ' . $e->getMessage();
}
$manager = new schoolManager($bdd);
$schools_data = array(
1 => array('id' => 1, 'name' => 'Ecole A'),
2 => array('id' => 2, 'name' => 'Ecole B'),
3 => array('id' => 3, 'name' => 'Ecole C')
);
$schools = new School($schools_data);
$manager->addSchools($schools);
$school = $manager->getSchools();
var_dump($school);
?>
J'ai une table school avec les champs id, name & je dois enregistrer dans name -> Ecole A Ecole B Ecole C mais j'ai ces messages d'erreurs ->
- Notice: Undefined index: id in C:\wamp64\www\php-expert\07-devoir-1-refait\class\School.php on line 18
- Notice: Undefined index: name in C:\wamp64\www\php-expert\07-devoir-1-refait\class\School.php on line 19
- Fatal error: Uncaught Exception: TEXT doit être une chaîne de caractères.L'objet ne peut pas être créé. in C:\wamp64\www\php-expert\07-devoir-1-refait\class\School.php on line 23
- Exception: TEXT doit être une chaîne de caractères.L'objet ne peut pas être créé. in C:\wamp64\www\php-expert\07-devoir-1-refait\class\School.php on line 23
Merci à ceux & celles qui pourraient m'apporter leurs aides. Bon Weekend à tous.
Réponses apportées à cette discussion
Peut-être que commencer par « Bonjour » et expliquer sommairement les données du problème serait un bon début.
Ensuite, les messages d'erreur, c'est bien, mais quelle partie du code correspond à quel fichier ? Mystère, on doit deviner.
Une question bien posée, c'est déjà ala moitié de la réponse. Donc commencez par remettre de l'ordre dans la présentation, après j'y jetterai peut-être un coup d’œil !
Bonsoir, en effet j'aurais du commencer par dire bonjour.
Concernant le sujet, j'ai finalement finit par réussir à le résoudre.
Bonne soirée.