PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 14-04-2010 07:38:55

Anthotill
Membre
Inscription : 14-03-2010
Messages : 81

Gestion d'erreur d'insertion

Bonjour à tous

Je souhaiterais savoir si il est possible de gérer les erreurs d'insertion de donnée dans une BDD MYSQL, je m'explique:

J'ai un script qui envoi des fichier CSV (;) dans mysql, j'ai un champ qui en unique donc si l'on essaye d'importer deux fois la même valeur ce n'est pas possible mysql renvoi cette erreur : Duplicate entry 'ma valeur' for key 1 normal

Est ce qu'il est possible de dire en php quelque chose du genre if($mysql_error == 'Duplicate entry') { echo 'Vous ne pouvez pas envoyer deux fois la même valeur'; } else { echo mysql_error(); }

Merci pour vos réponses

Antho

Hors ligne

#2 14-04-2010 09:01:18

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : Gestion d'erreur d'insertion

l'utilisateur doit-il être prévenu ??

si non, je crois qu'avec IGNORE qqchose tu peut lui dire de continuer ( a mysql bien sur)



extrait :
Si on spécifie le mot IGNORE dans un INSERT avec les valeurs de plusieurs lignes, chaque ligne qui qui ferait doublon avec une clé PRIMARY ou UNIQUE existante dans la table sera ignoré et ne sera pas insérée. Si on ne spécifie pas IGNORE, l'insertion est abandonnée si quelque ligne que ce soit fait doublon avec une clé existante. La fonction mysql_info() de l'API C permet de savoir combien de lignes ont été insérées dans la table.

a++

Dernière modification par Pierrot (14-04-2010 09:03:45)

Hors ligne

#3 15-04-2010 08:24:48

Anthotill
Membre
Inscription : 14-03-2010
Messages : 81

Re : Gestion d'erreur d'insertion

Bonjour

J'aimerais que l'utilisateur ai un message comme quoi l'insertion s'est bien déroulée ou quelque chose qui remplace le message de base de mysql DUPLICATE ENTREY etc ...

Merci pour ta réponse
Antho

Dernière modification par Anthotill (15-04-2010 09:27:06)

Hors ligne

#4 15-04-2010 20:58:55

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Gestion d'erreur d'insertion

Il y a des fonctions pour retourner les codes d'erreur. mysql_error() par exemple, mais il y en a aussi une pour le numéro de l'erreur.
Tu peux donc personnaliser les messages suivant leur numéro.
Cependant lors d'une erreur le traitement mysql s'arrête mais il n'efface pas ce qui a déjà été fait.

Hors ligne

#5 16-04-2010 07:47:21

Anthotill
Membre
Inscription : 14-03-2010
Messages : 81

Re : Gestion d'erreur d'insertion

xTG a écrit :

Il y a des fonctions pour retourner les codes d'erreur. mysql_error() par exemple, mais il y en a aussi une pour le numéro de l'erreur.
Tu peux donc personnaliser les messages suivant leur numéro.
Cependant lors d'une erreur le traitement mysql s'arrête mais il n'efface pas ce qui a déjà été fait.

Bonjour

Je ne comprend pas trop ce que tu veux dire en disant "Cependant lors d'une erreur le traitement mysql s'arrête mais il n'efface pas ce qui a déjà été fait." ? A partir du moment ou mon champ est en unique, si mysql a rempli ce qu'il avait à remplir ce n'est pas grave (j'ai peut être mal compris) ?

Merci

Hors ligne

#6 16-04-2010 14:25:51

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Gestion d'erreur d'insertion

Je ne sais pas ce que tu traites comme données donc je suis parti sur le principe que tu insérais plusieurs enregistrements.
Si une erreur survient lors du 5eme les suivants ne seront pas fait, mais les 4 premiers seront dans la bdd.

Hors ligne

#7 17-04-2010 08:33:34

Anthotill
Membre
Inscription : 14-03-2010
Messages : 81

Re : Gestion d'erreur d'insertion

xTG a écrit :

Je ne sais pas ce que tu traites comme données donc je suis parti sur le principe que tu insérais plusieurs enregistrements.
Si une erreur survient lors du 5eme les suivants ne seront pas fait, mais les 4 premiers seront dans la bdd.

Ok je comprend, il faut donc que j'utilise REPLACE ou IGNORE suivant les cas d'après la doc sql. Merci pour votre aide mon problème est résolu

Hors ligne

Pied de page des forums