Page 1 sur 1
insérer un enregistrement => tester les doublons
Posté : 05 juil. 2006, 16:18
par jay64
Bonjour,
J'ai créé avec dreamweaver un formulaire pour insérer un enregistrement (php et mysql).
A la validation de l'enregistrement, il se peut qu'il existe déjà dans ma table. Actuellement, cela me renvoie le message suivant : Duplicate entry '2-1' for key 1.
Ce que je voudrais, c'est que dans le cas où il existe déjà un enregistrement avec les mêmes clés unqiues, on me propose de mettre à jour ou pas l'enregistrement. Est-ce possible ? Si oui, comment ?
Merci d'avance
Posté : 05 juil. 2006, 16:21
par ouckileou
Les solutions possibles :
- passer ta clé en autoincrement, et ne pas mettre de valeur dans la requête INSERT, la clé sera générée automatiquement
- récupérer ce message d'erreur, le traiter et proposer la modif
- faire un select d'abord pour vérifier si la clé existe déjà ou non
Posté : 05 juil. 2006, 16:23
par jay64
ok mais :
N'étant pas encore un pro du coté de la programmation, connaissez vous avec dreamweaver un moyen de rendre la chose + simple ?
Posté : 05 juil. 2006, 16:25
par ouckileou
N'étant pas encore un pro du coté de la programmation, connaissez vous avec dreamweaver un moyen de rendre la chose + simple ?
Non
Dreamweaver n'est pas vraiment un outil pour programmer... ça peut faciliter certaines opérations mais ça ne va pas très loin, et je ne sais pas si tu peux prévoir ce genre de choses
Mais ce n'est pas très compliqué à faire
Si tu prends la solution 1 (autoincrement) tu n'as rien à rajouter à ton code
Posté : 05 juil. 2006, 16:44
par jay64
Si tu prends la solution 1 (autoincrement) tu n'as rien à rajouter à ton code
Petit complément d'info: En fait, plutot que de proposer un second formulaire pour modifier un enregistrement existant, je voudrais tout faire au moment de la création d'un enregistrement avec la méthode suivante :
Si c'est la première fois qu'il enregistre les données par rapport au cas de figure que je lui propose (ce qui correspond donc à une de mes 2 clés primaires de ma table) alors j'enregistre ses valeurs, sinon, je les modifie.
Pour info, ma table est constituée d'une dizaine de champs donc deux clés primaires (IdUtilisateur + IdTypedeCas)
En espérant être clair ...
Merci !
Posté : 05 juil. 2006, 17:46
par leakcim51
Salut!
Tu peux faire un SELECT * FROM taTable WHERE IdUtilisateur=valeur_utilisateur AND IdTypedeCas=valeur_cas
et ensuite avec la fonction mysql_num_rows tu testes si il y a déjà un enregistrement qui correspond à ces clés.
Si oui tu fais un UPDATE.
Sinon, tu fais ton INSERT.
@+
Posté : 05 juil. 2006, 17:54
par Henri
Ou si tu es sur MySQL et que tu ne comptes pas en changer, tu peux utiliser la syntaxe REPLACE qui fait un INSERT si la clé n'existe pas ou un UPDATE si la clé existe (en fait, un DELETE suivi d'un INSERT).
http://dev.mysql.com/doc/refman/4.1/en/replace.html