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

PHP & Base de données Discussion :

PHP requete SQL UPDATE sur modal Bootstrap


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2018
    Messages : 5
    Points : 2
    Points
    2
    Par défaut PHP requete SQL UPDATE sur modal Bootstrap
    Bonjour à tous,
    Avant de commencer je tiens a préciser que je suis encore novice en php.

    Voila mon soucis, je dois créer un site qui récupère et affiche des données a partir d'une base de donnée intitulé "immobilier" pour un projet de classe (je suis une formation de développeur web) jusque la rien de compliqué.
    Sur ce site je dois pouvoir supprimer, créer ou modifier une entrée. Pour la suppression et la création c'est ok la ou je bloque c'est pour modifier une entrée déjà existante.

    La consigne pour modifier une entrée déjà existante est la suivante :

    Pour effectuer la mise a jour d'une entrée il faut cliquer sur un bouton qui ouvrira une fenêtre contenant le formulaire préremplis des données de la BDD. Pour cela utiliser le modal Bootstrap.
    J'arrive a réaliser toute cette consigne mais le problème au moment de cliquer sur le bouton, la fenêtre modal s'ouvre mais en affichant les données de ma première entrée et les modification ne s'effectue que dans ma première entrée peut importe le bouton sur lequel je clique.

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    if(!empty($_POST['updButton'])){
     
        $update = $pdo->exec("UPDATE personne SET prenom = '$_POST[newP]' WHERE idPersonne = '$_POST[maj]'");
     
        echo 'Mis a jour ' . $_POST['newP'] ;
     
    }
    Ci-dessous le code pour créer les boutons et la modal

    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
    <?php
    /*****************************DEBUT DE LA BOUCLE*******************************/
    while($afficher = $result->fetch(PDO::FETCH_OBJ)){
     
    ?>
     
    <tr>
     
        <td><?php echo $afficher->idPersonne ?></td>
        <td><?php echo $afficher->prenom?></td>
     
        <td>
     
        <!-- SUPPRESSION -->
            <form method="POST" action="">
     
            <input type="hidden" name="dell" value="<?php echo $afficher->idPersonne; ?>"></input>   
            <input type="submit" id="dellButton" class="btn btn-danger" name="dellButton" value="supprimer"></input>
     
        </form>
     
    </td>
     
    <td id="modalUpdate">
    <!-- Button trigger modal -->
    <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#modif">
      Modifier
    </button>
     
     
    <!-- Modal UPDATE-->
    <div class="modal fade" id="modif" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
      <div class="modal-dialog" role="document">
        <div class="modal-content">
     
          <div class="modal-body">
          <form method="POST" action="">
     
                <input type="hidden" name="maj" value="<?php echo $afficher->idPersonne; ?>"></input>
                <input type="text" name="newP" id ="newP" value ="Prenom a modifier"></input>   
                <input type="submit" id="updButton" class="btn btn-danger" name="updButton" value="Mettre a jour"></input>
     
          </form>
     
          </div>
     
        </div>
      </div>
    </div>
     
    </td> 
     
    </tr>
     
    <?php
     
    }
    /**************************FIN DE LA BOUCLE*******************************************/
    ?>
    La table sur laquelle je travail se nomme "personne" et contiens les colonnes "idPersonne" et "prenom"

    Voila désolé si ce genre de question a déjà été posé mais j'ai pas trouvé de solution en français sur le net (j'ai un peu de mal avec l'anglais pour stackoverflow) et c'est mon premier topic alors j’espère avoir été assez claire et que la présentation est respectable, n’hésitez pas a me demander des informations complémentaires.

    Merci d'avance toute aide est la bienvenue.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        $update = $pdo->exec("UPDATE personne SET prenom = '$_POST[newP]' WHERE idPersonne = '$_POST[maj]'");
    Vous avez appris à faire des requêtes préparées, ou pas ??



    2- Comme tu es dans une boucle (while), on ne peut pas mettre le même attribut id * (id="modif", id="dellButton", id="modalUpdate", ...), car il va se répéter.
    Or, un id DOIT être unique.

    On peut par contre utiliser l'id de la personne (AUTO-INCREMENTE, donc UNIQUE), pour identifier formellement chaque élément :

    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
    <td id="modalUpdate-<?php echo $afficher->idPersonne; ?>">
    <!-- Button trigger modal -->
    <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#modif-<?php echo $afficher->idPersonne; ?>">
      Modifier
    </button>
     
     
    <!-- Modal UPDATE-->
    <div class="modal fade" id="modif-<?php echo $afficher->idPersonne; ?>" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
      <div class="modal-dialog" role="document">
        <div class="modal-content">
     
          <div class="modal-body">
          <form method="POST" action="">
     
                <input type="hidden" name="maj" value="<?php echo $afficher->idPersonne; ?>"></input>
                <input type="text" name="newP" id="newP-<?php echo $afficher->idPersonne; ?>" value ="Prenom a modifier"></input>   
                <input type="submit" id="updButton-<?php echo $afficher->idPersonne; ?>" class="btn btn-danger" name="updButton" value="Mettre a jour"></input>
     
          </form>
     
          </div>
     
        </div>
      </div>
    </div>
     
    </td>
    * Quand plusieurs éléments nécessitent un même attribut (pour modifier un style CSS, par exemple), on utilise une classe : <... class="...">.
    Dernière modification par Invité ; 09/02/2019 à 16h50.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur .NET/PHP/JAVA/C++
    Inscrit en
    Septembre 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur .NET/PHP/JAVA/C++

    Informations forums :
    Inscription : Septembre 2017
    Messages : 13
    Points : 21
    Points
    21
    Par défaut
    Bonjour, Votre code qui est le suivant
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $update = $pdo->exec("UPDATE personne SET prenom = '$_POST[newP]' WHERE idPersonne = '$_POST[maj]'");
    .
    Ne peut pas marcher. vous devez apprendre à faire des requête préparer. Il existe des cours sur le site https://php.developpez.com/cours/

  4. #4
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2018
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    1) Oui j'ai appris a faire des requêtes préparées mais c'est la première foi que je dois en créer tout seul et je ne suis pas totalement à l'aise avec.

    2)
    • Je ne suis pas sure de comprendre j'ai bien mis le formulaire dans la <div class ="modal-body"> </div>


      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
      <td id="modalUpdate">
      <!-- Button trigger modal -->
      <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#modif">
        Modifier
      </button>
       
       
       
      <!-- Modal UPDATE-->
      <div class="modal fade" id="modif" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
        <div class="modal-dialog" role="document">
          <div class="modal-content">
       
            <div class="modal-body">
            <form method="POST" action="">
       
       
                  <input type="hidden" name="maj" value="<?php $afficher->idPersonne; ?>"></input>
       
                  <!-- Le prenom est toujour le meme :( --> 
                  <input type="text" name="newP" id ="newP" value ="<?php echo $afficher->prenom ?>"></input>
       
       
                  <input type="submit" id="updButton" class="btn btn-danger" name="updButton" value="Mettre a jour"></input>
       
            </form>
       
       
            </div>
       
          </div>
        </div>
      </div>
       
      </td>
    • D'accord cependant j'ai un souci quand je modifie un prénom c'est systématiquement celui tout en haut de la liste qui est modifié j'arrive pas a faire en sorte que un le bonne idPersonne soit retourné. Je sais qu'il y a un problème dans ma requête mais je sèche totalement je dois avouer.

      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      $update = $pdo->exec("UPDATE personne SET prenom = '$_POST[newP]' WHERE idPersonne = '$_POST[maj]'");




    Voici une capture d’écran de mon site. A chaque foi que je clique sur un bouton modifier (n'importe lequel) il y a le modal qui affiche mon formulaire correctement mais avec le prénom faycal, j'imagine que ma requête renvoi toujours l'idPersonne = 6 mais je vois pas comment changer ça. Pour info j'ai procédé de la même manière pour la requête DELETE et j'ai eu aucun soucis.

    Nom : CRUD.png
Affichages : 1741
Taille : 96,2 Ko

  5. #5
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2018
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par haskey Voir le message
    Bonjour, Votre code qui est le suivant
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $update = $pdo->exec("UPDATE personne SET prenom = '$_POST[newP]' WHERE idPersonne = '$_POST[maj]'");
    .
    Ne peut pas marcher. vous devez apprendre à faire des requête préparer. Il existe des cours sur le site https://php.developpez.com/cours/
    Bonjour,

    Merci pour votre commentaire justement il s'agit d'un exercice pour apprendre a maitriser les requête SQL, le Php et le front je suis actuellement en formation

  6. #6
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2018
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Désolé pour ma précédente réponse j'avais pas actualisé la page !

    Ok je crois avoir compris une de mes nombreuses erreurs (concernant les id notamment ) je vérifie tous ça
    Merci

  7. #7
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2018
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    ...

    Merci 1000 fois ça fonctionne parfaitement maintenant il faut que je fasse ça pour toutes mes tables mais j'ai compris mon erreur !

  8. #8
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2018
    Messages : 1
    Points : 4
    Points
    4
    Par défaut Génial!
    Citation Envoyé par jreaux62 Voir le message
    Bonjour,

    1-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        $update = $pdo->exec("UPDATE personne SET prenom = '$_POST[newP]' WHERE idPersonne = '$_POST[maj]'");
    Vous avez appris à faire des requêtes préparées, ou pas ??



    2- Comme tu es dans une boucle (while), on ne peut pas mettre le même attribut id * (id="modif", id="dellButton", id="modalUpdate", ...), car il va se répéter.
    Or, un id DOIT être unique.

    On peut par contre utiliser l'id de la personne (AUTO-INCREMENTE, donc UNIQUE), pour identifier formellement chaque élément :

    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
    <td id="modalUpdate-<?php echo $afficher->idPersonne; ?>">
    <!-- Button trigger modal -->
    <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#modif-<?php echo $afficher->idPersonne; ?>">
      Modifier
    </button>
     
     
    <!-- Modal UPDATE-->
    <div class="modal fade" id="modif-<?php echo $afficher->idPersonne; ?>" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
      <div class="modal-dialog" role="document">
        <div class="modal-content">
     
          <div class="modal-body">
          <form method="POST" action="">
     
                <input type="hidden" name="maj" value="<?php echo $afficher->idPersonne; ?>"></input>
                <input type="text" name="newP" id="newP-<?php echo $afficher->idPersonne; ?>" value ="Prenom a modifier"></input>   
                <input type="submit" id="updButton-<?php echo $afficher->idPersonne; ?>" class="btn btn-danger" name="updButton" value="Mettre a jour"></input>
     
          </form>
     
          </div>
     
        </div>
      </div>
    </div>
     
    </td>
    * Quand plusieurs éléments nécessitent un même attribut (pour modifier un style CSS, par exemple), on utilise une classe : <... class="...">.
    J'avais le même problème, et ce post l'a résolu! quel bonheur... merci

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

Discussions similaires

  1. [MySQL] Requetes SQL UPDATE sur deux table.
    Par makamine dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 20/05/2011, 01h52
  2. [AC-2003] probleme de requete sql update
    Par jmsamson dans le forum VBA Access
    Réponses: 1
    Dernier message: 18/05/2011, 15h01
  3. Requete Sql update sur les valeurs
    Par malayika dans le forum Requêtes
    Réponses: 4
    Dernier message: 03/07/2010, 14h48
  4. probleme de requete sql update en VBA
    Par alexkickstand dans le forum VBA Access
    Réponses: 4
    Dernier message: 23/10/2007, 16h44
  5. [MySQL] probleme de requete sql dans mon php
    Par carmen256 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 14/04/2006, 01h30

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