jeudi 31 Jan 2008

Javascript ou CSS dynamique en PHP

On pense souvent que PHP ne peut créer que des pages HTML, mais on peut bien sûr s'en servir pour créer toutes sortes de contenus textuels: fichiers Javascript, CSS ou XML (dont flux RSS) mais aussi des images ou des fichiers PDF.

Nous verrons le reste plus tard, commençons par Javascript ou CSS.

Admettons que je veuille utiliser un menu déroulant en Javascript, par exemple je peux reprendre le menu déroulant multi-niveaux fourni gracieusement sur Dynamic Drive.
Ce menu est fait avec 2 fichiers .js: l'un contenant le fonctionnement et l'autre contenant les textes à mettre dans le menu avec leur niveau de profondeur. Ce sont des tableaux en Javascript, plutôt bordéliques:

Menu1=new Array("Home","http://www.dynamicdrive.com","",0,20,138);
Menu2=new Array("News","blank.htm","",2);
Menu2_1=new Array("General","blank.htm","",5,20,150);
Menu2_1_1=new Array("CNN","http://www.cnn.com","",0,20,150);
Menu2_1_2=new Array("ABCNews","http://www.abcnews.com","",0);
Menu2_1_3=new Array("MSNBC","http://www.msnbc.com","",0);
        Menu2_1_4=new Array("CBSNews","http://www.cbsnews.com","",0);
        Menu2_1_5=new Array("Canadian News","http://news.bbc.co.uk","",2);
             Menu2_1_5_1=new Array("Vancouver Sun","http://www.vancouversun.com","",0,20,150);
             Menu2_1_5_2=new Array("CTV News","http://www.ctvnews.com","",0);
Menu2_2=new Array("Technology","blank.htm","",3);
Menu2_2_1=new Array("TechWeb","http://www.techweb.com","",0,20,200);
Menu2_2_2=new Array("News.com","http://www.news.com","",0);
Menu2_2_3=new Array("Wired News","http://www.wired.com","",0);

En générant tout ceci en PHP, on peut se retrouver simplement avec des boucles à gérer qui pioche le contenu dans une base de données.

Il suffit en fait de créer un fichier menu.js.php qui va écrire ce code tout seul. Ce fichier peut contenir la connexion à la base de données, la récupération des catégories, sous-catégories, et des valeurs $i, $j qui vont incrémenter le niveau de profondeur.

Menu<?php echo $i++; ?>=new Array("<?php echo $titre; ?>","http://<? echo $url; ?>","",0,20,138);

Le but est d'avoir en PHP le même contenu qu'on aurait écrit à la main, mais en pouvant gérer les catégories via une base de données. C'est le cas par exemple dans cette boutique d'accessoires de mode, le code source nous apprend
<script type='text/javascript' src='../scripts/menu_dyn.js.php'></script>

On peut bien sûr imaginer d'autres utilisation, et notamment en CSS où on peut ainsi faire choisir les couleurs à l'administrateur du site ou à chaque visiteur. Ensuite le fichier CSS dynamique va piocher les préférences en base de données pour construire l'apparence du site.


L'idéal est de bien indiquer en haut quel type de fichier on envoie. La fonction header() de PHP permet d'indiquer le type MIME du fichier envoyé. Cela permettra au navigateur de tout de suite identifié à quel type de données il a à faire.

On trouve aisément le type MIME des fichiers .css et .js puisqu'on l'indique en HTML lorsqu'on les appelle:

<script type="text/javascript" src="javascript.php"></script>
ou
<link rel="stylesheet" type="text/css" href="css.php" />

Cela nous donnera en tête de notre fichier PHP (c'est à dire avant d'envoyer le texte):
header ('Content-Type: text/javascript; charset=utf-8');

ou

header ('Content-Type: text/css; charset=utf-8');


café Cet article vous a aidé? 
Offrez-moi un café!
Agrégateur informatique

4 réponses à “Javascript ou CSS dynamique en PHP”

  1. Rétrolien de Flux RSS vers Atom - Azur Dev
  2. Rétrolien de Images en PHP avec GD2 - Azur Dev
  3. Rétrolien de Validation Javascript des commentaires - Azur Dev
  4. 1
    Aliou (ewedjexchange.com) a dit:

    Salut a tous, je suis nouveau dans le domaine de la conception de site web et là, c'est mon prémier site. toutes aides visant à parfairemon site sera la bienvenue.....aidez moi svp

Laisser un commentaire

Azur Dev