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

  1. #1
    Membre habitué
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Points : 146
    Points
    146
    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 averti 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
    Points : 392
    Points
    392
    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.
    Le but de tout developpeur OO est de devenir une référence.
    Mon avatar est un ambigramme, les curieux peuvent le retourner ;-)
    Aider <> Faire a la place de!!!

  3. #3
    Membre habitué
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Points : 146
    Points
    146
    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 habitué
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Points : 146
    Points
    146
    Par défaut
    comment puis je mettre "UNIQUE " lors des modifications?

  5. #5
    Membre éclairé 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
    Points : 846
    Points
    846
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     mysql_query("ALTER TABLE ADD UNIQUE col_name)
    voilà.
    Chaque problème a une solution, mais il est plus facile de répondre si le problème est correctement renseignés

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

  7. #7
    Membre actif
    Inscrit en
    Septembre 2005
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 185
    Points : 220
    Points
    220
    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
    la succession d'évènement que nous subissons toute notre vie n'est qu'un phénomène de compensation dont la nature en est l'arbitre.[Inéluctabilité de la nature ] Polace

  8. #8
    Membre habitué
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Points : 146
    Points
    146
    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 actif
    Inscrit en
    Septembre 2005
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 185
    Points : 220
    Points
    220
    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
    )
    la succession d'évènement que nous subissons toute notre vie n'est qu'un phénomène de compensation dont la nature en est l'arbitre.[Inéluctabilité de la nature ] Polace

  10. #10
    Membre habitué
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Points : 146
    Points
    146
    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 régulier
    Inscrit en
    Octobre 2004
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 172
    Points : 122
    Points
    122
    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 habitué
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Points : 146
    Points
    146
    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