34:48
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éesupdate()
: pour mettre à jour un enregistrement existantdelete()
: pour supprimer un enregistrementCes 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();
.
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.
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.
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.