begin process at 2013 06 19 22:24:07
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

MySQL

 > 

Problème requête UPDATE


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème requête UPDATE

mercredi 27 février 2013 à 11:47:29 | Problème requête UPDATE

omlaly

Bonjour,

Je suis confronté à un problème tout bête !

Je voudrais faire une requête SQL de mise à jour de données (donc
Code PHP :
UPDATE
). Je fais un test if et ça ne passe pas dans ce test (je ne sais pas pourquoi)

Quand je l'essaye, je n'ai pas d'erreur (la page est toute blanche) et quand je vais voir sur PHPMyAdmin, la requête SQL n'a pas fonctionné (c'est la même adresse e-mail qu'avant).

Voici le code PHP :
Code PHP :
	$adresse_email = mysql_real_escape_string($_POST['adresse_email']);
	$ancien_password = sha1($_POST['ancien_password']);
	$nouveau_password = sha1($_POST['nouveau_password']);
	$user_pseudo = $_SESSION['user_pseudo'];

	// Mise à jour des données saisies par l'utilisateur

	$query_bon_utilisateur_adresse_email=mysql_query("SELECT * FROM user WHERE user_email = '$adresse_email'") or die('Erreur lors de la mise à jour de l\'adresse e-mail'.mysql_error()); // Envoie une requête à un serveur MySQL
	$query_bon_utilisateur_password=mysql_query("SELECT user_mdp FROM user WHERE user_mdp = '$ancien_password'") or die('Erreur lors de la mise à jour du mot de passe'.mysql_error()); // Envoie une requête à un serveur MySQL
		
	if(mysql_num_rows($query_bon_utilisateur_adresse_email) ==1){ // mysql_num_rows retourne le nombre de lignes d'un résultat MySQL
		mysql_query("UPDATE user SET user_email=\'$adresse_email\' WHERE user_pseudo=\'$user_pseudo\'") or die('Erreur lors de la requête SQL de mise à jour des données saisies par l\'utilisateur (adresse e-mail)'.mysql_error()); // Envoie une requête à un serveur MySQL

		echo "Votre adresse e-mail a été mise à jour avec succès !";
	}

	if(mysql_num_rows($query_bon_utilisateur_password) == 1){ // mysql_num_rows retourne le nombre de lignes d'un résultat MySQL
		mysql_query("UPDATE user SET user_mdp = '$nouveau_password' WHERE user_email = '$adresse_email'") or die('Erreur lors de la requête SQL de mise à jour des données saisies par l\'utilisateur (mot de passe)'.mysql_error()); // Envoie une requête à un serveur MySQL
		echo "Votre mot de passe a été mis à jour avec succès !";
}
}


Voici le CREATE TABLE de la table user :
Code :
CREATE TABLE IF NOT EXISTS `user` (
  `user_id` int(11) NOT NULL AUTO_INCREMENT,
  `user_comptesactives` decimal(10,0) NOT NULL,
  `user_pseudo` varchar(255) CHARACTER SET utf8 NOT NULL,
  `user_mdp` varchar(255) CHARACTER SET utf8 NOT NULL,
  `user_date_inscription` datetime NOT NULL,
  `user_naissance` date NOT NULL,
  `user_email` varchar(255) CHARACTER SET utf8 NOT NULL,
  `user_localisation` varchar(255) CHARACTER SET utf8 NOT NULL,
  `user_profession` varchar(255) CHARACTER SET utf8 NOT NULL,
  `user_avatars` varchar(255) CHARACTER SET utf8 NOT NULL,
  `user_derniere_visite` datetime NOT NULL,
  `user_bannis` int(11) NOT NULL,
  `user_acces` int(1) unsigned NOT NULL DEFAULT '2',
  PRIMARY KEY (`user_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=103 ;


En attendant vos réponses, je continue mes recherches...
Cordialement
mercredi 27 février 2013 à 12:43:23 | Re : Problème requête UPDATE

NHenry

Membre Club Administrateur CodeS-SourceS
Bonjour,

"UPDATE user SET user_email=\'$adresse_email\' WHERE user_pseudo=\'$user_pseudo\'"
Les \ servent à échaper certains caractères, dans ton cas, c'est pas bon :
Si séparateur de chaine ', il faut donc échapper uniquement les \ et les '
Si séparateur de chaine ", il faut donc échapper uniquement les \ et les "

Donc retires les \ à tes \'.
Et réssayes.
Sinon, essayes d'afficher la requête exécutée avec un echo, pour la tester et comprendre.

v----Signature--------v----------------------------------------------
  1. Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.
  2. Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).
  3. En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).
  4. Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés

---
Mon site
mercredi 27 février 2013 à 13:18:31 | Re : Problème requête UPDATE

omlaly

En fait, ça fait le contraire de ce que je veux, je t'explique :
-quand je fais :
Code PHP :
if(mysql_num_rows($query_bon_utilisateur_adresse_email) ==1){
, ça fait rien (page blanche)
-quand je fais :
Code PHP :
if(mysql_num_rows($query_bon_utilisateur_adresse_email) ==0){
, ça m'affiche
Code :
Votre adresse e-mail a été mise à jour avec succès !
.

Quand je vais sur PHPMyAdmin, je vois la nouvelle adresse e-mail.

Voici le code PHP en intégralité :
Code PHP :
// On ouvre la session
session_start(); // Démarre une nouvelle session ou reprend une session existante

	$adresse_email = $_POST['adresse_email'];
	$ancien_password = sha1($_POST['ancien_password']);
	$nouveau_password = sha1($_POST['nouveau_password']);
	$user_pseudo = $_SESSION['user_pseudo'];

	// Mise à jour des données saisies par l'utilisateur

	$query_bon_utilisateur_adresse_email=mysql_query("SELECT * FROM user WHERE user_email = '$adresse_email'") or die('Erreur lors de la mise à jour de l\'adresse e-mail'.mysql_error()); // Envoie une requête à un serveur MySQL
	$query_bon_utilisateur_password=mysql_query("SELECT user_mdp FROM user WHERE user_mdp = '$ancien_password'") or die('Erreur lors de la mise à jour du mot de passe'.mysql_error()); // Envoie une requête à un serveur MySQL
		
	if(mysql_num_rows($query_bon_utilisateur_adresse_email) ==1){ // mysql_num_rows retourne le nombre de lignes d'un résultat MySQL
		$affichage = mysql_query("UPDATE user SET user_email='$adresse_email' WHERE user_pseudo='$user_pseudo'") or die('Erreur lors de la requête SQL de mise à jour des données saisies par l\'utilisateur (adresse e-mail)'.mysql_error()); // Envoie une requête à un serveur MySQL

	echo "Votre adresse e-mail a été mise à jour avec succès !";
	}

	if(mysql_num_rows($query_bon_utilisateur_password) == 1){ // mysql_num_rows retourne le nombre de lignes d'un résultat MySQL
		mysql_query("UPDATE user SET user_mdp = '$nouveau_password' WHERE user_email = '$adresse_email'") or die('Erreur lors de la requête SQL de mise à jour des données saisies par l\'utilisateur (mot de passe)'.mysql_error()); // Envoie une requête à un serveur MySQL
		echo "Votre mot de passe a été mis à jour avec succès !";
}
}


Donc, ça fait le contraire de ce que je voudrais !!!

En attendant vos réponses, je continue mes recherches...
Cordialement
mercredi 27 février 2013 à 13:34:47 | Re : Problème requête UPDATE

NHenry

Membre Club Administrateur CodeS-SourceS
Bonjour,

Affiches la requête générée, puis testes-la dans PhpMyAdmin.

v----Signature--------v----------------------------------------------
  1. Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.
  2. Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).
  3. En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).
  4. Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés

---
Mon site
mercredi 27 février 2013 à 13:56:40 | Re : Problème requête UPDATE

omlaly

Voici le code PHP :
Code PHP :
// On ouvre la session
session_start(); // Démarre une nouvelle session ou reprend une session existante

	$adresse_email = $_POST['adresse_email'];
	$ancien_password = sha1($_POST['ancien_password']);
	$nouveau_password = sha1($_POST['nouveau_password']);
	$user_pseudo = $_SESSION['user_pseudo'];

	// Mise à jour des données saisies par l'utilisateur

	$query_bon_utilisateur_adresse_email=mysql_query("SELECT * FROM user WHERE user_email = '$adresse_email'") or die('Erreur lors de la mise à jour de l\'adresse e-mail'.mysql_error()); // Envoie une requête à un serveur MySQL
	$query_bon_utilisateur_password=mysql_query("SELECT user_mdp FROM user WHERE user_mdp = '$ancien_password'") or die('Erreur lors de la mise à jour du mot de passe'.mysql_error()); // Envoie une requête à un serveur MySQL
		
	if(mysql_num_rows($query_bon_utilisateur_adresse_email) ==1){ // mysql_num_rows retourne le nombre de lignes d'un résultat MySQL
		$affichage = mysql_query("UPDATE user SET user_email='$adresse_email' WHERE user_pseudo='$user_pseudo'");
		echo $affichage;

	echo "Votre adresse e-mail a été mise à jour avec succès !";
	}

	if(mysql_num_rows($query_bon_utilisateur_password) == 1){ // mysql_num_rows retourne le nombre de lignes d'un résultat MySQL
		$affichage2 = mysql_query("UPDATE user SET user_mdp = '$nouveau_password' WHERE user_email = '$adresse_email'");
		echo $affichage2;
		echo "Votre mot de passe a été mis à jour avec succès !";
}
}


Voici le résultat :
Code :
1Votre adresse e-mail a été mise à jour avec succès !


Quand je teste
Code :
SELECT * FROM user WHERE user_email = '$adresse_email'
sur PHPMyAdmin, elle fonctionne :
Code :
MySQL a retourné un résultat vide (aucune ligne). ( Traitement en 0.0766 sec )


En attendant vos réponses, je continue mes recherches...
Cordialement
mercredi 27 février 2013 à 13:59:07 | Re : Problème requête UPDATE

omlaly

PS : Je pense que MySQL a retourné un résultat vide car elle ne connait pas la variable $adresse_email...
mercredi 27 février 2013 à 15:38:36 | Re : Problème requête UPDATE

stay


Tu penses ?

stéph
mercredi 27 février 2013 à 20:15:16 | Re : Problème requête UPDATE

NHenry

Membre Club Administrateur CodeS-SourceS
Bonjour,

A la place de faire directement :
...=mysql_query("SELECT ...")
Passes pas une variable intermédiaire et affiches le contenu de cette variable.

Sinon, je pense que ton script souffre d'une grosse faille :
Tu vérifies séparément le mdp et l'adresse mail, de fait, on peut changer le mdp d'un membre, juste en connaissant son adresse mail.

v----Signature--------v----------------------------------------------
  1. Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.
  2. Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).
  3. En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).
  4. Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés

---
Mon site
mardi 5 mars 2013 à 14:06:29 | Re : Problème requête UPDATE

omlaly

Réponse acceptée !
C'est bon, problème réglé.

Cordialement
mardi 5 mars 2013 à 19:41:50 | Re : Problème requête UPDATE

NHenry

Membre Club Administrateur CodeS-SourceS
Bonjour,

Quel était le problème (et sa solution) afin que ton expérience puisse servir à d'autres personnes en détresse.

v----Signature--------v----------------------------------------------
  1. Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.
  2. Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).
  3. En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).
  4. Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés

---
Mon site

1 2

Cette discussion est classée dans : mysql, user, email, adresse, not


Répondre à ce message

Sujets en rapport avec ce message

UPDATE de plusieurs tables [ par noreille79 ] J'ai un souci lors de la mise à jour (par les membres)des tables de ma base de données. Il modifie mon mot de passe même si je lui en ai pas déclaré Erreure inconnue ... ?!? [ par lolyest ] Bonjour, holla, hi !Je suis en train de dévelloper un script, le coici:            $site_url = "**************";        $host = "localhost";    $user Formulaire de mot de passe perdu [ par Sub_Mat ] Bonjour à tous,Bon voila, je suis en train de mettre en place un système de récupération de mot de passe sur mon site, et j'ai beau chercher, mais je IF NOT NULL recupère ces champs, sinon ne fais rien dans SELECT & WHERE [ par 555clR ] Bonjour à tous, Voilà qq jours que j'essaie le soir de me documenter sur le sujet, mais je ne parviens à rien. J'ai une base de données dans laquelle PROBLEME ENREGISTREMENT AVATAR DANS PAGES "INSCRIPTION" ET "MODIFICATION-PROFIL-MEMBRE" [ par MALINOIS77 ] Bonjour, En suivant de multiples tutoriels, je suis en train de créer un site avec au départ des pages en php sont présentes afin de se connecter, de session [ par nzenke ] Bonjour, après avoir développée ma petite application en pur PHp5, je voudrai la migré vers l'orienté objet via codeIgniter, mais seulement au tout dé Savoir si valeur existe déjà dans BDD [ par MacGaliver ] Bonjour à toutes et à tous, Voilà j'explique mon problème. En fait j'ai trouvé un petit code source sur le web, mais voilà je ne sais pas comment le Requête qui rend fou [ par clemg ] Bonjour à tous, Voici mon problème : j'essaye de réaliser une requête toute simple, comme il y en a sur toutes les pages de mon site : insérer une ent easyphp server [ par domi81 ] Bonjour,J'ai installé easyphp 3.0Je voudrais renseigné une base de données avec un formulaire mais ce message d'erreur apparait : Objet non trouvé!L'U comparaison avec php/mysql [ par cyrilherve ] bonjour à tous ,je developpe depuis avec php/mysql et j'utlise pour cela wamp 2.0je suis confronté à un probleme de depuis peut, voici mon code:[CODE]


Nos sponsors


Sondage...

CalendriCode

Juin 2013
LMMJVSD
     12
3456789
10111213141516
17181920212223
24252627282930

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,588 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales