Comment bien structurer ma BD MySQL?

Mammouth du PHP | 545 Messages

30 déc. 2005, 23:33

Pour le type ENUM, tu dois mettre ENUM('valeur_1', 'valeur_2',... etc...) DAFAULT 'valeur_1' (par exemple) : tu as une erreur parce que tu essaye de mettre ENUM sans mettre une liste de valeurs.
Cela pose problème
Erreur

requête SQL :

ALTER TABLE `soc_categories` CHANGE `sexe` `sexe` ENUM( 1 ) NOT NULL

MySQL a répondu:


#1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '1) NOT NULL' at line 1
Cette table était déjà existante et voici les données
Image


Merci pour la lumière
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!

Mammouth du PHP | 19672 Messages

31 déc. 2005, 01:26

Pour que ça fonctionne, il faudrait utiliser un type dedonnées compatibles. Le type ENUM attend des chaines de caractères, donc en mettant ENUM(1), il y a erreur parce que 1 est considéré comme un entier. Il aurait fallu mettre ENUM('1'). J'ajoute cependant qu'on doit mettre toutes les valeurs qui seront éventuellement utilisées : s'il doit y en avoir deux, alors il faut deux valeurs: ENUM('1', '2') par exemple, ou encore ENUM('F', 'H')
Ce qui donne la requête suivante:

Code : Tout sélectionner

ALTER TABLE `soc_categories` CHANGE `sexe` `sexe` ENUM('H', 'F') NOT NULL DEFAULT 'H'
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 545 Messages

31 déc. 2005, 10:32

Code : Tout sélectionner

ALTER TABLE `soc_categories` CHANGE `sexe` `sexe` ENUM('H', 'F') NOT NULL DEFAULT 'H'

La majuscule et la minuscule ont-elle de l'importance? Dois-je aussi ajouter 'h' et 'f' au cas où ... ?

Merci
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!

Mammouth du PHP | 19672 Messages

31 déc. 2005, 10:56

Si tu parles des majuscules pour les mots clés SQL (SELECT, ALTER, etc...), ça n'a pas une importance capitale. Je les mets toujours en majuscule pour une question de confort de lecture, je repère beaucoup plus rapidement les différentes parties d'une requête de cette manière.

Si par contre tu parles des valeurs dans les champs de ta table, ça, c'est à toi de décider : tu peux mettre ENUM('F', 'H') ou ENUM('f', 'h'), c'est ton choix, il faut simplement savoir qu'il faudra en tenir compte lors des insertion de nouvelles lignes dans la table.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 545 Messages

31 déc. 2005, 11:25

Cela, je peux ENUM('F', 'H','f','h')? C'est que ce n'est pas moi, seulement, qui devrait faire l'encodage de tous les classements!

Merci et bonnnnnnnnnnnnnnnn reiveillon
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!

Mammouth du PHP | 19672 Messages

31 déc. 2005, 11:28

Pourquoi doubler les valeurs ? Lors de l'enregistrement tu peux mettre automatiquement les valeurs en minuscule avec strtolower() ou en MAJUSCULES avec strtoupper()
à ce moment là, tu n'a besoin que d'un seul exemplaire de chaque valeur dans tes valeurs ENUM.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Administrateur PHPfrance
Administrateur PHPfrance | 1275 Messages

31 déc. 2005, 16:06

Les valeurs d'un ENUM ne sont pas sensibles à la casse il me semble. Mais pour faire propre, il vaut mieux faire comme si.

Mammouth du PHP | 545 Messages

03 janv. 2006, 16:02

Voici la suite ... l'écriture des scripts de sortie! http://www.phpfrance.com/forums/voir_sujet-12699.php

Je ne mets pas encore [Réglé] car si il y a des erreurs, il faudra ... !

Merci
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!