requête mysql...

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : requête mysql...

par Invité » 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]

par Ryle » 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

par jojolapine » 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?

par Ryle » 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 ;))

par charabia » 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.

par jojolapine » 10 févr. 2006, 16:53

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

par jojolapine » 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)

par charabia » 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.

par jojolapine » 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?

par Ryle » 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)

par charabia » 10 févr. 2006, 16:48

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

par jojolapine » 10 févr. 2006, 16:46

Bon t'avais raison, ça vient de la requête, quand je test dans mysql:
l'erreur est qu'il ne connait pas le champ id:

Code : Tout sélectionner

UPDATE user SET nom='dupond' WHERE ID=1
est-ce que quelqun connait la requête sql exacte pour spécifier en fonction de l'id et non pas remplacer tout les champs qui ont telle valeur?

par charabia » 10 févr. 2006, 16:37

Déjà pour tester si ta requête fonctionne, fait là directement dans phpMyAdmin pour voir si la modification est prise en compte.

par jojolapine » 10 févr. 2006, 16:02

décidément, quand ça veut pas.... :evil:
je viens de vérifier avec la deuxième personne inscrite, et l'id devient 1, je suppose donc que de se côter là tout va bien...
et sinon je pourrait pas faire ave REPLACE? (je croit que j'ai déja vu ça quelque part)...

par charabia » 10 févr. 2006, 15:56

Si tu as bien la valeur de l'ID récupéré alors tu peux faire :
$miseajour=mysql_query("UPDATE user SET prenom='".$mavariable."' WHERE id=".$_SESSION['id']."");
Pour tester avant de faire le UPDATE, affiche juste la session ID pour plusieurs choix pour voir si ça change ou pas.