Probléme avec une requête update

neeko
Invité n'ayant pas de compte PHPfrance

25 mai 2007, 14:34

Bonjour a tous et a toutes,
je suis sur un site persos concernant le MMOCORPG Guild Wars, je fais des études en informatique notament en dvpt mais je débute quand même...!!

donc voici mon probléme j'utilise des sessions pour l'accés a un espace Membre offrant des fonctionalité suplémentaire, dans cet espace l'internaute peut choisir une profession a suivre bref liste déroulante dynamique et une fois qu'il valide une requête update est crée est donc met a jour l'enregistrement de l'utilisateur mais la est le probléme car cette mise a jour ne tient que lors de la session si il quitte celle ci la modif de la table utilisateur disparait.... je ne comprend pas !!!

voici ma requête :
$qajoutprof = mysql_query("UPDATE utilisateurs SET profsuivie = '$prof' WHERE login_util = '$_SESSION[login]'");

Merci

ViPHP
ViPHP | 2144 Messages

25 mai 2007, 14:41

Honnêtement, j'ai du mal à comprendre comme une session pourrait "annuler" un update sur une table.
J'imagine que tu as vérifier dans la table (par ex avec phpMyAdmin) que la mise à jour était réellement effectuée)
Es-tu sûr que lors que le membre se déconnecte, tu n'as pas un autre update qui se fait ?

Petit nouveau ! | 3 Messages

25 mai 2007, 14:46

merci de ta rapidité !!
alors oui je suis sur que la mise a jour se fait j'ai verifié sa plusieurs fois et je n'ai pour l'instant q'une et une seule requête update ds mes programmes et je ne comprends vraiment pas pourquoi la mise a jour ne reste pas...jamais vu sa lol je suis dessus en ce moment donc je repost si je vois quelque chose^^

ViPHP
ViPHP | 2144 Messages

25 mai 2007, 14:50

Pas de quoi, mais malheureusement comme tu l'as compris on ne peut pas beaucoup t'aider tant que tu n'auras pas un peu isoler le problème. Bonne chasse :D

Petit nouveau ! | 3 Messages

25 mai 2007, 15:05

je vien de procéder a des nouveaux test et sa ne s'améliore pas lol

utilisateur 1
update fonctionne bien car elle a fait la mise a jour pour le premier utilisateur testé,

utilisateur 2
je vais ensuite sur la page pour me logger différement avc un second utilisateur et la je choisi donc une nouvelle profession a suivre(faut connaitre guild wars lol) et donc logiquement son numéro contenu dans value de la liste déroulante devrait se mettre a jour dans la table mais il le fait pas et le membre a quand meme accés a ce qu'il a choisi.
Donc cela veut dire que ce numéro est toujours dans la variable session mais je ne comprends pas pourquoi la requête ne s'est pas executé cette fois ci,

utilisateur 3
J'ai refait ce test une troisiéme fois avec un troisiéme utilisateur cette fois ci tout a fonctioné

utilisateur 2
j'ai donc refait le test avec l'utilisateur 2 et la mes update précédents on été effacé et celui de l'utilisateur en cour ne s'est pas fait !!

Pourquoi le fait de changer d'utilisateur ayant tous les meme droits les mêmes propriétés bref similaire ferait changer l'execution du programme???

Ou alors c'est un probléme de session ?

Petit nouveau ! | 3 Messages

29 mai 2007, 14:20

vu que je n'ai pas beaucoup de réponse c'est surement du a une incompréhension de votre part par rapport a mon probléme, je vais donc tenter d'illustrer celui ci.


Voici le test réalisé pour voir si un utilisateur suit une profession ou non :
//Grâce au login on va chercher sur la table utilisateur le numéro de la prof suivie 

$snumprof = "SELECT profsuivie,nom_prof FROM utilisateurs,profession
             WHERE login_util = '$log'
             AND utilisateurs.profsuivie = profession.num_prof";

$qnumprof = mysql_query ($snumprof);

$rnumprof  = mysql_fetch_row($qnumprof);


//Si la requête n'a rien renvoyée c'est que l'utilisateur est nouveau 
if(empty($rnumprof[0]))
 {
   echo"<br><center> <a href=nouveau_membre.php?>Espace Membres</a></center><br>" ;

 }

// sinon c'est qu'il existe déja 
 else
 {
 // on remplit les variables globales de session 
 
 $_SESSION['num_prof_suivie'] = $rnumprof[0];
 $_SESSION['profsuivie']      = $rnumprof[1];
 

 echo"<br><center> <a href=membre.php>Espace Membres</a></center>" ;

 }

?>

Si c'est un nouveau membre alors on lui propose une profession a suivre :

    echo "<center><form action= _php_prog/_php_prog_membre/traitementMembre.php method=POST>";


/**********************************************************
Création de la liste déroulante des professions
**********************************************************/
	

$result1 = mysql_query("SELECT `num_prof` , nom_prof FROM profession" );
$ligne2 = mysql_fetch_row($result1); 

echo"<select name=lstprof>";

while($ligne2)
 {
	 echo "<option value=$ligne2[0]>$ligne2[1]</option>";
	 $ligne2 = mysql_fetch_row($result1); 
 }

echo"
</select><br><br>

<input type=submit value=Valider></center><br>"     

Le resultat est ensuite renvoyé à une page de traitement qui effectue la requête update qui pose probléme :

   <?
$prof = $_POST["lstprof"];

$sql  = "UPDATE utilisateurs SET profsuivie = $prof WHERE  login_util  = $_SESSION[login]";

//echo $sql;

$qajoutprof = mysql_query("UPDATE utilisateurs SET profsuivie = '$prof' WHERE  login_util  = '$_SESSION[login]'");
 
echo "Vous suivez maintenant la profession : ". $prof;

echo "<center><a href = ../../membre.php>Votre espace membre</a></center>";

?>    
Ceci est la SEULE update de tous mes scripts !! donc je bloque vraiment ! mon probléme qui est,je le rappele, le fait que les num des professions suivies ne restent pas enregistrées dans la table on dirait qu'elles le sont le temps de la session, pourrait il justement etre due a un probléme de SESSION ?

Merci