Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/01/2007, 15h06   #1
Invité de passage
 
Inscription : janvier 2007
Messages : 14
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 14
Points : 1
Points : 1
Par défaut UPDATE session_start et modification

Salut tout le monde.

Je suis novice dans la programmation et j ai un probleme pour faire des modification dans le BDD

Code :
1
2
3
4
5
6
7
8
9
10
11
<?
if ($ajout=='1'){ 
	mysql_query("UPDATE utilisateurs SET nom = '".$_SESSION['nom']."' WHERE login='$login' AND pass='$pass'");		
echo "<br><br>votre modification à été effectué";								
}
?>
 
<form action="monprofils.php?ajout=1" method="post" name="modif">
<input name="prenom" type="text" id="prenom" value="<?php echo $_SESSION['nom']; ?>">
<input type="submit" name="submit" value="ok">
</form>
Le client qui se connecte avec son login et pass puis il veut modifier son nom.
Dans le <input> le nom de l utilisateur s affiche bien, mais impossible de le changer
yasin2311 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2007, 15h13   #2
Membre expérimenté
 
Inscription : mai 2002
Messages : 673
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 673
Points : 532
Points : 532
Bha il faut que tu tapes un code qui soit débugable déjà...

Code :
1
2
3
4
5
6
7
8
9
10
11
if ($ajout=='1'){ 
if(!mysql_query("UPDATE utilisateurs SET nom = '".$_SESSION['nom']."' WHERE login='$login' AND pass='$pass'"))
      echo 'DEBUG : '.mysql_error().'<br>';
if(mysql_affected_rows() != 1)
   echo 'DEBUG : aucun enregistrement modifié !<br>';
echo "<br><br>votre modification à été effectué"; 
} 
else
{
   echo 'DEBUG : pas de modif<br>';
}
et si avec ça tu trouves pas la réponse tout seul, nous, ça nous permettra peut être de trouver une piste
gloubi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2007, 15h22   #3
Invité de passage
 
Inscription : janvier 2007
Messages : 14
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 14
Points : 1
Points : 1
j ai fait comme tu m as dis et il m est :

DEBUG : aucun enregistrement modifié !

sa fait 2 jours que je me prend la tete dessus
yasin2311 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2007, 15h31   #4
Membre expérimenté
 
Inscription : mai 2002
Messages : 673
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 673
Points : 532
Points : 532
Si ça t'affiche pas de message d'erreur SQL et que t'as "aucun enregistrement modifié", c'est que ta requete est syntaxiquement juste, mais qu'elle ne concerne aucun enregistrement. En d'autre terme, soit $login, soit $pass, soit la combinaison des 2 ne correspond a aucun enregistrement de ta BDD !
pour t'en convaincre, remplace :

Code :
if(!mysql_query("UPDATE utilisateurs SET nom = '".$_SESSION['nom']."' WHERE login='$login' AND pass='$pass'"))
par

Code :
1
2
3
4
 
$req = "UPDATE utilisateurs SET nom = '".$_SESSION['nom']."' WHERE login='$login' AND pass='$pass'";
echo 'Ma requete : '.$req.'<br>';
if(!mysql_query($req))
gloubi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2007, 15h39   #5
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Votre script commence-t-il bien par un appel à session_start() ?
Si vous ajoutez en début de script :
Code :
1
2
3
echo '<pre>';
print_r($_SESSION);
echo '</pre>';
Vos variables de session s'affichent-elles ?

De quel contexte les variables $login et $pass sont-elles issues ?


Julp.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2007, 15h45   #6
Invité de passage
 
Inscription : janvier 2007
Messages : 14
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 14
Points : 1
Points : 1
Quand je remplace ce que tu m as dis sa ecrit :

Ma requete : UPDATE utilisateurs SET nom = 'nom' WHERE login='yasin' AND pass='d6472ade50574de01d2f20f121345g5'

sa veux dire qu il prend bien en compte l utilisateur et le pass mais qu il ne fait pas les modif ?
yasin2311 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2007, 15h46   #7
Membre expérimenté
 
Inscription : mai 2002
Messages : 673
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 673
Points : 532
Points : 532
Citation:
Dans le <input> le nom de l utilisateur s affiche bien, mais impossible de le changer
Julp -> on est en droit de supposer que oui
gloubi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2007, 15h47   #8
Membre expérimenté
 
Inscription : mai 2002
Messages : 673
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 673
Points : 532
Points : 532
Fait un copier/coller de cette requete dans phpMyAdmin, et regarde ce qu'il en dit !
gloubi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2007, 15h54   #9
Invité de passage
 
Inscription : janvier 2007
Messages : 14
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 14
Points : 1
Points : 1
quand je fais un copier collé de la requete dans phpmysql, et je je remplace 'nom' par 'yasin2' il change bien le nom de l utilisateur.
yasin2311 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2007, 16h01   #10
Invité de passage
 
Inscription : janvier 2007
Messages : 14
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 14
Points : 1
Points : 1
oui julp mon script commence bien par session_start
yasin2311 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2007, 16h03   #11
Membre expérimenté
 
Inscription : mai 2002
Messages : 673
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 673
Points : 532
Points : 532
Bon, deja, le probleme n'a rien a voir avec les session... il faudrait donc deplacer le sujet vers langage je pense...

D'autre part, j'en viens a me demander si t'es sur que tu remplaces pas "nom" par "nom" a chaque fois (ce qui donnerai un mysql_affected_rows() == 0 sans erreur et sans résultat visible...) ?
gloubi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2007, 16h11   #12
Invité de passage
 
Inscription : janvier 2007
Messages : 14
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 14
Points : 1
Points : 1
comment je peux le savoir si il remplace pas 'nom' par 'nom'
yasin2311 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2007, 16h19   #13
Membre expérimenté
 
Inscription : mai 2002
Messages : 673
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 673
Points : 532
Points : 532
Bha si y'a 'nom' dans ta base de données et que tu fais update ... set nom = 'nom', bha ça veut dire que t'as remplacé 'nom' par 'nom'... Je vois pas ou est le probleme pour vérifier ça...

Genre ça doit arriver a chaque fois que tu execute ta page 2 fois de suite (ou plus) avec les memes parametres...
gloubi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2007, 16h20   #14
Invité de passage
 
Inscription : janvier 2007
Messages : 14
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 14
Points : 1
Points : 1
j ai l impression que c est sa le probleme car je viens de changer 'nom' par 'yasin' et quand j ai voulu modifier le nom yasin sur le formulaire la requete affiche :

UPDATE utilisateurs SET nom = 'yasin' WHERE login='yasin' AND pass='d6472ade50574de01d2f20f121345g5'
yasin2311 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2007, 16h27   #15
Invité de passage
 
Inscription : janvier 2007
Messages : 14
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 14
Points : 1
Points : 1
en faite si j ai bien compris quans je lui demande de UPDATE utilisateurs SET nom = '".$_SESSION['nom']."' WHERE login='$login' AND pass='$pass'

il modifie en gargant la valeur initial de $_SESSION['nom']

c est sa ?
yasin2311 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2007, 16h31   #16
Membre éclairé
 
Avatar de sohnic
 
Femme
bioinfo
Inscription : mai 2003
Messages : 385
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : bioinfo

Informations forums :
Inscription : mai 2003
Messages : 385
Points : 363
Points : 363
Bonjour,
Je suis la discussion (fort dynamique !) depuis tout a l'heure et il y a plusieurs choses qui me chagrine dans ton code (ou alors il est incomplet):
1- ton form tient a la fois du get et du post. Bon ca a l'air de passer puisqu'il semble comprendre que $ajout existe et vaut 1. Personnellement je l'aurait mis dans un champ hidden.

2- tu te poses des questions sur ta requete. Pourquoi ne pas faire un echo de cette requete ? Tu serais ainsi fixé !

3- tu sembles croire que php va te transformer tout seul la valeur de $_SESSION['nom'] ! ou alors il manque qq chose...
on s'attendrait avoir un truc du genre :
$new_nom=$_POST['prenom'];

D'ou vient $login ? Ca ne serait pas justement ton $_SESSION['nom'] ?

Bref, ca donnerait :
mysql_query("UPDATE utilisateurs SET nom ='$new_nom' WHERE login='$login' AND pass='$pass'");

ou
mysql_query("UPDATE utilisateurs SET nom ='$new_nom' WHERE login='$_SESSION['nom']' AND pass='$pass'");

puis une mise a jour, si besoin de ta variable de session :
$_SESSION['nom']=$new_nom;

Sohnic
__________________
http://www.noctinfo.fr/

(\ _ /)
(='.'=) Voici Lapinou. Aidez-le à conquérir le monde en le reproduisant.
(")-(")
sohnic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2007, 16h36   #17
Membre expérimenté
 
Inscription : mai 2002
Messages : 673
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 673
Points : 532
Points : 532
Merci sohnic
gloubi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2007, 16h44   #18
Invité de passage
 
Inscription : janvier 2007
Messages : 14
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 14
Points : 1
Points : 1
non login ne correspond pas au nom

j ai fait comme tu m as dis et maintenant le nom ne s affiche plus dans le <input>

et lorsque je le modifie il supprime le nom de la basse et me donne en requete :

UPDATE utilisateurs SET nom = '' WHERE login='hihih' AND pass='d6472ade50574de01d2f20f121500a1'
yasin2311 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2007, 16h50   #19
Membre éclairé
 
Avatar de sohnic
 
Femme
bioinfo
Inscription : mai 2003
Messages : 385
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : bioinfo

Informations forums :
Inscription : mai 2003
Messages : 385
Points : 363
Points : 363
Mets un code plus complet, on y verra plus clair....

S.
__________________
http://www.noctinfo.fr/

(\ _ /)
(='.'=) Voici Lapinou. Aidez-le à conquérir le monde en le reproduisant.
(")-(")
sohnic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2007, 16h57   #20
Invité de passage
 
Inscription : janvier 2007
Messages : 14
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 14
Points : 1
Points : 1
par monprofils.php

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
require_once('connexion.php');
 
session_start(); // On relaye la session
if (session_is_registered("authentification") && $_SESSION['privilege'] == "user"){ 
}
else {
header("Location:index.php?erreur=intru"); 
}
?>
 
<?
if ($ajout=='1')
{ $req = "UPDATE utilisateurs SET nom ='$nom' WHERE login='$login' AND pass='$pass'";
echo '<br>Ma requete : '.$req.'<br>';
if(!mysql_query($req))  
echo 'Erreur : '.mysql_error().'<br>'; if(mysql_affected_rows() != 1)  echo '<br>Aucun enregistrement modifié !<br>'; 
 } else {  echo '<br>Pas de modif<br>'; } 
?>
 
<form action="monprofils.php?ajout=1" method="post" name="modif">
<input name="nom" type="text" id="nom" value="<?php echo $_SESSION['nom']=$nom; ?>">
<input type="submit" name="submit" value="ok">
</from>
yasin2311 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h31.


 
 
 
 
Partenaires

Hébergement Web