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 :

Mise à jour d'un email existant dans un formulaire [PHP 5.6]


Sujet :

Langage PHP

  1. #1
    Invité
    Invité(e)
    Par défaut Mise à jour d'un email existant dans un formulaire
    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 :

    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');?>
    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
    <?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');?>
    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
    <?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();
            }
        }
    }
    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
    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;
        }
     
     
     
    }
    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
    <?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;
     
        }
     
    }
    Pouvez-vous m'aider ? Car je débute un peu en POO PHP sans framework ?

  2. #2
    Membre extrêmement actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2018
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2018
    Messages : 537
    Points : 634
    Points
    634
    Par défaut
    Et le probleme c'est juste le bouton?
    C'est beaucoup de ligne pour quelques functions !

    ... Il est ou d'ailleurs ce bouton?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par bonjourajax Voir le message
    Et le probleme c'est juste le bouton?
    Non ce n'est pas uniquement le bouton, le bouton "modifier" marche car il revoit au au formulaire de modif. Comme l'indique la capture suivante :
    Nom : traitement.JPG
Affichages : 110
Taille : 47,3 Ko

    Quand on clique sur "modifier" comme l'image ci-dessous :
    Nom : traitement - Copie.JPG
Affichages : 123
Taille : 57,1 Ko


    Il revoie au formulaire que voici :
    Nom : modification.JPG
Affichages : 126
Taille : 60,3 Ko

    Et le problème de ce formulaire c'est qu'il n'affiche pas les informations dans les champ c'est-à-dire l'email dans le champ en haut et le mot de passe dans le champ en bas. Or quand je clique sur le bouton "modifier" rien ne s'affiche ! Or je souhaiterai afficher dans les champs les informations correspondantes. Par exemple : quand je clique sur le bouton "modifier" à côté de l'email "tete@gmail.com", j'ai envie que s'affiche dans le champ en haut "tete@gmail.com" et son mot de passe.

    Citation Envoyé par bonjourajax Voir le message
    C'est beaucoup de ligne pour quelques functions !
    Tu trouves. Car la fonction ou la méthode correspondant à la modification se trouve dans la classe EmailController et c'est la méthode "update" que voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        //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;
        }

  4. #4
    Membre extrêmement actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2018
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2018
    Messages : 537
    Points : 634
    Points
    634
    Par défaut
    c'est ici que ça coince

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var_dump($result->read($_GET["donnee"]));
    Deviendra
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if(isset($_GET['donnee']))
                 var_dump($result->read($_GET["donnee"]));

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bon j'ai résolu le problème. Pour chaque email, je crée des sessions. Je les stockes dans ses sessions. Et à chaque fois que l'utilisateur de l'email est connecté, il peut modifier ou supprimer l'email. Et pour la méthode "update" j'ai appliqué à l'id de l'email la méthode "read" car l'id est auto incrémenté par le SGBD et ensuite j'applique les modifications des autres champs.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 26/02/2013, 11h58
  2. [AC-2003] Mise à jour d'enregistrement de requete dans un formulaire
    Par FCL31 dans le forum IHM
    Réponses: 2
    Dernier message: 06/10/2009, 14h02
  3. Réponses: 12
    Dernier message: 26/05/2008, 15h03
  4. Réponses: 5
    Dernier message: 27/08/2006, 14h18
  5. Réponses: 1
    Dernier message: 27/04/2006, 18h22

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