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 :

Comparaison Variables avec Champs BDD [PDO]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2013
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2013
    Messages : 116
    Points : 55
    Points
    55
    Par défaut Comparaison Variables avec Champs BDD
    Bonjour à tous,

    Je ne sais pas si ma demande a déjà été traiter dans une discussion mais je pose quand même...

    J'ai un formulaire avec INSERTION , MODIFICATION qui marche Nickel....

    L'insertion Lors de la première entrer ce fais dans une table utilisateur,
    et l'update aussi =)

    Ma question : Mon tuteur de stage m'a demander si lorsque un admin Modifie un champs (nom, prénom ...), d'avoir un message sur un dashboard montrant quel(s) champ(s) ont été modifié(s)...

    Donc j'ai crée une autre table Modification avec plusieurs colonnes et après plusieurs test je n'ai pas réussi à aboutir....

    Voici le code de la modification :

    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
    <?php
    include'connect.php';
     
    $sql = "UPDATE personnes SET 
        id=:id,
        nom=:nom, 
        prenom=:prenom, 
        adresse=:adresse, 
        cp=:cp, 
        status=:status
    WHERE id = :id";
     
    $stmt = $pdo->prepare($sql); 
     
    $stmt->bindParam(':id', $_POST['id'], PDO::PARAM_INT); 
    $stmt->bindParam(':nom', $_POST['nom'], PDO::PARAM_STR);      
    $stmt->bindParam(':prenom', $_POST['prenom'], PDO::PARAM_STR);   
    $stmt->bindParam(':adresse', $_POST['adresse'], PDO::PARAM_STR); 
    $stmt->bindParam(':cp', $_POST['cp'], PDO::PARAM_STR);
    $stmt->bindParam(':status', $_POST['status'], PDO::PARAM_STR); 
     
    $stmt->execute(); 
     
    ?>

    J'espère que j'ai été assez clair =)

    Merci de vos réponse

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

    Si la question est de ré-afficher la dernière fiche créée (après INSERT) :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	// id de la dernière fiche créée
    	$lastId = $pdo->lastInsertId('id');
    Pour une modification (UPDATE) tu as déjà l'id : $_POST['id']

    Il suffit alors d'afficher la fiche concernée.
    Dernière modification par Invité ; 13/08/2013 à 12h29.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Points : 1 101
    Points
    1 101
    Par défaut
    Avant le code de modification, tu peux crée un petit code qui vérifier ce qu'est modifier.
    - Récupère les donnés depuis la base
    - boucle sur ces donné et les comparer avec les nouveaux, si il y a une différence enregistre le nom du champ dans un nouveau array.

    a la fin tu aura un array qui contient les nom des colonne modifier.

  4. #4
    Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2013
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2013
    Messages : 116
    Points : 55
    Points
    55
    Par défaut
    Bonjour à tous,


    Voilà ici j'ai le code d'insertion :

    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
     
     
    if (isset($_POST['inserer'])) {
     
      $id=$_POST['id'];
      $nom=$_POST['nom'];
      $prenom=$_POST['prenom'];
      $adresse=$_POST['adresse'];
      $code=$_POST['cp']; 
      $status=$_POST['status'];
    }  
     
     
    $req=$pdo->prepare("INSERT INTO personnes VALUES (?,?,?,?,?,?)");
     
    $req->bindParam(1, $id,PDO::PARAM_INT);
    $req->bindParam(2, $nom,PDO::PARAM_STR);
    $req->bindParam(3, $prenom,PDO::PARAM_STR);
    $req->bindParam(4, $adresse,PDO::PARAM_STR);
    $req->bindParam(5, $code,PDO::PARAM_STR);
    $req->bindParam(6, $status,PDO::PARAM_STR);
     
    $req->execute();

    Puis le code d'affichage de la base :


    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
    $vue=$pdo->prepare("SELECT * FROM personnes");
     
     
    $vue->execute(array('id','nom','prenom','adresse','cp','status'));
     
    	echo'<table style="width:55%; margin: 40px 0 0 3%" class="table table-striped">
    					<tr align="center" height="40">
    						<th>Nom</th>
    						<th>Prénom</th>
    						<th>Adresse</th>
    						<th>Code Postal</th>
    						<th>Status</th>
    						<th></th>
    						<th></th>
    					</tr>';
     
     
     
     				foreach ($vue as $value) {
     
    					echo "<tr>";
    						echo "<td>".$value['nom'].'&nbsp'."</td>";
    						echo "<td>".$value['prenom'].'&nbsp'."</td>";
    						echo "<td>".$value['adresse'].'&nbsp'."</td>";
    						echo "<td>".$value['cp'].'&nbsp'."</td>";
    						echo "<td>".$value['status'].'&nbsp'."</td>";
    						echo "<td><a href=modif.php?idPersonne=".$value['id'].">Modifier</a></td>.&nbsp";
    						echo "<td><a href=# onClick=confirme('".$value['id']."')>Supprimer</a></td>.&nbsp";
    					echo"</tr>";
     
    							}
    		echo "</table>";

    et ici je récupère la ligne du tableau que je veux modifier :

    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
    $id  = $_GET["idPersonne"] ;
     
     
    $sql = $pdo->prepare('SELECT * FROM personnes WHERE id = ?');
    $sql->execute(array($id));
     
     
    foreach ($sql as $value) {
     
      ?>
     
     
     
     
    <html>
      <head>
        <title>modification de données en PHP :: partie2</title>
      </head>
    <body>
     
     
      <form name="insertion" action="modif2.php" method="POST">
     
      <input type="hidden" name="id" value="<?php echo $value['id'];?>">
     
     
      <table border="0" align="center" cellspacing="2" cellpadding="2">
     
         <div class="form-group">
     
        <tr align="center">  
          <td>Nom</td>
          <td><input class="form-control" type="text" name="nom" value="<?php echo $value['nom'];?>"></td>
        </tr>
     
     
        <tr align="center">
          <td>Prenom</td>
          <td><input class="form-control" type="text" name="prenom" value= "<?php echo $value['prenom'];?>"></td>
        </tr>
     
     
     
        <tr align="center">
          <td>Adresse</td>
          <td><input class="form-control" type="text" name="adresse" value= "<?php echo $value['adresse'];?>"></td>
        </tr>
     
     
     
        <tr align="center">
          <td>Code Postal</td>
          <td><input class="form-control" type="text" name="cp" value= "<?php echo $value['cp'];?>"></td>
        </tr>
     
     
     <tr align="center">
          <td>Status</td>
          <td><input class="form-control" type="text" name="status" value= "<?php echo $value['status'];?>"></td>
        </tr>
     
          <td colspan="2"><input style="margin:15px 0 0 45%" class="btn btn-info" type="submit" name"modif" value="modifier"></td>
        </tr>
      </table>
    </form>
     
    <?php   }?>
    et donc d'après ce que tu dit m4riachi

    c'est entre le code de récupération de la ligne à modifier et la confirmation
    que je dois faire mon test ?

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Citation Envoyé par corv0 Voir le message
    ... lorsque un admin Modifie un champs (nom, prénom ...), avoir un message sur un dashboard montrant quel(s) champ(s) ont été modifié(s)...
    Peux-tu PRÉCISER ce que tu veux obtenir :
    - UNIQUEMENT les champs modifiés
    - TOUS les champs (fiche complète)
    - TOUS les champs, avec les champs modifiés en rouge (par exemple)

    Si possible montre-nous un exemple du résultat souhaité.

  6. #6
    Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2013
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2013
    Messages : 116
    Points : 55
    Points
    55
    Par défaut
    Nom : DEVELOPPEZ.png
Affichages : 852
Taille : 28,3 Ko

    Voilà et enfin dans le dashboard, oui soit mettre les champs qui ont changer en rouge ou que ce qui ont été modifiés

  7. #7
    Invité
    Invité(e)
    Par défaut
    Une méthode :
    1/ FORMULAIRE : des input cachés
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <input type="hidden" name="nom_avant" value="<?php echo $row['nom']; ?> />
    <input type="hidden" name="prenom_avant" value="<?php echo $row['prenom']; ?> />
    <input type="hidden" name="adresse_avant" value="<?php echo $row['adresse']; ?> />
    <input type="hidden" name="cp_avant" value="<?php echo $row['cp']; ?> />
    <input type="hidden" name="status_avant" value="<?php echo $row['status']; ?> />
    2/ TRAITEMENT :
    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
      // champs avant
      $nom_avant=$_POST['nom_avant'];
      $prenom_avant=$_POST['prenom_avant'];
      $adresse_avant=$_POST['adresse_avant'];
      $code_avant=$_POST['cp_avant']; 
      $status_avant=$_POST['status_avant'];
      // champs après
      $nom=$_POST['nom'];
      $prenom=$_POST['prenom'];
      $adresse=$_POST['adresse'];
      $code=$_POST['cp']; 
      $status=$_POST['status'];
      // COMPARAISON :
      $champs_modifies = array();
      if($nom_avant != $nom){
    	$champs_modifies['nom'] = true; // par exemple
      } else {
    	$champs_modifies['nom'] = false;
      }
      // ........
    On peut tout aussi bien enregistrer les valeurs "avant" dans des SESSION, et les comparer aux valeurs reçues après.

  8. #8
    Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2013
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2013
    Messages : 116
    Points : 55
    Points
    55
    Par défaut
    D'accord je vais tester tout de suite

  9. #9
    Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2013
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2013
    Messages : 116
    Points : 55
    Points
    55
    Par défaut
    Je n'ai toujours pas réussi à faire marcher se BINSS de code
    J'ai essayer avec les input hidden mais rien ne fait =(

  10. #10
    Invité
    Invité(e)
    Par défaut
    • Remontre ton code
    • + code source (html) généré (celui affiché par le navigateur
    • + var_dump(des_variables) -> ça donne quoi ?

  11. #11
    Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2013
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2013
    Messages : 116
    Points : 55
    Points
    55
    Par défaut
    Juste avant que j'envoi les screen c'est bien la syntaxe là que tu m'avais envoyer et à mettre en forme ??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <tr align="center">  
          <td>Nom</td>
          <td><input class="form-control" type="text" name="nom" value="<?php echo $value['nom'];?>"></td>
        </tr>
     
    <input type="hidden" name="hidden_input" value="nom"/>
    et le traitement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $valeur_input = $_GET['input'];
    $valeur_input_hidden = $_GET['hidden_input'];
     
    $valeur_input = (isset($_GET['input']) ? $_GET['input'] : '' ;
     
    if (valeur_hidden != valeur_input) {
     
    tableau['input_old'] = $valeur_hidden; $tableau['input_new'] = $valeur_input;
    }

  12. #12
    Invité
    Invité(e)
    Par défaut
    Champion du Monde !!
    C'est du Grand N'importe Quoi, ce que tu nous mets là !

    Pour ma part :
    "No hablo portnawak"
    Ce n'était pourtant pas compliqué de reprendre ce que j'ai écrit ici.
    Ca ne demande pas un gros effort d'adaptation ! ($row à remplacer par $value !)

    N.B. Et puis $_GET alors qu'on a <form ... method="POST"> : est-ce bien raisonnable ?

  13. #13
    Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2013
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2013
    Messages : 116
    Points : 55
    Points
    55
    Par défaut
    J'ai rien dit nickel tout marche =)

    UP UP !!!!!!

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 20/04/2015, 14h24
  2. Réponses: 8
    Dernier message: 30/05/2011, 17h41
  3. Comparaison d'un variable avec valeur dans BDD
    Par voyageurdumonde dans le forum Langage
    Réponses: 9
    Dernier message: 15/09/2010, 17h51
  4. Variable avec champ d'image
    Par MyStiK_Leeloo dans le forum Langage
    Réponses: 9
    Dernier message: 19/11/2008, 19h36
  5. Réponses: 1
    Dernier message: 01/05/2008, 00h10

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