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 SQL Discussion :

mise à jour des champs d'une ligne de table


Sujet :

Langage SQL

  1. #1
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 374
    Points : 5 734
    Points
    5 734
    Billets dans le blog
    1
    Par défaut mise à jour des champs d'une ligne de table
    Bonsoir,

    en fait, j'ai 2 besoins :

    - possibilité de modifier plusieurs champs en une seule requête ; j'ai essayé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update nom_table set champ1='val1' and champ2='val2 where condition
    Il n'y a pas d'erreur, mais rien n'est modifié.

    - possibilité de modifier un champ qui est aussi utilisé dans la condition : exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update nom_table set champ='val'  where condition_qui_porte_sur_champ
    Pour ça, j'ai l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Duplicate entry '0' for key 1
    Pour ces 2 besoins, comment faire ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Le message d'erreur indique que tu essaies de donner à la clé primaire une valeur qui existe déjà.
    A moins que ce sois une table associative, ta clé primaire devrait être autoincrémentée et tu ne devrais donc pas te soucier de lui fournir une valeur.

    Concernant la première requête, la bonne syntaxe serait plutôt celle-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE nom_table 
    SET colonne1 = 'val1', colonne2 = 'val2' 
    where condition
    Et si tu nous donnais la vraie requête plutôt que cet exemple fictif ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 374
    Points : 5 734
    Points
    5 734
    Billets dans le blog
    1
    Par défaut
    Pas de souci pour donner la vraie requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql="UPDATE login SET mail = '".$mail."' , notif = '".$notif."' where login=\"".$login."\"";
    (c'est une base MySQL que je gère en PHP), mais avec ta réponse, je m'en suis sorti, par contre pour l'autre besoin, d'abord, c'est une table indicée, mais la clé primaire n'est pas auto-incrémentée (je ne lui ai pas mis l'option auto-increment) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    login varchar(25) NO PRI 
    pwd varchar(35) YES 
    connecte tinyint(4) YES 
    mail varchar(30) YES 
    notif varchar(3) YES
    et comme c'est le nom d'utilisateur, je voudrais permettre à l'utilisateur de changer celui-ci...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Autrement dit, et d'après ce que je vois à la structure de ta table, tu as choisi le login comme clé primaire, ce qui n'est pas une idée excellente.
    Lire à ce sujet l'article de SQLPro sur les clés auto-incrémentées. Notamment le chapitre 2.

    Tu souhaites que l'utilisateur puisse changer son login. Pourquoi pas ! Mais le login doit être unique et la base de données refuse un login déjà existant puisque le login est ta clé primaire. Si tu adoptes une clé anonyme numérique et auto-incrémentée, n'oublie pas de placer une contrainte UNIQUE sur le login.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 374
    Points : 5 734
    Points
    5 734
    Billets dans le blog
    1
    Par défaut
    OK,

    d'après ce que tu me dis, je vais rajouter dans la table un id qui sera la clé primaire et sera auto-incrémenté ; et comme ça, plus de problème....
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Bonjour,
    Pour ta première requête
    Je ne connais pas le php, peux-tu mettre un espion et nous donner la valeur de la variable $sql avant exécution, pour voir ce qui ne va pas. Je soupçonne un problème de concaténation mais je ne suis pas sure.
    A+
    Soazig

  7. #7
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 374
    Points : 5 734
    Points
    5 734
    Billets dans le blog
    1
    Par défaut
    Merci, mais c'est résolu (et j'ai pensé à le cocher). La ligne PHP que j'ai mise est bonne.
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mise à jour des champs d'une datagrid
    Par johnaliashead dans le forum Silverlight
    Réponses: 4
    Dernier message: 08/02/2011, 11h04
  2. Mise à jour des champs d'une table
    Par soso78 dans le forum Access
    Réponses: 2
    Dernier message: 14/12/2006, 15h57
  3. Module de mise à jour des champs d'une table
    Par kikaillo dans le forum Access
    Réponses: 14
    Dernier message: 18/04/2006, 09h42
  4. Réponses: 6
    Dernier message: 07/02/2006, 14h44

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