HTML5 / CSS 2.x/3 / PHP / MySQL ...

Les champs de type ENUM

Au lieu de choisir un TINYINT, choisissez le type ENUM: dans les valeurs de ENUM, vous mettez 'Oui','Non'. Ca ne mange que 1 octet.

Le champ de type ENUM gère une association clé-valeur qui est transparente:

SELECT DISTINCT connaitre FROM matable

affiche:

oui
non

Modifions légèrement la requête:

SELECT DISTINCT connaitre+0 FROM matable
affiche:
0
1

L'intérêt du champ ENUM devient intéressant quand on a une collection limitée et fixe d'items mais de taille variable. Exemple, la liste des jours de la semaine:

'lundi', 'mardi'.....'dimanche'

Quelque soit la taille d'une valeur, elle occupera toujours un octet tant que le nombre d'items ne dépasse pas 255. On parle du nombre de combinaisons possibles pour un même champ ENUM et non d'enregistrements dans votre table.

Reprenons le cas avec 'oui','non'.

On veut rajouter un état en attente. Editez la structure de votre table. Rajoutez une clé-valeur en attente, ce qui insére un troisième état. Même si 'en attente' s'affiche sur 10 caractères, la valeur prise en base de données ne sera que de 1 octets!!!

Dans le formulaire HTML, il suffit d'écrire la valeur 'Oui' ou 'Non' et la transmettre au script PHP sans avoir jamais besoin de la traduire en 0 ou 1 ou toute autre valeur.

Tous les articles sur ce thème