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 :

soucis de update d'email unique [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mauritanie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 391
    Par défaut soucis de update d'email unique
    bonjour , j ai dans ma table un email qui doit être unique , donc pour ajouter je teste sur la colonne email s'il existe je renvoie l'utilisateur vers la même page pour lui dire qu'il doit choisir un autre email , je le fais sans problème, mais maintenant je veux faire des updates sur cette table :
    par exemple j ai nom, prenom et email à mettre à jour, la encore je dois contrôler l’unicité de l 'email qu il ne doit pas mettre un email qui existe dans la base de données et donc si je veux faire ce controle j aurai un problème par exemple (je veux modifier nom, prenom et email )
    donc lors de la modification je modifié juste le nom et les deux autres je les modifie pas donc mon système va faire des tests sur email et il va trouver ce email existe deja il va pas faire des updates et si je ne contrôle pas l email lors de la modification on pourrais inserer des email qui existe deja dans la base de données

    comment je peux gerer ce probleme et merci d'avance

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2009
    Messages : 116
    Par défaut
    Je pense que le mieux, c'est de montrer un peu de code source des fonctions que tu utilises pour pouvoir t'aider.

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mauritanie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 391
    Par défaut
    merci de votre aide voici mes code :

    mon formulaire update user
    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
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
     
     
     <?php 
     session_start();
     
    		if (isset($_SESSION["identifiant"]) && $_SESSION["niveau"]=="admin") {
     
     
    		  include_once("prepend.inc.php");
     
    		   $iduser=$_GET['Id_users'];
    		   $query= mysql_query("select  * from users where  Id_users='".$iduser."'  ");
     
    		  while($data = mysql_fetch_assoc($query) ) 
         { 
         	 echo'
       <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
            "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
         	 <html>
      <head>
      <title>  Add user </title>
     
      <link rel="stylesheet" href="css/design.css" />
      <script type="text/javascript" src="js/admin.js"></script>
      
      
      </head>
      <body>';
    	     echo' <div id="corps">	';
     
     
              $chemin='../admin/header/';
             include($chemin.'logo.php');
     
              $chemin='../admin/header/';
             include($chemin.'banniere.php');
     
              $chemin='../admin/menu/';
             include($chemin.'menuadmin.php');
     
    		  echo'<div      id="contenu">';  
    		  $chemin='../admin/header/';
             include($chemin.'connecte.php');
         	echo  '<form   class="formadd" action="adduser.php"   method="post" id="enreg">';
     
                        echo'<table>';
                             echo'<caption> Mettre  à jour  Utilisateur <caption>';
                  echo '<tr>
                   <td><label> Login :</label></td>';
                  echo'<td><input type="text"  name="identifiant" required    value="'.htmlentities($data['Identifiant']).'" ></td></tr>';
               echo' <tr>
                    <td><label> Email :</label></td>';
                   echo'<td><input type="text"  name="email" required   value="'.htmlentities($data['email']).'"  ></td></tr>';
     
                   echo'<tr>
                
                    <td><label> Password :</label></td>';
                   echo'<td><input type="password"  name="password" required  value="'.$data['Password'].'" ></td></tr>';
     
                   echo'<tr>
                    
                     
                      <td><label>Comfirmation  Password :</label></td>';
                    echo'<td><input type="password"  name="confirmpassword" required   value="'.htmlentities($data['confirmpassword']).'" ></td></tr>';
     
                    echo"<tr>
                  
                    <td><label> Level :</label></td>";
                   echo"<td><input type='text'  name='level' required  value='".$data['level']."'></td></tr>";
     
                   echo '<tr>
                    
                   <td> <label> Profil :</label></td>';
                    echo' <td> <select name="niveau" >
                                  <option value="user">Utilisateur</option>
                                   <option value="admin">Administrateur</option>
                     </select>
                     </td></tr>
                    <tr>
                    <td></td>
                    <td><button   type="submit"   name="enregistrer"  value="Enregistrer">Mette à jour  </button></td></tr>
                   </table>
             </form>';
                    echo'</div>'; 
                     $chemin='../admin/header/';
             include($chemin.'pied.php');
                     echo '</div>
           </body>
           </html>';
         }
     
     
     
     
     
      ?>
    page de traitement de 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
    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
     <?php 
     session_start();
    
    		if (isset($_SESSION["identifiant"]) && $_SESSION["niveau"]=="admin") {
          
    		
    		  include_once("prepend.inc.php");
    		  
    		               $iduser=  utf8_encode($_POST['Id_users']);
    		               $identifiant=utf8_encode($_POST['identifiant']);
    		                $identifiant= mysql_real_escape_string($identifiant);
    				       $password= md5($_POST['password']);
    				        $password= mysql_real_escape_string($password);
    				       $level=utf8_encode ($_POST['level']);
    				       $email=utf8_encode ($_POST['email']);
    				        $email= mysql_real_escape_string($email);
    				       $confirmpassword=md5($_POST['confirmpassword']);
    				       $confirmpassword = mysql_real_escape_string($confirmpassword);
    				       $niveau=utf8_encode($_POST['niveau']);
    				        $niveau= mysql_real_escape_string($niveau);
    				       $date_creation=date("Y-m-j");
    				       
    				       
    	  if($_POST['password']!=$_POST['confirmpassword'])
    				       {
    				       	         header('Location: updateuser.php?erreur=1');
    				              //  echo"mot passe n'a pas �t� correctement  confirm� ";
    				       }
    				       elseif(!preg_match("/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]{2,}[.][a-zA-Z]{2,4}$/",$email))
                               {
                               	 header('Location: updateuser.php?erreur=2');
                              //  echo "email  non  valide";
                               }
                               
                   elseif ((mysql_num_rows(mysql_query(" select 1 from users where  email='".$email."'  OR Identifiant='".$identifiant."' "))>0))
    		                     	 {
    		                     	 	   header('Location:  updateuser.php?erreur=3');
    		                     	 	//echo" login  ou email  deja  utilis�";
    		                     	 }	  
    	                  else
    	                  {
    		              $queryuser=" update  users  SET 
    		                                       Identifiant='".$identifiant."',
    		                                       Password='".$password."',
    		                                       Level='".$level."',
    		                                       niveau='".$niveau."',
    		                                       email='".$email."',
    		                                       confirmpassword='".$confirmpassword."',
    		                                       date_creation='".$date_creation."',
    		                                       where  Id_users='".$iduser."'
    		                   
    				                       ";
    		                     	
    		                     $GLOBALS['db']->Query($queryuser);
    		                     header ('Location: consulteruser.php');
    	                  }
    		  
    		  } 
    	 else  
    	 {
    	 	   unset ($_SESSION["identifiant"]);
    	          session_destroy();
    	 	   header ('Location: index.php?erreur=2');
    	 }
     ?>
    dans la page de traitment la ou j ai mis en gras : j essaye de tester si le email ou l identifiant est unique ou non avant de modifier

    mais mon problème est que lors de l'ajout j ai traité l'unicité de l'email et de l'identifiant maintenant pour modifier je dois le traité mais si je traite je ne pourrais pas modifier a chaque fois on renvoie vers l'erreur pour dire que l'email doit être unique

    comment je vais gérer l'unicité de l email tout en pouvant modifié

    merci d'avance

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2009
    Messages : 116
    Par défaut
    Tu as déjà une erreur dans ton code source

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     $queryuser=" update  users  SET 
    		                                       Identifiant='".$identifiant."',
    		                                       Password='".$password."',
    		                                       Level='".$level."',
    		                                       niveau='".$niveau."',
    		                                       email='".$email."',
    		                                       confirmpassword='".$confirmpassword."',
    		                                       date_creation='".$date_creation."'
    		                                       where  Id_users='".$iduser."'
    Après date_creation, il y a une virgule qui ne devrait pas figurer


    Et sinon tu peux modifier ta requete comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     select 1 from users where (email='".$email."'  OR Identifiant='".$identifiant."') AND  Id_users<> ".$iduser.'"
    Et même pour être sur, dans ta base mysql, tu peux rendre un champ unique

    Et tu peux toujours améliorer ton code

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mauritanie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 391
    Par défaut
    merci de votre mais cela ne resoud pas mon probleme, j arrive a geré lunicité de email mais mon probleme de pouvoir faire les modification par exemple j ai dans la table

    nom: dddd
    prenom ddd
    email: ddd@gmail.com

    maintenant lorsque je veux modifier par exemple le nom seulement
    apres avoir geré l'unicité de l email j aurai un probleme avec email il va m affiché l erreur suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    login ou email deja utilisé
    qui repond bien a la gestion de l'unicité de l 'email

    merci d'avance

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2009
    Messages : 116
    Par défaut
    Est-ce que tu as bien modifié la deuxieme requete que je t'ai donné?

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

Discussions similaires

  1. Petit souci d'Update sur un GridView
    Par zooffy dans le forum ASP.NET
    Réponses: 1
    Dernier message: 09/02/2010, 11h32
  2. Erreur envoi email uniquement online
    Par antoine1504 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 04/01/2010, 22h36
  3. [SQL] Soucis à l'update d'une requête
    Par Him dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 03/12/2007, 19h13
  4. [Utilisation] Update to revision uniquement sur create et delete de fichiers
    Par stephane.julien dans le forum Subversion
    Réponses: 3
    Dernier message: 03/12/2007, 08h09
  5. Souci avec Update
    Par frandis dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 06/07/2007, 14h13

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