Modification d'un enregistrement

zsafae Messages postés 40 Date d'inscription mardi 28 juin 2005 Statut Membre Dernière intervention 12 août 2005 - 8 août 2005 à 16:55
zsafae Messages postés 40 Date d'inscription mardi 28 juin 2005 Statut Membre Dernière intervention 12 août 2005 - 9 août 2005 à 12:40
salut!
je dispose d'une page ou il y a un tableau dynamique qui contient les login qu'il me ramène de la table "administrateur" qui est dans ma base de données,or je vouderai selon les login extraits de la base de données,modifier un champs"password"qui se trouve dans une toute autre table"utilisateur",voici une partie de mon code et qui ne marche pas

$req="select login from administrateur ";
$res=mysql_query($req) or die ("La requête a échoué");
$i=0;
while($i<$lig=mysql_fetch_row($res))
{
$requete="UPDATE utilisateur SET password=$lig[i] " ;
$result=mysql_query($requete) or die ("La requête a échoué");
$i++;
}

Que puis je faire??????
merci d'avance

24 réponses

arnal69130 Messages postés 445 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 22 mars 2007 2
8 août 2005 à 17:00
Qu'est-ce qui ne "marche" pas, quelle est l'erreur affichée ?
Ta requète d'update modifie toutes les lignes de ta table car il n'y a pas de clause where ;o)

Euh : « while($i<$lig=mysql_fetch_row($res)) » je ne pense pas que ça puisse fonctionner comme tu veux.

-> Que veux-ty faire ? Enregistrer les logins lus dans Administrateur comme password dans Utilisateurs, c'est cela ?

Arn;o)
0
zsafae Messages postés 40 Date d'inscription mardi 28 juin 2005 Statut Membre Dernière intervention 12 août 2005
8 août 2005 à 17:12
oui exactement,je vouderai en fait modifier les password qui sont dans la table utilisateurs avec les login de la table administrateur.
je pense que c ma requete qui est fausse(pas de message d'erreur)!
0
arnal69130 Messages postés 445 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 22 mars 2007 2
8 août 2005 à 17:33
Je ne comprends pas. Si la table Utilisateurs est vide, alors utilise une requète INSERT et non pas UPDATE. Si elle n'est pas vide, que veux-tu faire des enregitrements existants ? les remplacer par les logins administrateurs ? les ajouter à la suite ?
Tu as l'air de dire que tu veux modifier les enregistrements, mais alors, il faut qu'il y ait un lien logique entre les 2 tables. Il y en a-t-il un ?
0
davwart Messages postés 855 Date d'inscription mardi 19 novembre 2002 Statut Membre Dernière intervention 28 juillet 2009 1
8 août 2005 à 17:35
perso..je ne comprends rien du tout à ce que tu veux faire.

pourrais tu donner un exemple simple ???

-------------------------------------
Les ordinateurs, plus on s'en sert moins, moins ça a de chance de mal marcher. [Les Shadoks]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
zsafae Messages postés 40 Date d'inscription mardi 28 juin 2005 Statut Membre Dernière intervention 12 août 2005
8 août 2005 à 17:51
voila en detail de quoi je dispose:
j ai une table utilisateurs où sont enregistrés tous les utilisateurs de mon application.si l'un de ces utilisateurs a oublié son mot de passe,j'enregistre son login dans une autre table que j'ai nomé"administrateur",or l'admin qui est aussi un utlisateur a le droit de consulter une page où sont affichés tous les login contenus dans la table administrateur(c a d les login ders utilisateurs ayant oubliés leurs mots de passes),or en clickant sur le boutton ok,l admin devrai reinitialiser les mots de passe qui sont dans la table utilisateur par leurs login,c a d ke si si par exemple X a oublié son mot de passe,j enregistre son login (X) dans la table administrateur,l admin y accède,click sur le bouton OK et le mot de passe deX deviens X
0
arnal69130 Messages postés 445 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 22 mars 2007 2
8 août 2005 à 18:00
Mais pourquoi as-tu 2 tables ? seule la table Utilisateurs suffit, j'imagine qu'elle contient les logins et mots de passe de tous les utilisateurs. Peut-être faut-il alors ajouter une colonne booleen : ReninitialiserMotDePasse. Seuls les administrateurs ont accès à la page qui permet de lister tous les logins dont ReninitialiserMotDePasse vaut vrai.
Je pense que ce serait plus simple comme ça...

Dans tous les cas, il faut mettre une clause where sur la requète de mise à jour du mot de passe !

Arn;o)
0
davwart Messages postés 855 Date d'inscription mardi 19 novembre 2002 Statut Membre Dernière intervention 28 juillet 2009 1
8 août 2005 à 18:02
ok..ton explication edt plus claire.

tu peux faire le tout en une requete:

$sql=mysql_query('update utilisateurs,administrateur set utilisateur.password=utilisateur.login WHERE administrateur.login=utilisateur.login')
0
arnal69130 Messages postés 445 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 22 mars 2007 2
8 août 2005 à 18:04
Quel est le nom de la colonne contenant les login dans la table Utilisateurs ? admettons que ce soit 'login', alors la requète pourait ressembler à :
$requete="UPDATE utilisateur SET password='".$lig[$i]."' WHERE login='".$lig[$i]."'" ;
0
davwart Messages postés 855 Date d'inscription mardi 19 novembre 2002 Statut Membre Dernière intervention 28 juillet 2009 1
8 août 2005 à 18:10
Arnal: si il fait ça, il est obligé de bouclé..et donc de faire N requetes... (N=nombre de users ayant perdu leur password)
0
arnal69130 Messages postés 445 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 22 mars 2007 2
8 août 2005 à 18:16
oui oui, j'avais pas vu ton post avant d'envoyer mon dernier...

Je pense quand même qu'une seule table suffit, avec un champ booléen comme décrit plus haut.
=> je ne suis pas sur de la syntaxe, mais dans l'idée :
$sql=mysql_query('update utilisateurs set utilisateur.password=utilisateur.login, utilisateurs.ReninitialiserMotDePasse=FALSE WHERE utilisateurs.ReninitialiserMotDePasse=TRUE)
0
zsafae Messages postés 40 Date d'inscription mardi 28 juin 2005 Statut Membre Dernière intervention 12 août 2005
8 août 2005 à 18:18
Arnal,c exactement la requete ke j avais faite mais elle ne marche pas voici mon code:

$req="select login from administrateur ";
$res=mysql_query($req);
$i=0;
while($i<$lig=mysql_fetch_row($res))
{
echo "ok".$lig[$i];
$requete="UPDATE utilisateur SET password='".$lig[$i]."' WHERE login=".$lig[$i]."" ;
echo $requete;
$result=mysql_query($requete) or die ("fausse requete");
$i=$i+1;
}

merci bcp pour votre aide...
0
arnal69130 Messages postés 445 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 22 mars 2007 2
8 août 2005 à 18:23
Comme le disais davwart, essaie plutot de faire la requete en 1 seule fois, plutot que d'en faire 2 et de passer par une boucle.
0
zsafae Messages postés 40 Date d'inscription mardi 28 juin 2005 Statut Membre Dernière intervention 12 août 2005
8 août 2005 à 18:37
la requete de davwart est correcte quand je metr echo $requete elle m affiche les enregistrements remplis mais,elle ne modifie rien au niveau de la table utilisateur dans ma base de données
0
arnal69130 Messages postés 445 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 22 mars 2007 2
9 août 2005 à 10:03
As-tu réussi à t'en sortir ? Où en est ton code ?
0
zsafae Messages postés 40 Date d'inscription mardi 28 juin 2005 Statut Membre Dernière intervention 12 août 2005
9 août 2005 à 10:27
bonjour,merci pour votre attention,hèlas je n'ai pas pu m'en sortir,quand je met echo $requete,la requete s'affiche avec les champs remplies mais ca ne me modifie rien au niveau de la base de donnéeS
0
arnal69130 Messages postés 445 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 22 mars 2007 2
9 août 2005 à 10:45
Donnes-nous ton code modifié et copie aussi ici l'affichage de la requète...
On va y arriver, ne désepère pas
0
zsafae Messages postés 40 Date d'inscription mardi 28 juin 2005 Statut Membre Dernière intervention 12 août 2005
9 août 2005 à 10:58
OK,et merci enormément!!

voici mon code:
$req="update utilisateur,administrateur set utilisateur.password=utilisateur.login WHERE administrateur.login=utilisateur.login";
echo $req;
$res=mysql_query($req) or die("impossible d'éxecuter cette requete");

et voila ce que m'affiche la requete:

update utilisateur,administrateur set utilisateur.password=utilisateur.login WHERE administrateur.login=utilisateur.loginimpossible d'éxecuter cette requete
0
davwart Messages postés 855 Date d'inscription mardi 19 novembre 2002 Statut Membre Dernière intervention 28 juillet 2009 1
9 août 2005 à 11:00
affiche l'erreur avec ceci :
$res=mysql_query($req) or die("impossible d'éxecuter cette requete".mysql_error());
0
zsafae Messages postés 40 Date d'inscription mardi 28 juin 2005 Statut Membre Dernière intervention 12 août 2005
9 août 2005 à 11:05
voici le message d'erreur:

update utilisateur,administrateur set utilisateur.password=utilisateur.login WHERE administrateur.login=utilisateur.loginimpossible d'éxecuter cette requeteSomething is wrong in your syntax près de 'administrateur set utilisateur.password=utilisateur.login WHERE ' à la ligne 1
0
zsafae Messages postés 40 Date d'inscription mardi 28 juin 2005 Statut Membre Dernière intervention 12 août 2005
9 août 2005 à 11:58
alors?vous n avez aucune idée sur ce qui ne va pas????????
0
Rejoignez-nous