8792 sujets

Développement web côté serveur, CMS

Comment puis-je faire prendre à mon champ ID (pour l'instant il est en INT AUTOINCREMENT) un zéro pour les chiffres en dessous de 10 ??
gordie a écrit :
Comment puis-je faire prendre à mon champ ID (pour l'instant il est en INT AUTOINCREMENT) un zéro pour les chiffres en dessous de 10 ??


IMPOSSIBLE ! (du moins avec un INT)
En plus quel intérêt ?
Il te faut un varchar pour faire ça je pense... mais tu perds les gros avantages du int auto_increment, et je ne vois pas non plus vraiment quelle en est l'utilité ?
Modérateur
Bonjour,

Gordie, est-ce seulement pour afficher à l'écran "01, 02, 03, 04, 05, 06, 07, 08, 09, 10, etc..." ?

Si c'est le cas, disons que tu veux le faire en PHP, fais une recherche sur google pour :

"PHP number format" ou "PHP leading zero".
Modifié par Tony Monast (28 Nov 2006 - 20:25)
QuentinC a écrit :
Il te faut un varchar pour faire ça je pense... mais tu perds les gros avantages du int auto_increment, et je ne vois pas non plus vraiment quelle en est l'utilité ?
Surtout que si c'est dans une optique de présentation sur deux caractères, ça suppose que l'id ne dépassera jamais 99...
Je vous explique, peut-être saurez vous m'aider.
J'ai une table remplie d'articles de presse concernant des films.

Les films sont répertoriés dans une table et ont chacuns leur ID.

La table articles possède un champs filmid, de la forme "X,X,X,X," ou X correspond à un ID de film.
Après, je fais une condition dans ma requête d'affichage d'articles :
WHERE filmid like '$_ID,%'


Exemple :
-l'article 18 concerne les films 1 et 12 (filmid = 1,12,)
-l'article 19 concerne les films 3 et 21 (filmid = 3,21,)

Et bien quand je voudrai afficher les articles pour le film 1, il me sortira l'article 18 ET 19 car il fait

WHERE filmid like '1,%'
et trouve donc quelque chose de correspondant dans le champs filmid de l'article 19 : filmid = 3,21,.

Si je pouvais rajouter un 0 avant les ID des chiffres en dessous de 10 dans ma table film, il ferait
WHERE filmid like '01,%'


Et donc le problème serait résolu.

Si vous avez une solution, je suis preneur...
Modifié par gordie (28 Nov 2006 - 21:53)
Ah...
Si je rajoute une virgule au début du champs filmid ainsi que dans ma condition LIKE ???
Modifié par gordie (28 Nov 2006 - 21:55)
Modérateur
... et si tu restructurais correctement la base de données en créant une table intermédiaire, du genre :

tblArticles (ArticleID, Titre, etc..)
tblFilms (FilmID, Titre, etc...)
tblArticlesFilms (ArticleID,FilmID)

Tu pourrais relier chaque article à un ou plusieurs films et l'extraction des données serait efficace et facile. Qu'en pense-tu ?
Tony Monast a écrit :
Tu pourrais relier chaque article à un ou plusieurs films et l'extraction des données serait efficace et facile. Qu'en pense-tu ?
Ca parait en effet bien plus adapté... ! Surtout que ta "solution", gordie, ne prend pas en compte le cas que j'évoquais (c'est-à-dire celui où il y a plus de 99 films). C'est vraiment du bricolage...
Modifié par Eldebaran (28 Nov 2006 - 22:49)
Un mot rapide pour préciser que MySQL offre la possibilité de rajouter des zéros avec l'option ZEROFILL (http://dev.mysql.com/doc/refman/5.0/fr/numeric-types.html)

Pour le reste je suis de l'avis Tony, restructurer tes données est une bien meilleure solution.