requête mysql...

Avatar du membre
ViPHP
ViPHP | 3008 Messages

10 févr. 2006, 16:48

Le champ de ta base correspondant à l'ID s'appelle comment ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

10 févr. 2006, 16:50

C'est parce que la valeur que tu mets dans $_SESSION['id'] n'est pas bonne que cela ne fonctionne pas... tu stockes le $i de ta boucle for() (qui vraissemblablement ne tourne qu'une fois) et tu récupères donc un 0 quel que soit l'utilisateur connecté.

Il faudrait que tu y renseigne l'identifiant unique associé à l'utilisateur (typiquement la clé primaire de ta table)

ViPHP
ViPHP | 3607 Messages

10 févr. 2006, 16:50

euh.... :oops: ...peut-être que le problème, c'est que j'en ai pas...c'est pas automatique?
je comprend pas bien ce que tu veux?

Avatar du membre
ViPHP
ViPHP | 3008 Messages

10 févr. 2006, 16:51

Si la valeur (si tu l'as mis en auto incrément) est mise automatiquement. Je te parlais du "nom" du champ de ta table qui correspond à l'ID.

ViPHP
ViPHP | 3607 Messages

10 févr. 2006, 16:52

et comment on fait pour avoir la clé primaire de la table?
(je précise que l'id que j'utilise varie selon l'utilisateur)

ViPHP
ViPHP | 3607 Messages

10 févr. 2006, 16:53

ah le nom, d'ac, ben la c'était "bouh", que je voulais changer en dupond

Avatar du membre
ViPHP
ViPHP | 3008 Messages

10 févr. 2006, 16:53

Tu définies tout ça quand tu crées la table. Tu peux choisir pour le champs ID qu'il soit primaire et en auto increment.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

10 févr. 2006, 16:57

Quand tu crées une table, il est recommandé de mettre dedans un identifiant unique afin de distinguer de manière évidente chaque enregistrement. Ce n'est généralement pas un nom, car effectivement, en cas d'homonyme on ne peut pas les distinguer.

On utilise donc pour ça un numéro qui s'incrémente à chaque nouvel enregistrement (un compteur en quelque sorte). A noter, la fonction auto-increment de mysql permet de gérer l'incrémentation automatiquement.

Tu obtiendrais ainsi :

Code : Tout sélectionner

ID Nom Prenom ... 1 Dupont Jean 2 Dupont Pierre 3 Durand Jaques
Et dans la clause WHERE de ta requête, tu as juste à préciser WHERE ID=2 pour que seul l'enregistrement de Pierre Dupont soit modifié :)

(Si c'est toujours pas clair, n'hésite pas à insister ;))

ViPHP
ViPHP | 3607 Messages

10 févr. 2006, 17:02

bon alors je croit que j'ai à peu près compris, j'ai essayer de rajouter via phpmyadmin une colonne id, avec autoincrement, seulement il me met l'erreur suivante:

Code : Tout sélectionner

requête SQL: ALTER TABLE `user` ADD `id` INT NOT NULL AUTO_INCREMENT FIRST MySQL a répondu:Documentation #1075 - Un seul champ automatique est permis et il doit �tre index�
et comment on fait pour enlever une clé primaire?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

10 févr. 2006, 17:12

L'erreur sql est à priori parce que tu essayes d'ajouter un champ NOT NULL a une table contenant déjà des enregistrement... du coup il ne te laisse pas faire vu qu'à la création de la colonne, les champs seraient null :)

- Pour enlever une clé primaire avec phpMyAdmin, sous la liste des champs de la table, tu as un petit tableau avec tes clés et tes index, il suffit de cliquer sur supprimer pour celle nommée PRIMARY.
- Tu peux virer le auto-increment d'une colonne en la modifiant.
- Et enfin, tu peux définir une nouvelle clé primaire soit lors de la création de ta colonne, soit en cliquant sur Primaire dans la liste des champs

Invité
Invité n'ayant pas de compte PHPfrance

10 févr. 2006, 19:01

J'ai résolu le problème à la façon bourrin :P ...
j'ai détriut ma table, et je l'ai refaite avec un champ id que j'ai mit en index et en auto incrément, du coup mes mises à jour fonctionnent.... :pouce:
voila [résolu]
merci beaucoup[/php]