7923 sujets

Développement web côté serveur, CMS

Bonjour,
J'aimerais faire un site web d'informations sur un jeu avec des articles. Pour cela on m'a dit qu'il faudrait utiliser une base de données. Jusque là d'accord, mais si j'ai bien compris une base de donnée contient uniquement du texte ce qui fait que je pourrais y mettre le contenu brute de mon article ( simplement le texte) mais alors comment y rajouter le CSS et le HTML pour faire mes paragraphes, mon header, mes <div>..?
Merci d'avance, parce que là c'est encore un peu flou...
Modifié par Kyks (09 Feb 2019 - 08:09)
Du HTML, du CSS, du Javascript, c'est du texte, tu peux donc mettre tout ça dans dans une base de données. On peut aussi y mettre des images, car il est possible de mettre des données binaires dans une base de données. Il est également possible d'encoder des images en base64.
Les sites de vidéo à la demande mettent même des films dans une base de données.
Le problème est plutôt de définir la base de données et de la gérer.
PapyJP a écrit :
Du HTML, du CSS, du Javascript, c'est du texte, tu peux donc mettre tout ça dans dans une base de données. On peut aussi y mettre des images, car il est possible de mettre des données binaires dans une base de données. Il est également possible d'encoder des images en base64.
Les sites de vidéo à la demande mettent même des films dans une base de données.
Le problème est plutôt de définir la base de données et de la gérer.


Oui mais du coup si je fait appel à cet article qui contient du CSS et du HTML et que je le met en lien est ce que la personne qui cliquera sur le lien de l'article va voir l'article normalement avec la présentation en CSS où est-ce qu'il va voir tout ce qui est écrit et que du coup le CSS sera considéré comme du texte et donc ne sera pas lu par le navigateur ?
Merci.
Dans ce cas, il faut faire un lien vers un programme PHP en lui passant en paramètre de quoi retrouver les infos dans la page, quelque chose comme https://monsite/retrieve.php
?article12345
C’est le programme "retrieve.php" qui ira rechercher la page "article12345" dans la base de données et l’enverra au client
PapyJP a écrit :
Dans ce cas, il faut faire un lien vers un programme PHP en lui passant en paramètre de quoi retrouver les infos dans la page, quelque chose comme https://monsite/retrieve.php
?article12345
C’est le programme "retrieve.php" qui ira rechercher la page "article12345" dans la base de données et l’enverra au client


Je suis d'accord mais admettons que dans ma base de données je fasse un article où il y a ça :"<div class="head">TEST</div>
.head{background-color=blue;}"
Est ce que quand je ferai appel à cet article de ma base de données quand je cliquerai dessus je verrais tout le texte où est-ce que le CSS et le HTML seront appliqués par le navigateur et on aura juste le contenu avec la mise en page du CSS écrit dans la base de donnée?
Kyks a écrit :

admettons que dans ma base de données je fasse un article où il y a ça :
<div class="head">TEST</div>
.head{background-color=blue;}

Base de données ou pas, c'est un mélange de html et de css que le navigateur ne comprendra pas.
Il faudrait quelque chose comme

<style type="text/css">.head{background-color:blue;}</style>
....
<div class="head">TEST</div>

Bien comprendre que:
- le serveur "fabrique" une chaîne de caractères et l'envoie au client
- le navigateur du client interprète cette chaîne de caractères et l'affiche, pour autant que ce qu'on lui envoie soit conforme à ce qu'il attend.

Le façon dont le serveur fabrique la chaîne de caractères, que ce soit simplement en envoyant le contenu d'un fichier ou en faisant des mélanges de textes tout prêts et de textes calculés, n'a aucune influence sur le fonctionnement du navigateur.

Bien comprendre aussi que pour afficher des données qui sont dans une base de données il est nécessaire qu'il y ait sur le serveur un bout de code (programme PHP ou autre langage similaire) qui aille chercher ces données et les envoie au client.
Ce programme devra
1) recevoir et valider les paramètres qui lui sont envoyés
2) ouvrir la base de données
3) élaborer une requête vers la base de données à partir des paramètres reçus
4) envoyer cette requête à la base de données
5) recevoir le résultat de cette requête
6) à partir de ces résultats, fabriquer une chaîne de caractères représentant le contenu d'une page HTML
7) envoyer ce résultat au client

Dans le cas le plus simple, où on aurait stocké dans la base de données une page HTML toute prête, l'étape 6 est réduite à pratiquement rien, mais il est nécessaire d'effectuer les 6 autres.
Meilleure solution
PapyJP a écrit :

Base de données ou pas, c'est un mélange de html et de css que le navigateur ne comprendra pas.
Il faudrait quelque chose comme

&lt;style type="text/css"&gt;.head{background-color:blue;}&lt;/style&gt;
....
&lt;div class="head"&gt;TEST&lt;/div&gt;

Bien comprendre que:
- le serveur "fabrique" une chaîne de caractères et l'envoie au client
- le navigateur du client interprète cette chaîne de caractères et l'affiche, pour autant que ce qu'on lui envoie soit conforme à ce qu'il attend.

Le façon dont le serveur fabrique la chaîne de caractères, que ce soit simplement en envoyant le contenu d'un fichier ou en faisant des mélanges de textes tout prêts et de textes calculés, n'a aucune influence sur le fonctionnement du navigateur.

Bien comprendre aussi que pour afficher des données qui sont dans une base de données il est nécessaire qu'il y ait sur le serveur un bout de code (programme PHP ou autre langage similaire) qui aille chercher ces données et les envoie au client.
Ce programme devra
1) recevoir et valider les paramètres qui lui sont envoyés
2) ouvrir la base de données
3) élaborer une requête vers la base de données à partir des paramètres reçus
4) envoyer cette requête à la base de données
5) recevoir le résultat de cette requête
6) à partir de ces résultats, fabriquer une chaîne de caractères représentant le contenu d'une page HTML
7) envoyer ce résultat au client

Dans le cas le plus simple, où on aurait stocké dans la base de données une page HTML toute prête, l'étape 6 est réduite à pratiquement rien, mais il est nécessaire d'effectuer les 6 autres.

Merci beaucoup ! Enfin je comprends ! Je vous remercie infiniment pour votre aide, maintenant je vais pouvoir commencer ce projet Smiley cligne
Salut
Je rajouterais même :
- Tu ne peux pas faire un "lien" vers une base de données au sens propre. Tu peux faire un lien VERS une page php qui ELLE suivant certains paramètre (dans l'url ou ailleurs) va aller chercher DANS ta base de donnée le bonne article (au format html SI TU VEUX) mais le css tu oublie. Je n'ai jamais vu du css dans un base de données. Ton Css est, normalement, dans un fichier statique hors base de données, au même titre que le JS.
JENCAL a écrit :
Salut
Je rajouterais même :
- Tu ne peux pas faire un "lien" vers une base de données au sens propre. Tu peux faire un lien VERS une page php qui ELLE suivant certains paramètre (dans l'url ou ailleurs) va aller chercher DANS ta base de donnée le bonne article (au format html SI TU VEUX) mais le css tu oublie. Je n'ai jamais vu du css dans un base de données. Ton Css est, normalement, dans un fichier statique hors base de données, au même titre que le JS.

Tu as raison
On peut imaginer de mettre le CSS et le JS dans une BDD, ce sont des fichiers texte au même titre que les fichiers HTML. Simplement il faudrait les référencer avec des adresses qui elles-mêmes appellent des pages php qui iraient les chercher.
Il en va de même pour les images ou les fichiers sons.
Pas impossible, mais ça ne ferait qu'ajouter à la complexité du bidule.

Mais ça veut dire aussi que la BDD et le système de fichiers sont à gérer de façon cohérente avec la plus grande attention.
Par exemple dans le design de mon site que je suis en train de rénover, si on prend un compositeur, disons Jean-Sébastien Bach, j'ai
- dans la BDD une table "Authors" avec une entrée

authorID: Bach
firstName: Jean-Sébastien
lastName: Bach
birth: 1685
death: 1750

- dans le système de fichiers
une image /images/authors/Bach.jpg
un répertoire /partitions/Bach
avec autant de sous-répertoires que d’œuvres au programme de ma chorale, et dans chaque sous répertoire les fichiers correspondant à la partition, les enregistrements, la traduction du texte, sa prononciation, etc.

C'est ce que j'appelle la "base de données étendue", et pour celle là, je ne peux pas m'appuyer sur les fonctionnalité d'un SGBD: je dois faire mon SGBD moi-même, l'utilisation de MySQL pour la BDD réduite aux infos n'étant qu'un élément de ce système.
Avant rénovation, les infos étaient dans des fichiers XML construits sur mon PC et transférés dur le serveur.
Mais du coup pour ton fichier avec tes images tu l'importe sur le serveur avec un client FTP du genre fizilla ?
On peut utiliser des mécanismes du genre de celui qui permet de charger des images sur le site Alsacreations, mais on ne peut pas charger un répertoire entier en une fois, un produit FTP est ce qu'il y a de plus simple à utiliser.