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

Langage PHP Discussion :

UPDATE session_start et modification


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 14
    Points : 2
    Points
    2
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Points : 624
    Points
    624
    Par défaut
    Bha il faut que tu tapes un code qui soit débugable déjà...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 14
    Points : 2
    Points
    2
    Par défaut
    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

  4. #4
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Points : 624
    Points
    624
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    if(!mysql_query("UPDATE utilisateurs SET nom = '".$_SESSION['nom']."' WHERE login='$login' AND pass='$pass'"))
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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))

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Votre script commence-t-il bien par un appel à session_start() ?
    Si vous ajoutez en début de script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 14
    Points : 2
    Points
    2
    Par défaut
    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 ?

  7. #7
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Points : 624
    Points
    624
    Par défaut
    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

  8. #8
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Points : 624
    Points
    624
    Par défaut
    Fait un copier/coller de cette requete dans phpMyAdmin, et regarde ce qu'il en dit !

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 14
    Points : 2
    Points
    2
    Par défaut
    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.

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 14
    Points : 2
    Points
    2
    Par défaut
    oui julp mon script commence bien par session_start

  11. #11
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Points : 624
    Points
    624
    Par défaut
    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...) ?

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 14
    Points : 2
    Points
    2
    Par défaut
    comment je peux le savoir si il remplace pas 'nom' par 'nom'

  13. #13
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Points : 624
    Points
    624
    Par défaut
    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...

  14. #14
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 14
    Points : 2
    Points
    2
    Par défaut
    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'

  15. #15
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 14
    Points : 2
    Points
    2
    Par défaut
    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 ?

  16. #16
    Membre averti Avatar de sohnic
    Femme Profil pro
    bioinfo
    Inscrit en
    Mai 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : bioinfo

    Informations forums :
    Inscription : Mai 2003
    Messages : 426
    Points : 434
    Points
    434
    Par défaut
    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

  17. #17
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Points : 624
    Points
    624
    Par défaut
    Merci sohnic

  18. #18
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 14
    Points : 2
    Points
    2
    Par défaut
    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'

  19. #19
    Membre averti Avatar de sohnic
    Femme Profil pro
    bioinfo
    Inscrit en
    Mai 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : bioinfo

    Informations forums :
    Inscription : Mai 2003
    Messages : 426
    Points : 434
    Points
    434
    Par défaut
    Mets un code plus complet, on y verra plus clair....

    S.

  20. #20
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 14
    Points : 2
    Points
    2
    Par défaut
    par monprofils.php

    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
    <?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>

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 4
    Dernier message: 04/05/2011, 09h25
  2. Réponses: 1
    Dernier message: 22/05/2007, 21h17
  3. UPDATE avec modif identique
    Par magic charly dans le forum Oracle
    Réponses: 2
    Dernier message: 19/02/2007, 11h13
  4. Requête UPDATE [2 modifications]
    Par stan30160 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 21/06/2006, 17h16
  5. update - modification d'une occurance
    Par starius dans le forum Langage SQL
    Réponses: 5
    Dernier message: 22/04/2004, 12h12

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