[RESOLU] Création d'une "galerie d'art" dynamique

Eléphant du PHP | 79 Messages

09 sept. 2013, 15:54

Bonjour à tous et à toutes,

J'ai précédemment créé un espace membre, et j'aurais besoin d'aide pour créer une "galerie d'image", permettant à un membre inscrit, de publier une ou des images, avec un titre et une description, etc..

Pour cela j'ai commencé par créer une nouvelle table dans ma base de donnée membres ( contenant toutes les informations des membres inscrit )
-- Structure de la table `oeuvre_artiste`
--

CREATE TABLE IF NOT EXISTS `oeuvre_artiste` (
`artiste_id` int(11) NOT NULL,
`titre_oeuvre` varchar(100) NOT NULL,
`description_oeuvre` text NOT NULL,
`image_oeuvre` varchar(100) NOT NULL DEFAULT 'défaut.jpg',
`oeuvre_categorie` int(11) NOT NULL,
`oeuvre_id` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`oeuvre_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Stockage oeuvre' AUTO_INCREMENT=1 ;
N'ayant pas de très bonne base, je souhaite m'assurer que chacune de mes actions ne comporte pas d'erreur ^^.

Artiste_id contiendra l'identifiant du membre qui publie l'oeuvre,
oeuvre_id contiendra un numéro qui s'auto incrémentera au fur a mesure de l'insertion d'une nouvelle oeuvre.

concernant la contenue de l'image :
image_oeuvre, contiendra le nom de l'image ( par défaut j'ai mis defaut.jpg, mais si c'est une image png par exemple, cela causera t'il un soucis ? ) j'ai précédemment réalisé une sorte de système identique pour l'image avatar du membre mais ce système ne permet de contenir qu'une image de profil pour chaque membre, je ne sais donc pas si la structure de la table est bonne pour une galerie d'image, contenant plusieurs oeuvres sous le nom du même artiste.

Merci pour votre attention et votre aide.
Créateur du site www.crobara2bal.com.

testa
Invité n'ayant pas de compte PHPfrance

09 sept. 2013, 16:52

Vous pourriez faire quelques optimisations sur le type de données que vous stockez mais ce n'est pas primordial donc non il n'y a pas de problème à priori ^^.
Vous avez la possibilité d'utiliser le type ENUM pour les catégories d’œuvres si vous le souhaitez au lieu d'utiliser des chiffres (`oeuvre_categorie` ENUM( 'cat1', 'cat2', 'cat3', 'autre' ) NOT NULL DEFAULT 'autre') par exemple, ça prend peu de place et on s'y retrouve mieux mais ça dépend de l'utilisation que vous en faite. Chaque champ contient des informations mais il ne les contrôle pas, image_oeuvre (de type varchar, donc une chaîne de caractère comportant comme vous l'avez défini au maximum 100 caractères) peut donc très bien contenir "defaut.jpg" comme "monalisa.png".
De même il peut y avoir plusieurs entrées d'utilisateurs comportant les mêmes informations, seul votre clé primaire (oeuvre_id) ne doit pas contenir deux fois la même information.

Eléphant du PHP | 79 Messages

10 sept. 2013, 13:12

Re,
Merci pour ton aide :D,

j'ai rajouté un champs date de créa de l'oeuvre, et date d'édition de l'oeuvre.
-- Structure de la table `oeuvre_artiste`
--

CREATE TABLE IF NOT EXISTS `oeuvre_artiste` (
  `artiste_id` int(11) NOT NULL,
  `titre_oeuvre` varchar(100) NOT NULL,
  `description_oeuvre` text NOT NULL,
  `image_oeuvre` varchar(100) NOT NULL DEFAULT 'défaut.jpg',
  `oeuvre_categorie` int(11) NOT NULL,
  `oeuvre_style` int(11) NOT NULL,
  `oeuvre_id` int(11) NOT NULL AUTO_INCREMENT,
  `date_crea` date NOT NULL,
  `date_edit` date NOT NULL,
  PRIMARY KEY (`oeuvre_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Stockage oeuvre' AUTO_INCREMENT=1 ;
Concernant 'oeuvre_categorie' si je ne me trompe pas il est également possible de le mettre en vachar et par la suite quand je créerai une nouvelle table pour gérer les catégories il me suffira juste de faire correspondre les noms des catégorie choisie ^^' ?

j'ai également créé 2 autres tables qui me permettra par la suite d'utiliser un fonctionnement dynamique pour la classification :)
-- Structure de la table `oeuvre_categorie`
--

CREATE TABLE IF NOT EXISTS `oeuvre_categorie` (
  `id_oeuvre_id` int(11) NOT NULL,
  `oeuvre_categorie` int(11) NOT NULL,
  `oeuvre_nom_cat` varchar(50) NOT NULL,
  `cat_ordre` int(11) NOT NULL,
  PRIMARY KEY (`id_oeuvre_id`),
  KEY `oeuvre_nom_cat` (`oeuvre_nom_cat`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Categorie des oeuvres';

-- Structure de la table `oeuvre_style`
--

CREATE TABLE IF NOT EXISTS `oeuvre_style` (
  `id_oeuvre` int(11) NOT NULL,
  `oeuvre_style` int(11) NOT NULL,
  `oeuvre_nom_style` varchar(50) NOT NULL,
  `oeuvre_style_ordre` int(11) NOT NULL,
  KEY `oeuvre_nom_style` (`oeuvre_nom_style`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Oeuvre style';

merci encore pour ton attention :).
Créateur du site www.crobara2bal.com.