IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[POO] Héritage autre méthode


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2019
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2019
    Messages : 101
    Par défaut [POO] Héritage autre méthode
    class/Post.php

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
     
     
    class Post {
     
    	protected $_id;
    	protected $_texte;
    	protected $_dt_creation;
     
     
    	public function __construct(array $data) {
     
    		$this->setId($data['id']);
    		$this->setText($data['texte']);
    		$this->setDt_creation($data['dt_creation']);
    	}
     
    	public function setId($id) {
     
    		if((is_int($id)) AND ($id > 0)) {
     
    			$this->_id = $id;
    		}
    	}
     
    	public function setText($texte) {
     
    		if(is_string($texte)) {
     
    			$this->_texte = $texte;
    		}
    	}
     
    	public function setDt_creation($dt_creation) {
     
    		list($y, $m, $d) = explode("-", $dt_creation);
     
    		if(checkdate($m, $d, $y)) {
     
    			$this->_dt_creation = $dt_creation;
    		}
    	}
     
    	public function getId() {
     
    		return $this->_id;
    	}
     
    	public function getText() {
     
    		return $this->_texte;
    	}
     
    	public function getDt_creation() {
     
    		return $this->_dt_creation;
    	}
    }
     
    class Breve extends Post {
     
    }
     
    class Filet extends Post {
     
    	protected $_title;
     
    	public function __construct(array $data) {
     
    		parent::__construct($data);
     
    		$this->setTitle($data['title']);
    	}
     
    	public function setTitle($title) {
     
    		if(is_string($title)) {
     
    			$this->_title = $title;
    		}
    	}
     
    	public function getTitle() {
     
    		return $this->_title;
    	}
    }
    class/postManager.php

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
     
    class postManager {
     
    	private $_db;
     
    	public function __construct($db) {
     
    		$this->setDb($db);
    	}
     
    	public function setDb(PDO $dbh) {
     
    		$this->__db = $dbh;
    	}
     
    	public function addPost(Post $post) {
     
    		if(!method_exists($post, 'getTitle')) {
     
    			$sql = 'INSERT INTO post1(texte, dt_creation) VALUES(:texte, :dt_creation)';
    			$stmnt = $this->__db->prepare($sql);
    		}
    		else {
     
    			$sql = 'INSERT INTO post1(texte, dt_creation, title) VALUES(:texte, :dt_creation, :title)';
    			$stmnt = $this->__db->prepare($sql);
    		}
     
    		$stmnt->execute([':texte' => htmlspecialchars(($post)->getText()), ':dt_creation' => (($post)->getDt_creation()),
    			':title' => ($post)->getTitle()]);
    	}
     
    	public function getPost($id = '') {
     
    		if(empty($id)) {
     
    			$sql = 'SELECT id, texte, dt_creation, title FROM post1';
     
    			$stmnt = $this->__db->prepare($sql);
    		}
     
    		elseif(is_numeric($id)) {
     
    			$sql = 'SELECT id, texte, dt_creation, title FROM post1 WHERE id = :id';
    			$stmnt = $this->__db->prepare($sql);
    			$stmnt->bindParam(':id', $id);
    		}
     
    		$stmnt->execute();
     
    		while($row = $stmnt->fetch(PDO::FETCH_ASSOC)) {
     
    			$result[] = $row;
    		}
     
    		return $result;
    	}
    index.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    require('class/Post.php');
    require('class/postManager.php');
     
    $filet_data = array('id' => 1, 'texte' => 'Texte de breve', 'dt_creation' => '2013-11-15', 'title' => NULL);
    $filet = new Filet($filet_data);
     
    $db = new PDO('mysql:host=localhost;dbname=dbpost', 'root', '');
     
    $manager = new postManager($db);
     
    $manager->addPost($filet);
    var_dump($filet);

    Bonjour, Aucune données ne s'enregistre dans la base malgré qu'il y a aucune erreur d'afficher. Merci pour votre aide & bonne soirée

  2. #2
    Membre expérimenté Avatar de Trehinos
    Homme Profil pro
    Analyste développeur PHP
    Inscrit en
    Novembre 2012
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Analyste développeur PHP
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2012
    Messages : 100
    Par défaut
    Bonjour, voyez PDO::ATTR_ERRMODE et PDO::ERRMODE_EXCEPTION ici : https://www.php.net/manual/fr/pdo.setattribute.php pour voir vos erreurs.

  3. #3
    Membre éclairé Avatar de solo190
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 412
    Par défaut
    hello cyci60 ,
    amenage ceci pour te connecter à ta base de données
    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
      $servername = "localhost";
    	$username = "root";
    	$password = "";
    	$dbname = "dbpost";    
     
    try {
            $conn = new PDO("mysql:host=$servername;dbname=$dbname;charset=utf8mb4", $username, $password,
                        array(
                                PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,  // set the PDO error mode to exception          
                                PDO::ATTR_PERSISTENT => false,
                                PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci"
                            )
                        );        
        //echo "connexion pdo réussi ";
      	}
    catch(PDOException $e)
        {
        echo "Connection failed: " . $e->getMessage();
        }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $stmnt->execute([':texte' => htmlspecialchars(($post)->getText()), ':dt_creation' => (($post)->getDt_creation()),
    			':title' => ($post)->getTitle()]);
    htmlspecialchars
    c'est pour des données à afficher et non des données à sauvegarder .

    il est conseiller aussi de mettre tes instructions a exécuter dans un bloc try catch
    regarde ceci .

    https://www.developpez.net/forums/bl...pdo-soupe-lit/

    A+

Discussions similaires

  1. [POO] Héritage et méthode non implémentée
    Par Keweed dans le forum C++
    Réponses: 10
    Dernier message: 08/12/2008, 16h14
  2. Réponses: 5
    Dernier message: 23/04/2007, 17h31
  3. Réponses: 4
    Dernier message: 11/04/2007, 15h26
  4. [POO] Héritage et surcharge de méthodes
    Par defkid dans le forum Langage
    Réponses: 4
    Dernier message: 26/02/2007, 15h51
  5. [POO] Héritage d'une méthode getInstance ?
    Par knocc dans le forum Langage
    Réponses: 4
    Dernier message: 13/02/2007, 20h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo