insérer un enregistrement => tester les doublons

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 : insérer un enregistrement => tester les doublons

par Henri » 05 juil. 2006, 17:54

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

par leakcim51 » 05 juil. 2006, 17:46

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.

@+

par jay64 » 05 juil. 2006, 16:44

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 !

par ouckileou » 05 juil. 2006, 16:25

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

par jay64 » 05 juil. 2006, 16:23

ok mais :
N'étant pas encore un pro du coté de la programmation, connaissez vous avec dreamweaver un moyen de rendre la chose + simple ?

par ouckileou » 05 juil. 2006, 16:21

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

insérer un enregistrement => tester les doublons

par jay64 » 05 juil. 2006, 16:18

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