Insertion dans une table avec condition

Résolu
Bonjour,
je veux insérer une valeur avec insert into dans une table mais j'ai une condition a ajouter je ne sais pas comment faire cela , pourrai je avoir un coup de main svp!!.
il m'insert pas dans la colone mdp. je veux qu'il insert un mot de passe pour chaque utilisateur qui va creer son mdp
<?php
if(isset($_POST['Valider']))
{
    $email=$_POST['email_p'];
    $mdp=sha1($_POST['password']);
    $mdconf=sha1($_POST['confpassword']);
include('codes/bdcon.php');
    // Vérification de l'element existant
$req1= $bdd ->query('SELECT id_uti from utilisateur where email="'.$email.'" ');
$resultat = $req1->fetch();
if ($resultat AND $mdp==$mdconf)
{ 
    include('codes/bdcon.php');
        
                                         
    
   $reponse = $bdd->query('INSERT INTO utilisateur (mdp)
               VALUE("'.$mdp.'")');
echo '<font >compte activé! </font>';

}    
                else {
                        echo '<font color="red"> mot de passe différent ou email incorrect</font>  ';
                    }

  }  
?>

5 réponses

  1. 
    <?php
    // Connexion a la base de Données
    try
    {
    $bdd= new PDO('mysql:host=localhost; dbname=gestpiece', 'root','',array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
    	
    } // cas d'erreur
    catch(Exception $e)
    {
    	die('Erreur:'.$e->getMessage());
    }
    ?>
    
    1. <!DOCTYPE html>
      
      <html>
      <head>
          <link rel="stylesheet" href="css/style.css">
          <title>GP_CHU</title>
      </head>
      <body>
          <form method="post" action="#">
      <body onload="window.location.href = '#openModal';"> 
          <div id="openModal" class="modalDialog">
              <div>
                <div align="right"> 
                <h2>Création de mot de passe</h2>
         <table border="0">
            <tr><td>Email <em>*</em></td>
             <td><input type="Email" placeholder="Email" name="email_p" id="email_p"></td>
               
           </tr>
               <?php include("js/espace.js"); ?>
         <tr><td>Mot de passe<em>*</em></td>
             <td><input type="password" name="password" required maxlenght="9" onkeydown='return sansEspace();' ></td>
           </tr>
            <tr><td>confirmation Mot de passe <em>*</em></td>
             <td><input type="password" name="confpassword" maxlenght="9" onkeydown='return sansEspace();'></td>
           </tr>
           </tr>
           </tr>
           </table>
          <p>
          Les champs (<em>*</em> ) sont obligatoires!!!<br> 
            </p>
              <input type="submit" name="Valider">
            
          <?php
      if(isset($_POST['Valider']))
      {
          $email=$_POST['email_p'];
          $mdp=sha1($_POST['password']);
          $mdconf=sha1($_POST['confpassword']);
      include('codes/bdcon.php');
      $req1= $bdd ->query('SELECT id_uti from utilisateur where email="'.$email.'" ');
      $resultat = $req1->fetch();
      if ($resultat AND $mdp==$mdconf)
      {                                 
          //préparation de la requête
      $sql = " UPDATE utilisateur SET mdp = :mdp WHERE  id_uti = :id_uti ";
      $datas = array('id_uti'=>$resultat['id_uti'] , ':mdp'=>$mdp);
      //on exécute la requête
      try{
        $prepare = $bdd->prepare($sql);
        $reponse = $prepare->execute($datas);
      }catch(Exception$e){
        //en cas de souci dans la requete
        echo "Erreur ! ". $e->getMessage();
      
      }    
             
      }
      ?>
      
      
          </div>
      
      </form>
      </body>
      </html>
      
      1. j'ai inseré dans apres le if mais cela ne marche pas
        1. Modérateur
          Tu peux me montrer le code complet ?
          Y compris celui de la connexion à la bdd.
          Merci
      2. Modérateur
        Bonjour,

        Tu veux renseigner le mot de pass sur des UTILISATEURS déjà existants ???
        Ce n'est donc pas un INSERT que tu dois faire .. mais un UPDATE;

        De plus, pour éviter les soucis d'injection SQL.. il vaut mieux utiliser les requêtes préparées.
        Sans oublier un bloc try/catch pour intercepter les éventuelles erreurs....

        //préparation de la requête
        $sql = " UPDATE utilisateur SET mdp = :mdp WHERE  id_uti = :id_uti ";
        $datas = array('id_uti'=>$resultat['id_uti'] , ':mdp'=>$mdp);
        
        //on exécute la requête
        try{
          $prepare = $bdd->prepare($sql);
          $reponse = $prepare->execute($datas);
        }catch(Exception$e){
          //en cas de souci dans la requete
          echo "Erreur ! ". $e->getMessage();
        }
        


        NB: Par défaut l'affichage des erreurs pdo n'est pas active...
        Il faut modifier ta connexion comme ceci :
        <?php
        //Fichier de connexion à la bdd : cnxBdd.php
         try{
           $bdd = new PDO("mysql:host=localhost;dbname=tabdd;charset=UTF8", 'user', 'password');
           $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //pour activer l'affichage des erreurs pdo
        } catch(PDOException $e){
             echo 'ERROR: ' . $e->getMessage();
        } 
        

        //en modifiant les infos de connexion à la bdd bien entendu...