Champ mysql auto_increment

bins
Invité n'ayant pas de compte PHPfrance

03 août 2005, 15:59

Bonjour,
Je voudrais faire un champ en clé primaire et avec auto increment mais qui commence par 2005-[nb en auto increment], comment faire ?

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

03 août 2005, 16:04

impossible avec le -

en autoincrement c'est un nombre

bins
Invité n'ayant pas de compte PHPfrance

03 août 2005, 16:08

et on peut meme pas 2005_[autoincrement] ? je voudrais en fait pouvoir mettre un prefixe statique devant le auto increment

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

03 août 2005, 16:11

en autoincrement c'est un nombre
tiret ou souligné c'est pareil

si ce préfixe ne change pas, met le dans le code et concatène le avec le numéro

pourquoi as-tu besoin de ce préfixe ? à quoi correspond cet identifiant ?

bins
Invité n'ayant pas de compte PHPfrance

03 août 2005, 16:49

Pour savoir par le numéro auto_increment : l'année

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

03 août 2005, 16:52

on ne stocke pas une année dans le champ d'identification

un identifiant sert à identifier la ligne, à la repérer grâce à un numéro unique
auto increment est le moyen pratique de ne pas faire toutes les manipulations pour créer ce numéro

si tu veux stocker une année : tu fais un champ de type entier et tu la mets dedans
ou un champ date

mais là tu va mélanger des types de données et ça ne pourra que te créer des problèmes par la suite

bins
Invité n'ayant pas de compte PHPfrance

03 août 2005, 19:22

En fait ce sont des numéro de fiche, et qui sert d'identifient. Pour le premier inscrit son numéro sera 1 et c'est trop court pour un identifiant

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

03 août 2005, 19:24

pourquoi est-ce trop court ???

Mammouth du PHP | 543 Messages

03 août 2005, 19:27

parce que quand l'administration t'envoi une fiche X ou Y, t'a toujours un numero a 50 ou 60 chiffres qui t'es attribué :p

Il veut ptetre faire pareil :)

bins
Invité n'ayant pas de compte PHPfrance

03 août 2005, 19:29

Oué mais 10 chiffres

Mammouth du PHP | 543 Messages

03 août 2005, 19:32

faut pas le mettre en auto-increment alors :)

bins
Invité n'ayant pas de compte PHPfrance

03 août 2005, 19:36

Ok mais je veut qu'il augmente de 1 automatiquement

Mammouth du PHP | 543 Messages

03 août 2005, 19:39

Mais je vois pas pourquoi "1 ca fait court".
Le premier est 1 c'est tout -_-

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

03 août 2005, 19:47

c'est clair, quand t'es le premier t'as le numéro 1, quand t'es le 500 000ième abonné, t'as 6 chiffres

et quand t'as la carte n°1, 25 ans après quand le club est connu tu te la pètes, et t'es célèbre quand tu meurs, comme l'abonné numéro du F.C. Barcelone :lol:

non sérieusement je ne vois pas pourquoi tu veux avoir 10 chiffres...

mais si tu veux vraiment il y a l'attribut ZEROFILL, qui complétera avec des 0 jusqu'à la longueur voulue
Modifié en dernier par ouckileou le 03 août 2005, 19:49, modifié 2 fois.

Mammouth du PHP | 19672 Messages

03 août 2005, 19:47

Fais le par programmation : récupère le plus grand nombre enregistré avec un SELECT MAX(nom_du_champ) puis fais une extraction de la partie que tu veux incrémenter. Incrémente là et refais la concaténation avec le préfixe que tu veux (ici 2005 si j'ai bien compris que tu peux même récupérer avec date("Y") pour l'année en cours ce qui t'évite de le programmer en dur) et quand tu fais ton insertion, utilises le résultat pour alimenter ce champ là.

De la manière dont tu veux procéder, il n'y a pas vraiment d'autre méthode.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: