Insertion dans une table avec condition

Résolu
delavega470 Messages postés 316 Statut Membre -  
delavega470 Messages postés 316 Statut Membre -
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. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    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...
    0
  2. delavega470 Messages postés 316 Statut Membre 48
     
    j'ai inseré dans apres le if mais cela ne marche pas
    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
       
      Tu peux me montrer le code complet ?
      Y compris celui de la connexion à la bdd.
      Merci
      0
  3. delavega470 Messages postés 316 Statut Membre 48
     
    <!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>
    
    0
  4. delavega470 Messages postés 316 Statut Membre 48
     
    
    <?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());
    }
    ?>
    
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. delavega470 Messages postés 316 Statut Membre 48
     
    merci ! problème résolue
    0