Page 1 sur 2

Gestions d'articles contenants des médias (images, vidéos..)

Posté : 08 nov. 2011, 15:36
par The_Moye
Bonjour,

Je suis en train de refondre mon site internet de fond en comble, et j'aimerais avoir votre avis sur la meilleure façon de gérer, récupérer et afficher mes différents articles ainsi que les médias associés.
Pour le moment, je suis ce schéma ci :

Articles dans une base SQL -> récupérés par PHP, affichés les uns sous les autres -> mise en page plus dynamique avec JavaScript / JQuery.

Mes articles sont stockés dans une table "articles" ayant pour champs principaux :

_ ID (clef primaire, auto-incrémenté),
_ Thumb (image représentative de l'article),
_ Section (la section dans laquelle se situe l'article),
_ Titre (le titre de l'article),
_ Texte (les différents paragraphes de l'article),
_ Medias (les médias associés à l'article).

On distingue 3 "types de page" différents dans ce que j'aimerais obtenir sur mon site :

_ L'accueil, qui liste les 5 derniers articles ajoutés en affichant:
_ L'image Thumb,
_ Le titre,
_ La section,
_ Le premier paragraphe du texte.

_ Une page par section, qui liste tous les articles disponibles dans cette section, en paginant le tout et afficherait :
_ L'image Thumb,
_ Le titre,
_ La section,
_ Le texte et les médias.

_ Une page affichant les articles résultants d'un moteur de recherche interne affichant :
_ L'image Thumb,
_ Le titre,
_ La section,
_ Le texte et les médias.


Mes premières questions concernent la manière de stocker mes articles, puis de les afficher.
Est-ce une bonne idée de différencier le texte des médias dans deux champs SQL différents ?
J'ai procédé de la sorte afin d'éviter de tout retourner lors du listing des derniers articles sur l'accueil de mon site, évitant un traitement supplémentaire du genre "ne pas afficher les images".
Mais du coup, comment spécifier à quel endroit de l'article je souhaite qu'une image, une vidéo ou n'importe quoi d'autre soit affiché?

Je pensais remplir mon champs Texte de la sorte :
<p>Un paragraphe</p>
<p>Un paragraphe</p>
[media0]
<p>Un paragraphe</>
[media1][media2]
Et mon champs Medias :
[video]LienVideo[/video]
[video]LienVideo[/video]
[images]LienImage01,LienImage02,LienImage03[/images]
Ensuite mon fichier PHP s'occupe d'insérer en HTML les médias qui vont bien.

Peut être existe il une meilleur façon de gérer ce genre de chose?

Voilou, merci pour votre aide ;)

Re: Gestions d'articles contenants des médias (images, vidéo

Posté : 08 nov. 2011, 15:47
par moogli
salut,

1/ tu ne devrais pas avoir de html dans la table, car la c'est pour du html, mais demain on te demande un autre format tu fait comment ? (génération de pdf, bon tu me dira y a html2pdf, mais c'et du latex ? du texte tout bete etc etc).

2/ pourquoi ne pas mettre les "media" dans le texte (au final c'est bbcode style ton affaire ;)

@+

Re: Gestions d'articles contenants des médias (images, vidéo

Posté : 08 nov. 2011, 15:56
par The_Moye
Salut moogli, merci pour ta réponse !
1/ tu ne devrais pas avoir de html dans la table, car la c'est pour du html, mais demain on te demande un autre format tu fait comment ? (génération de pdf, bon tu me dira y a html2pdf, mais c'et du latex ? du texte tout bete etc etc).
C'était un premier jet, étant le patron sur mon site, je sais par avance que je n'aurais que du HTML à traiter ici. :)
Mais si tu as mieux à me proposer, dans la manière de gérer le contenu de mes articles, je suis ouvert !
2/ pourquoi ne pas mettre les "media" dans le texte (au final c'est bbcode style ton affaire ;)
Comme précisé plus tôt, ça m'évite d'avoir à traiter le contenu de mon champs Texte lorsque je n'ai besoin d'afficher que mon texte, sans les médias.
Puis ça me permettra par la suite de créer rapidement une page listant tous les médias relatifs à une recherche.
Mais là encore, si tu as mieux à proposer, je suis là pour ça ! :mrgreen:

Re: Gestions d'articles contenants des médias (images, vidéo

Posté : 10 nov. 2011, 15:55
par The_Moye
Bonjour tout le monde, c'est encore moi !

Je suis en train de me poser la question suivante : et en XML?

Est-il valable de stocker du XML dans une Base de Données, qui serait exploité par PHP (genre via XMLReader) ?

Ça me permettrait de stocker les références vers mes médias d'une manière un peu plus chouette, genre :

Code : Tout sélectionner

<Media type="Gallerie"> <Image source="" alt="" link="" description=""/> <Image source="" alt="" link="" description=""/> <Image source="" alt="" link="" description=""/> <Image source="" alt="" link="" description=""/> </Media> <Media type="Video"> <Video source="" description=""/> </Media>
Mais ça ne résout pas le problème du "comment insérer tel média à tel endroit dans mon article".

Des idées?

Re: Gestions d'articles contenants des médias (images, vidéo

Posté : 10 nov. 2011, 16:55
par moogli
non, la c'est défaut de conception !

si tu a plusieurs chose associé à une autre il faut faire deux entités différentes
exemple
des documents relatifs à une news,
une table news
une table documents qui va contenir la clef primaire de la news "comme référence" tu va donc pouvoir insérer dans cette table autant de documents que tu souhaite (quelque soit la nature).

après je ne vois pas trop pourquoi tu ne met pas les elements dans le texte.

s'il s'agit de lien tu peux très bien utiliser un truc à la bbcode style comme tu le met dans ton 1er message
[video]LienVideo[/video]
[video]LienVideo[/video]
[images]LienImage01,LienImage02,LienImage03[/images]
Et après une moulinette qui remplace par la bonne balise (voir les pléthores de parseur bbcode sur le net ;) )

dit nous où tu bloque sur ce système !

@+

Re: Gestions d'articles contenants des médias (images, vidéo

Posté : 10 nov. 2011, 18:37
par The_Moye
Salut moogli, merci pour ta réponse,

J'aimerais pouvoir dissocier les médias associés à un article (images, vidéos, fichier dives et variés à télécharger...), de l'article en lui même.

Au début, j'étais justement parti la dessus :

_ Une table article, contenant le texte de l'article, la sections, sous sections, liste d'ID de médias, tags ...etc,
_ Une table media, contenant, pour chaque média son type, un titre, une alternative (pour les images), une description, sa source... et un ID unique.

Mais je me suis dit qu'il était peut être possible de faire sensiblement la même chose en stockant directement les médias, encadrés par des balises, dans la table article.
Apparemment je me suis trompé ;)
après je ne vois pas trop pourquoi tu ne met pas les elements dans le texte.
J'aimerais les séparer pour plusieurs raisons :

_ Pouvoir ne sortir que le texte sur ma page d'accueil, sans trop mouliner ( :) ),
_ Permettre une recherche par médias (ex : sortir toutes les images de tous les articles, correspondant à un tag),
_ Pouvoir mettre une place une galerie "globale", de toutes les images par exemple.
s'il s'agit de lien tu peux très bien utiliser un truc à la bbcode style comme tu le met dans ton 1er message
Il me faudrait plus que le le lien, du genre une description, un titre, une alternative...
Et après une moulinette qui remplace par la bonne balise (voir les pléthores de parseur bbcode sur le net ;) )
C'est pour ça que j'ai pensé à du XML, en ayant fait un chouilla via JavaScript, je n'aurais pas trop été perdu pour "mouliner" :D


Pour résumer, tu me conseilles de faire comme je le pensais au début?

Une table contenant ma liste d'articles, identifiés par un ID unique, le texte, les tags associés ... - d'autres info - ... la liste des ID des médias associés à l'article,
Une table contenant ma liste de médias, identifiés par un ID unique, le type, la source, le titre ... - d'autres infos -.

Re: Gestions d'articles contenants des médias (images, vidéo

Posté : 10 nov. 2011, 21:05
par moogli
en fait la structure est un poil différentes la

faut trois tables
une pour les articles
une pour les media
une pour les type de media, histoire de ne pas avoir de redondance et de truc foireux du genre dvd et DVD :)

@+

Re: Gestions d'articles contenants des médias (images, vidéo

Posté : 10 nov. 2011, 21:17
par The_Moye
une pour les type de media, histoire de ne pas avoir de redondance et de truc foireux du genre dvd et DVD :)
Sur ce point, il va falloir éclairer ma lanterne :d

Re: Gestions d'articles contenants des médias (images, vidéo

Posté : 11 nov. 2011, 13:23
par moogli
il s'agit la de l'application des première forme normale qui réclame, entre autre l'unicité d'une information (pertinente).

donc tu ne peux avoir une table avec 48 fois 'dvd' ou 'cd' 'ou 'image'

Sachant que les recherches sont généralement sensible a la casse tu ne va pas différencier les erreurs du type DVD ou dvd :)

de plus pour changer un type (par exemple de cd à cédérom qui est français) avec ta façon de faire tu va devoir mettre a jour tout les tuples de la table (opération extrêmement gourmande en terme de performance). Avec ce que je te propose tu ne modifie qu'une ligne ;)

la mcd
Image

regarde sur internet les formes normales sql et pour aller avec les jointures :)


@+

Re: Gestions d'articles contenants des médias (images, vidéo

Posté : 11 nov. 2011, 13:47
par The_Moye
Salut moogli,

Ah oui oui oui, c'est beaucoup plus clair comme ça !
Du coup, j'imagine qu'il va me falloir une table de plus, contenant les tags associés aux articles.

Re: Gestions d'articles contenants des médias (images, vidéo

Posté : 11 nov. 2011, 14:30
par moogli
hum ça depend des relations entre les tables il peux falloir une table en plus

j'ai modifié le mcd au dessus en conséquence la relation tagsarticle sera une tables qui contiendras la idarticle et idtags afin d'avoir plusieurs tag par articles, sans démultiplier les tags !


@+

Re: Gestions d'articles contenants des médias (images, vidéo

Posté : 06 déc. 2011, 19:42
par The_Moye
Bonjour Bonjour,

Désolé pour le temps de réponse moogli, j'ai été pas mal occupé ailleurs :roll:
Mais me voici de retour, et bien décidé à terminer la refonte de mon site!

Je me suis donc relancer dans SQL, en écoutant tes précieux conseils.
Mais voilà qu'une nouvelle question me taraude l'esprit concernant la façon de récupérer les infos de mes médias (type, source...) pour un article donné.

Je pensais bêtement utiliser une requête imbriquée :

Code : Tout sélectionner

SELECT medias.source, medias.type FROM medias WHERE medias.id IN (SELECT articles.medias FROM articles WHERE articles.id = 2)
Mais ça ne fonctionne pas, enfin la requête me retourne seulement le premier élément de la liste des médias pour cet article.
J'imagine que ça vient de la façon dont je stock cette liste de médias (un champs TEXT contenant par exemple "2,3,4". 2, 3 et 4 faisant référence aux id de médias associés.) et / ou le non traitement du retour de ma sous requête.

Ma sous requête retourne (j'imagine) une chaine de caractère et ma requête principale attend une liste d'INT non?
Est-ce que SQL peut faire la conversion?
Est-ce que je m'y prends (encore) mal? 8-|

Re: Gestions d'articles contenants des médias (images, vidéo

Posté : 10 déc. 2011, 15:53
par The_Moye
Bonjour, c'est encore moi !

En fait, il me faut peut être une table entre les deux non?
Une table qui ferait le lien entre ma table Articles et ma table Medias ?

Re: Gestions d'articles contenants des médias (images, vidéo

Posté : 10 déc. 2011, 15:57
par moogli
ca depend de la relation entre les tables :)
si tu peux avoir plusieurs media par article oui une troisième table di, id article, idmedia :)



@+

Re: Gestions d'articles contenants des médias (images, vidéo

Posté : 10 déc. 2011, 16:03
par The_Moye
D'accord, merci moogli, c'est tout à fait ça ;)