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 :

Contrôler les modification apportées [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é
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Par défaut Contrôler les modification apportées
    bonjour,
    je voudrai controler les modifications apportées à mes enregistrments:
    j'ai écris le requete ci-dessous
    j'ai constaté:
    1/-que lorsque les zones de texte login et mdp sont modifées, la modification est effectué (pas de problème à ce niveau)
    2/- lorsque l'une des 2 zones de texte est modifiés, il n'ya pas également de problème
    3/- lorsque le login est modifié et que un login semblable existe dans la base, la mise à jour passe, normalement, pour ce cas, elle ne devait pas passer. comment faire pour empecher la mise lorsque l'enregistrement existe déjà dans 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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    if ( isset($_POST['login']) and isset ($_POST['mdp']) )
    {
    mysql_select_db($database_connection, $connection);
    //$query_rsut = sprintf("SELECT * FROM utilisateurs WHERE login = '%s'", $colname_rsut);
     
    $query_rsut ="SELECT * FROM utilisateurs WHERE login = '".$_POST['login']."'  and mdp='".$_POST['mdp']."'  ";
    $rsut = mysql_query($query_rsut, $connection) or die(mysql_error());
    $row_rsut = mysql_fetch_assoc($rsut);
    $totalRows_rsut = mysql_num_rows($rsut);
    }
     
    if ($totalRows_rsut>0)
          {
    	  $message = 'Ce utilisateur existe déjà. Modiffication impossible.';
    	  //AppelPage('ajoutclient.php');
    	  }
    else
    {
     
    $editFormAction = $HTTP_SERVER_VARS['PHP_SELF'];
    if (isset($HTTP_SERVER_VARS['QUERY_STRING'])) {
      $editFormAction .= "?" . $HTTP_SERVER_VARS['QUERY_STRING'];
    }
     
    if ((isset($HTTP_POST_VARS["MM_update"])) && ($HTTP_POST_VARS["MM_update"] == "form1")) {
      $updateSQL = sprintf("UPDATE utilisateurs SET login=%s, mdp=%s WHERE NumUtil=%s",
                           GetSQLValueString($HTTP_POST_VARS['login'], "text"),
                           GetSQLValueString($HTTP_POST_VARS['mdp'], "text"),
                           GetSQLValueString($HTTP_POST_VARS['NumUtil'], "int"));
     
      mysql_select_db($database_connection, $connection);
      $Result1 = mysql_query($updateSQL, $connection) or die(mysql_error());
     
      $updateGoTo = "gererutilisateur.php";
      if (isset($HTTP_SERVER_VARS['QUERY_STRING'])) {
        $updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?";
        $updateGoTo .= $HTTP_SERVER_VARS['QUERY_STRING'];
      }
      header(sprintf("Location: %s", $updateGoTo));
    }
     
    }

  2. #2
    Membre chevronné Avatar de XtofRoland
    Profil pro
    Inscrit en
    Août 2005
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 357
    Par défaut
    met une contrainte unique sur le champs mdp
    ou fait un select * where ton mdp = nouveaumdp si ca ramene qqc ca existe deja.

  3. #3
    Membre éclairé
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Par défaut
    1/- proposition sur unique: se met uniquement à la création. est ce possiuble lors d'une modification?
    2/- pour la 2eme proposition, j'ai mis le code ci dessous au dessus de celui posté dans le 1er post:
    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
    $colname_rsutil = "1";
    if (isset($HTTP_GET_VARS['login'])) {
      $colname_rsutil = (get_magic_quotes_gpc()) ? $HTTP_GET_VARS['login'] : addslashes($HTTP_GET_VARS['login']);
    }
    mysql_select_db($database_connection, $connection);
    $query_rsutil = sprintf("SELECT * FROM utilisateurs WHERE login = %s", $colname_rsuti);
    $rsutil = mysql_query($query_rsutil, $connection) or die(mysql_error());
    $row_rsutil = mysql_fetch_assoc($rsutil);
    $totalRows_rsutil = mysql_num_rows($rsutil);
     
    if ($totalRows_rsutil>0)
          {
    	  $message = 'Ce utilisateur existe déjà1. Modiffication impossible.';
    	  //AppelPage('ajoutclient.php');
    	  }
    else
    {code du 1er post}

  4. #4
    Membre éclairé
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Par défaut
    comment puis je mettre "UNIQUE " lors des modifications?

  5. #5
    Membre émérite Avatar de Yobs
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    675
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 675
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     mysql_query("ALTER TABLE ADD UNIQUE col_name)
    voilà.

  6. #6
    Membre éclairé
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Par défaut
    est ce que cela pourrait résoudre mon problème?
    mysql_query("ALTER TABLE ADD UNIQUE col_name)

  7. #7
    Membre expérimenté
    Inscrit en
    Septembre 2005
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 185
    Par défaut
    Cari il te faut ajouter la contrainte UNIQUE à ta colonne mdp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     mysql_query("ALTER TABLE nom_table  ADD UNIQUE mdp)
    ça devrait résoudre ton problème

  8. #8
    Membre éclairé
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Par défaut
    j'ai modifié le champ login en faisant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ALTER TABLE `utilisateurs` ADD UNIQUE (
    `mdp`
    )
    voici le message que je recois lorsque il ya dupplication de login. En réalité moi meme je préfère gérer ces doublons en empéchant l'enregistrement et en envoyant un message personnalisé:
    Duplicata du champ 'mo' pour la clef 2

  9. #9
    Membre expérimenté
    Inscrit en
    Septembre 2005
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 185
    Par défaut
    cari essaye ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ALTER TABLE utilisateurs  ADD CONSTRAINT unimdp UNIQUE (
    mdp
    )

  10. #10
    Membre éclairé
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Par défaut
    bonjour, je reviens parceque je préfère travailler avec les requetes.
    dans la ensemble, les tests avants la modifications tournent bien. ce qui m'embete, c'est que lorsque l'utilisateur existe dèja dans la base, la mise à jour se fait. Comment faire pour empêcher la modification lorsque on saisit un utilisateur existant?
    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
    if ($totalRows_rsutilisateur==0 )
       {    
      	 //$message=$totalRows_rsutilisateur.'Cet login existe dèjà dans la base. Modification non effectuée'; 
    	 $message=$totalRows_rsutilisateur.'Vous ne pouvez modifier un login utilisateur. Modification non effectuée'; 
       }
    else
    {
    	if  ( (isset ($_POST['login'])) and (isset($_POST['mdp'])) )
    	{
     
    	mysql_select_db($database_connection, $connection);
    	$query_rsut = "SELECT * FROM utilisateurs WHERE login = '".$_POST['login']."' and mdp='".$_POST['mdp']."' ";
    	$rsut = mysql_query($query_rsut, $connection) or die(mysql_error());
    	$row_rsut = mysql_fetch_assoc($rsut);
    	$totalRows_rsut = mysql_num_rows($rsut);
     
    	if ($totalRows_rsut==0)
          {
    	  //if ($totalRows_rsutilisateur>0 )
     //{
      //	$message=$totalRows_rsutilisateur.'Ce login existe dèjà dans la base. Modification non effectuée'; 
     
    // }
     
     
     
    		if ((isset($HTTP_POST_VARS["MM_update"])) && ($HTTP_POST_VARS["MM_update"] == "form1")) {
    				  $updateSQL = sprintf("UPDATE utilisateurs SET login=%s, mdp=%s WHERE NumUtil=%s",
    							   GetSQLValueString($HTTP_POST_VARS['login'], "text"),
    							   GetSQLValueString($HTTP_POST_VARS['mdp'], "text"),
    							   GetSQLValueString($HTTP_POST_VARS['NumUtil'], "int"));
     
    				  mysql_select_db($database_connection, $connection);
    				  $Result1 = mysql_query($updateSQL, $connection) or die(mysql_error());
    				  if ($Result1>0)
    				   {
    						 $message=$totalRows_rsutilisateur.'Modification effectuée!'.$totalRows_rsut ;
    				   }
    				   else
    				   {
    						 $message='Il y\'a un problème au niveau de l\'exécution de la requête';
    				   }
    				  $updateGoTo = "gererutilisateur.php?message=".urlencode($message);
    				  if (isset($HTTP_SERVER_VARS['QUERY_STRING'])) {
    					$updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?";
    					$updateGoTo .= $HTTP_SERVER_VARS['QUERY_STRING'];
    				  }
    					header(sprintf("Location: %s", $updateGoTo));
    			}
     
    		}
      else
    	 {
    	$message='Aucune modification effectuée !';
     
    	}
      }
     
    } 
     
    }

  11. #11
    m@t
    m@t est déconnecté
    Membre confirmé
    Inscrit en
    Octobre 2004
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 172
    Par défaut
    Si j'ai bien compris ton problème tu ne voudrais pas qu'un utilisateur puisse modifier son login avec un login qui existe déjà dans la base de données ?

    Si c'est bien ça tu devras effectuer un test du genre avant d'effectuer ton update :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select id from utilisateur where id <> id and login = $login
    Et tester si tu as des résultats

  12. #12
    Membre éclairé
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Par défaut
    merci. ça marche m@t.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/02/2011, 00h03
  2. Réponses: 2
    Dernier message: 11/10/2008, 18h05
  3. Réponses: 3
    Dernier message: 23/07/2007, 10h51
  4. Annuler les modifications apportées à une table.
    Par PadawanDuDelphi dans le forum Bases de données
    Réponses: 5
    Dernier message: 18/10/2006, 09h26

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