Se connecter / S'enregistrer
Votre question

Difficultés avec une inscription en php ==> erreur mysql !

Tags :
  • MySQL
  • Programmation
Dernière réponse : dans Programmation
13 Mars 2006 16:06:27

Bonjour à tous et à toutes,

Je vous explique mon problème. J'ai créé une inscription en php, la connexion et la séléction de la base marchent nickel, aucuns problèmes avec la gestion des doublons et j'arrive sans problèmes à
inscrire un premier utilisateur.

Voici le code mysql de création de la table :

  1. create table user (
  2.  
  3. coduser integer(11) not null ,
  4. username varchar(50) not null ,
  5. password varchar(50) not null ,
  6. nom varchar(50) not null ,
  7. prenom varchar(50) not null ,
  8. date_nai date not null ,
  9. adresse varchar(70) not null ,
  10. code_postal decimal(5) not null ,
  11. ville varchar(50) not null ,
  12. pays varchar(50) not null ,
  13. telfix decimal(15) not null ,
  14. telmob decimal(15) not null ,
  15. email varchar(50) not null ,
  16.  
  17. constraint pk_user primary key (coduser) );


Mon problème se manifeste lorsque j'essaye d'inscrire un deuxième utilisateur...
La requette suivante :

  1. INSERT INTO user (username, password, nom, prenom, adresse, code_postal, ville, pays, telfix, telmob, email) VALUES ('test', 'test', 'test', 'test', 'test', '0', 'test', 'test', '0', '0', 'test')


ne fonctionne pas et le message suivant apparait :

"Erreur SQL ! Duplicata du champ '0' pour la clef 1"

Vous remarquerez que je n'ai pas inclu la clé primaire (coduser) dans la requete INSERT car d'après ce que j'ai lu dans plusieurs articles, mysql se charge d'alimenter le champ de la clé primaire (défénie en integer) lorsque celui - ci n'est pas renseigné...

J'ai également essayé avec la requete suivante :

  1. INSERT INTO user (coduser, username, password, nom, prenom, adresse, code_postal, ville, pays, telfix, telmob, email) VALUES ('', 'test', 'test', 'test', 'test', 'test', '0', 'test', 'test', '0', '0', 'test')


mais le résultat ne change pas...j'avoue m'être retourné le cerveau pendant un bon bout de temps mais je ne trouve pas le pourquoi du comment...

help please ! Merci d'avance

+ Sacrilege +

Autres pages sur : difficultes inscription php erreur mysql

13 Mars 2006 16:32:00

je pense que la clé primaire ne s'incère automatiquement que lorsque l'option autoincrement du champ est choisie.
L'erreur est clair c'est que la valeur du champ "coduser" est déjà inscrite dans la base.

essaie de vider la base avant et de reprendre après.
13 Mars 2006 17:01:51

effectivement, met ton coduser en primary et auto_increment dans la structure de la table, et lors de l'insertion procede ainsi :

insert into truc (coduser, .....) values ('',.....)
Contenus similaires
13 Mars 2006 22:22:00

je fais un peu doublon avec okinou mais je pense aussi que ce que tu a lu à propos de mysql qui se charge d'attribuer une valeur à l'index se rapporte à AUTO INCREMENT
pour l'utiliser, il te suffit de, lorsque tu crées ta table, d'écrire ceci:
coduser int4 NOT NULL AUTO_INCREMENT
au lieu de coduser integer...
ensuite, lorsque tu entrera une nouvelle ligne
(comme ceci :INSERT INTO user (coduser,...) VALUES ('','test', ...))
ton champ coduser s'incrementera automatiquement de 1.

tu optiendras donc:
coduser---nom---etc---
---1--------test---test---
---2--------test---test---
---3--------test---test---
14 Mars 2006 01:19:56

Merci pour vos messages, le problème est résolu, j'ai ajouté "auto_increment" après le "not null" du coduser

  1. coduser integer(11) not null auto_increment,


associé à la requete suivante :

  1. INSERT INTO user (username, password, nom, prenom, adresse, code_postal, ville, pays, telfix, telmob, email) VALUES ('$username', '$password', '$nom', '$prenom', '$adresse', '$code_postal', '$ville', '$pays', '$telfix', '$telmob', '$email');


Mysql assigne lui même la valeur du coduser.

Thanks for the help

+ Sacrilege +
14 Mars 2006 14:02:45

et voilà une affaire résolue...
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS