Enregistrer des données vers MySQL

Rechercher

Enregistrer des données vers MySQL

Par cyci60  -  2 reponses  -  Le 11/04/2020 13:24  -  Editer  - 

.

<?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

Par Cyrano  -  Le 12/04/2020 20:17  -  Haut de page  - 

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 !

 
Par cyci60  -  Le 14/04/2020 18:20  -  Haut de page  - 

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.

 

Ajouter une réponse à la discussion

Seuls les membres connectés sont autorisés à poster dans les forums !

Identifiez-vous
Join |  ID/MDP? |