Insertion dans une table avec condition [Résolu/Fermé]

Signaler
Messages postés
298
Date d'inscription
dimanche 9 février 2014
Statut
Membre
Dernière intervention
24 mars 2020
-
Messages postés
298
Date d'inscription
dimanche 9 février 2014
Statut
Membre
Dernière intervention
24 mars 2020
-
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

Messages postés
29159
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 août 2020
2 669
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...
Messages postés
298
Date d'inscription
dimanche 9 février 2014
Statut
Membre
Dernière intervention
24 mars 2020
22
j'ai inseré dans apres le if mais cela ne marche pas
Messages postés
29159
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 août 2020
2 669
Tu peux me montrer le code complet ?
Y compris celui de la connexion à la bdd.
Merci
Messages postés
298
Date d'inscription
dimanche 9 février 2014
Statut
Membre
Dernière intervention
24 mars 2020
22
<!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>
Messages postés
298
Date d'inscription
dimanche 9 février 2014
Statut
Membre
Dernière intervention
24 mars 2020
22

<?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());
}
?>
Messages postés
298
Date d'inscription
dimanche 9 février 2014
Statut
Membre
Dernière intervention
24 mars 2020
22
merci ! problème résolue