part 4: Création de la classe de connexion et de gestion de la base de données – Partie 2 | developper un site e-commerce complet en php

34:48



Contenu

Salut à tous et bienvenue dans cette quatrième partie de notre série sur le développement d’un site e-commerce complet en PHP !

Dans cette vidéo, on va continuer à développer notre classe de gestion de la base de données.

Après avoir mis en place les méthodes find, findAll, findBy et findOneBy dans la Partie 3, on va maintenant ajouter des méthodes permettant de manipuler les données dans la base :

  • insert() : pour insérer un nouvel enregistrement dans la base de données
  • update() : pour mettre à jour un enregistrement existant
  • delete() : pour supprimer un enregistrement

Ces trois méthodes vont compléter notre classe et nous permettre de réaliser des opérations CRUD (Create, Read, Update, Delete) directement depuis notre application PHP.

Ces méthodes sont essentielles pour pouvoir interagir dynamiquement avec notre base de données. À la fin de cette vidéo, vous serez capables de gérer vos données en toute simplicité !

contenu du fichier database.php

<?php 
 
class Database{
 
 
    ///// contenu précédent 
 
 
    public function insert($table, $fields, $values) {
        try {
            $columns = implode(", ", $fields);
            $placeholders = ":" . implode(", :", $fields);
            $query = "INSERT INTO $table ($columns) VALUES ($placeholders)";
            $stmt = $this->conn->prepare($query);
            foreach ($fields as $index => $field) {
                $stmt->bindValue(":" . $field, $values[$index]);
            }
            return $this->executeStatement($stmt);
        } catch (PDOException $e) {
            die("Erreur SQL : " . $e->getMessage());
        }
    }
 
    public function update($table, $fields, $values, $id) {
        try {
            $setClause = [];
            foreach ($fields as $field) {
                $setClause[] = "$field = :$field";
            }
            $query = "UPDATE $table SET " . implode(", ", $setClause) . " WHERE id = :id";
            $stmt = $this->conn->prepare($query);
            foreach ($fields as $index => $field) {
                $stmt->bindValue(":" . $field, $values[$index]);
            }
            $stmt->bindValue(":id", $id, PDO::PARAM_INT);
            return $this->executeStatement($stmt);
        } catch (PDOException $e) {
            die("Erreur SQL : " . $e->getMessage());
        }
    }
 
    public function delete($table, $id) {
        try {
            $query = "DELETE FROM $table WHERE id = :id";
            $stmt = $this->conn->prepare($query);
            $stmt->bindValue(":id", $id, PDO::PARAM_INT);
            return $this->executeStatement($stmt);
        } catch (PDOException $e) {
            die("Erreur SQL : " . $e->getMessage());
        }
    }
}
 
 
$database = new Database();
$conn = $database->getConnection();
 

fichier complet

<?php 
 
 
class Database{
    private $host = "localhost";
    private $db_name = "myShop";
    private $username = "root";
    private $password = "root";
    private $conn; 
 
    public function getConnection(){
        
        $this->conn = null;
 
        try{
            $this->conn = new PDO("mysql:host=" . $this->host . ";dbname=" . $this->db_name . ";charset=utf8", $this->username, $this->password );
            $this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        }catch(PDOException $exception){
            die("erreur de connexion : ".$exception->getMessage());
        }
 
        return $this->conn; 
    }
 
    public function find($table, $id){
        try{
            $stm = $this->conn->prepare("SELECT * FROM $table WHERE id = :id");
            $stm->bindParam(":id", $id, PDO::PARAM_INT);
            $stm->execute();
            return $stm->fetch(PDO::FETCH_ASSOC);
        }catch(PDOException $e){
            die("erreur : " . $e->getMessage());
        }
    }
 
    public function findAll($table){
        try{
            $stm = $this->conn->query("SELECT * FROM $table ");
            return $stm->fetchAll(PDO::FETCH_ASSOC);
        }catch(PDOException $e){
            die("erreur : " . $e->getMessage() );
        }
    }
 
    public function findBy($table , $criteria){
        try{
           $query = "SELECT * FROM $table WHERE ";
           $condition = [];
           foreach($criteria as $key){
                $condition[] = "$key = :$key";
           } 
           $query .= implode(" AND ", $condition);
           $stm = $this->conn->prepare($query);
 
 
           foreach($criteria as $key => $value ){
                $stm->bindValue(":$key", $value);
           }
           $stm->execute();
           return $stm->fetchAll(PDO::FETCH_ASSOC);
 
 
        }catch(PDOException $e){
            die("erreur : " . $e->getMessage());
        }
    }
 
    public function findOneBy($table, $criteria){
        $resul = $this->findBy($table, $criteria);
        return $resul ? $resul[0] : null ;
    }
 
    private function executeStatement($stmt) {
        try {
            return $stmt->execute();
        } catch (PDOException $e) {
            die("Erreur SQL : " . $e->getMessage());
        }
    }
 
    public function insert($table, $fields, $values) {
        try {
            $columns = implode(", ", $fields);
            $placeholders = ":" . implode(", :", $fields);
            $query = "INSERT INTO $table ($columns) VALUES ($placeholders)";
            $stmt = $this->conn->prepare($query);
            foreach ($fields as $index => $field) {
                $stmt->bindValue(":" . $field, $values[$index]);
            }
            return $this->executeStatement($stmt);
        } catch (PDOException $e) {
            die("Erreur SQL : " . $e->getMessage());
        }
    }
 
    public function update($table, $fields, $values, $id) {
        try {
            $setClause = [];
            foreach ($fields as $field) {
                $setClause[] = "$field = :$field";
            }
            $query = "UPDATE $table SET " . implode(", ", $setClause) . " WHERE id = :id";
            $stmt = $this->conn->prepare($query);
            foreach ($fields as $index => $field) {
                $stmt->bindValue(":" . $field, $values[$index]);
            }
            $stmt->bindValue(":id", $id, PDO::PARAM_INT);
            return $this->executeStatement($stmt);
        } catch (PDOException $e) {
            die("Erreur SQL : " . $e->getMessage());
        }
    }
 
 
    public function delete($table, $id) {
        try {
            $query = "DELETE FROM $table WHERE id = :id";
            $stmt = $this->conn->prepare($query);
            $stmt->bindValue(":id", $id, PDO::PARAM_INT);
            return $this->executeStatement($stmt);
        } catch (PDOException $e) {
            die("Erreur SQL : " . $e->getMessage());
        }
    }
}
 
 
$database = new Database();
$conn = $database->getConnection();
 

.


lightbulb

Suivi personnalisé

Vous avez un projet professionnel ou scolaire et souhaitez maximiser vos chances de réussite ?
Un accompagnement personnalisé peut faire toute la différence. Bénéficiez d’un coaching adapté à vos objectifs, pour avancer avec méthode et confiance.

À ma charge

Réservez votre session d’audit de 30 minutes (gratuite et sans engagement). Nous évaluons ensemble votre situation et comment nous pourrions l’améliorer puissament et rapidement.

me contacter
contact.nashdev.fr@gmail.com

Nash-dev.fr

Nash-dev.fr est une plateforme conçue pour offrir un accès à des formations de qualité dans le domaine de la tech, incluant la programmation d'applications, le développement web, l'IA, et bien plus encore. Avec des cours adaptés à tous les niveaux, Nash-dev.fr propose des tutoriels vidéo, des parcours de formation complets, ainsi qu'un suivi personnalisé pour les apprenants. Que vous soyez débutant ou expert, vous y trouverez tout ce dont vous avez besoin pour développer vos compétences techniques et rester à jour dans les dernières innovations du secteur.

Conditions d’utilisation Politique de Confidentialité

Copyright 2024 © Tous droits réservés.