Bonsoir. J'ai crée une application listant des emails en PHP objet sans framework. Et je souhaiterai récupérer l'email sélectionnée par le bouton "modifier" dans un champ de formulaire.
Voici dans un premier temps la vue affichant tous les emails :
Et voici la vue du formulaire de modification avec un champ email (c'est-à-dire le champ où doit être affiché l'email selectionnée)
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 <?php //Déclaration de l'espace de travail du projet namespace app; //Démarrage de la session session_start(); //Récupération des valeurs passé dans le formulaire et affectation dans la session $_SESSION["email"] = $_POST["email"]; $_SESSION["password"] = $_POST["password"]; //Condition qui doit vérifié si l'utilisateur est authentifié if (empty($_SESSION["email"])) { header('location:formulaire.php'); exit(); } //Inclusion des scripts nécessaire au traitement des données venant de la base de données include("_entete.php"); include("../app/models/DatabaseAccess.php"); include("../app/models/email.php"); include("../app/controllers/EmailController.php"); include("../app/config/identifiantsbdd.php"); //Activation des erreurs PDO error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); //Création des objets pour l'email et leur traitement $email = new Email(); $result = new EmailController(); //Condition stipulant que si on clique sur le bouton "envoyer" et que si le contenu des champs n'est pas vide, on affiche le "Bonjour $_SESSION" if (isset($_POST["envoyer"])) { if (isset($_POST["email"]) && $_POST["password"]) { $_SESSION["email"] = $_POST["email"]; if ($result->read($_POST["email"]) == true) { echo "Bonjour ". $_SESSION["email"] . '<br>'; } } } ?> <table class="table"> <thead> <tr> <th scope="col">Email</th> <th scope="col"></th> </tr> </thead> <tbody> <?php //Récupération des email venant de la base de données foreach ($result->readAll() as $donnee) { echo "<tr>"; echo "<td>" . "<li name='donnee'>" . $donnee . "</li>"; echo "</td>"; echo "<td>"; echo "<a href='modification.php'><button type=\"button\" class=\"btn btn-success \">Modifier</button></a>"; echo "</td>"; echo "<td>"; echo "<a href='suppression.php'><button type=\"button\" class=\"btn btn-warning \">Supprimer</button></a>"; echo "</td>"; echo "</tr>"; } ?> </tbody> </table> <a href='creation.php'> <button type="button" class="btn btn-info btn-lg">Ajouter un Email</button> </a> </body> <?php include('_piedpage.php');?>
Ensuite comme mon application interagit avec une base de données, voici la classe PDO se connectant à la base de données (et qui fonctionne) :
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 <?php //Mon formulaire de connextion au back-office //Définition de l'espace de travail du projet namespace app; //Inclusion des script PHP nécessaire au bon déroulement du traitement include('_entete.php'); include('../app/models/DatabaseAccess.php'); include('../app/models/email.php'); include("../app/controllers/EmailController.php"); include("../app/config/identifiantsbdd.php"); //include ("../views/traitement.php"); error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); $email = new email(); $result = new EmailController(); var_dump($result->read($_GET["donnee"])); ?> <form action="modifok.php" method="POST"> <div class="form-group"> <label for="exampleInputEmail1">Modification de adresse email</label> </div> <input type="email" class="form-control" name="email" id="exampleInputEmail1" aria-describedby="emailHelp" value=""> <div class="form-group"> <label for="exampleInputPassword1">Mot de passe</label> <input type="password" class="form-control" name="password" id="exampleInputPassword1" value=""> </div> <button type="submit" name="renvoyer" class="btn btn-primary">Renvoyer</button> </form> </div> <?php include('_piedpage.php');?>
Voici également l'entité email faisant référence à la table email de ma 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
20
21
22
23
24
25
26
27
28
29
30
31
32
33 <?php /** * Created by PhpStorm. * User: Honoré * Date: 13/05/2018 * Time: 20:28 */ namespace app; use PDO; class DatabaseAccess { protected $dbname = DBNAME; protected $dbhost = DBHOST; protected $dbuser = DBUSER; protected $dbpass = DBPASS; protected $pdo; public function __construct() { try { $this->pdo = new \PDO("mysql:host=" . $this->dbhost . ";dbname=" . $this->dbname, $this->dbuser, $this->dbpass); // Activation des erreurs PDO $this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH $this->pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch (PDOException $e) { echo 'La connexion a échouée : ' . $e->getMessage(); } } }
Et voici ma classe qui permet d'effectuer le traitement en base de données, c'est-à-dire mon controller CRUD et pour ce cas c'est la méthode update :
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 <?php /** * Created by PhpStorm. * User: Honoré * Date: 13/05/2018 * Time: 21:18 */ //Class entité d'un Email faisant référence au colonne de la table Email namespace app; class email { //Les colonnes de la table défini comme attribut de la classe protected $id; protected $email; protected $password; /** * email constructor. * @param $id * @param $email * @param $password */ //Ensuite les assesseurs et mutateurs permettant de récuperer les enregistrements de la table /** * @return mixed */ public function getId() { return $this->id; } /** * @param mixed $id */ public function setId($id) { $this->id = $id; return $this; } /** * @return mixed */ public function getEmail() { return $this->email; } /** * @param mixed $email */ public function setEmail($email) { $this->email = $email; return $this; } /** * @return mixed */ public function getPassword() { return $this->password; } /** * @param mixed $password */ public function setPassword($password) { $this->password = $password; return $this; } }
Pouvez-vous m'aider ? Car je débute un peu en POO PHP sans framework ?
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 <?php /** * Created by PhpStorm. * User: Honoré * Date: 13/05/2018 * Time: 21:30 */ //Controller éffectuant les CRUD en base de données pour la table E-mail //Utilisation de l'espace de travail namespace app; //Utilisation de l'objet PDO pour interagir avec la base de données use PDO; //Class permettant d'effectuer les requêtes CRUD en base de données dans la table E-mail, elle hérite de la classe de connexion en base de données class EmailController extends DatabaseAccess { protected $sql; //Constructeur faisant appel au constructeur mère à savoir DatabaseAccess public function __construct() { parent::__construct(); } //Methode de création d'un courriel public function create(email &$email) { $sql = $this->pdo->prepare('INSERT INTO email (idemail, emailpersonne, password) VALUES (NULL, :emailpersonne, :password)'); $sql->bindValue(":emailpersonne", $email->getEmail(), PDO::PARAM_STR); $sql->bindValue(":password", $email->getPassword(), PDO::PARAM_STR); $resultat = $sql->execute(); return $resultat; } //Méthode permettant de sélectionner un courriel dans la base de données en fonction de ce qui est entré en base de données public function read($emailpersonne) { $sql = $this->pdo->prepare('SELECT * FROM email WHERE emailpersonne= :emailpersonne'); $sql->bindValue(":emailpersonne", $emailpersonne, PDO::PARAM_STR); $resultat = $sql->execute(); return $resultat; } //Méthode ayant comme signature le récupération de tous les email de la table public function readAll() { $sql = $this->pdo->prepare('SELECT emailpersonne FROM email ORDER BY emailpersonne'); $sql->execute(); $resultat = $sql->fetchAll(PDO::FETCH_COLUMN); return $resultat; } //Méthode permettant de mettre à jour un email public function update(email &$email) { $sql = $this->pdo->prepare('UPDATE email SET emailpersonne= :emailpersonne'); $sql->bindValue(":emailpersonne", $email->getEmail(), PDO::PARAM_STR); $resultat = $sql->execute(); //$resultat = $sql->fetchAll(); return $resultat; } //Méthode de suppression un email public function delete($emailpersonne) { $sql = $this->pdo->prepare('DELETE FROM email WHERE emailpersonne =:emailpersonne'); $sql->bindParam(":emailpersonne", $emailpersonne, PDO::PARAM_STR); $sql->execute(); $resultat = $sql->fetchAll(); $sql->closeCursor(); return $resultat; } }
Partager