Fonctions et astuces en vrac

Ci-après un pot pourri de quelques trucs "inventés" au fil des problèmes et autres cahiers des charges...

Tabulation automatique

HTML, concernant les éléments de type ancre ou formulaire, offre la possibilité de circuler dans une page avec la touche tabulation du clavier. Cette possibilité est remarquable pour les personnes handicapées ou ayant une mobilité réduite. Encore faut-il que ces éléments apparaissent dans un ordre logique. Sans parler d'une page en PHP, dont les dits éléments ne sont pas toujours affichés dans le même ordre, ou pas affichés du tout. Voici comment implémenter tabindex :

<? $tabindex = 1; // en début de page ou de section ?>
<ul>
   <li><a href="#" tabindex="<?= $tabindex; $tabindex++;?>">Link1</a>
   <li><a href="#" tabindex="<?= $tabindex; $tabindex++;?>">Link2</a>
   <li><a href="#" tabindex="<?= $tabindex; $tabindex++;?>">Link3</a>
</ul>

Faut-il signaler qu'un élément dans lequel tabindex est déclaré sera prioritaire sur tout autre élément qui en est exempt. C'est le cas pour le menu de ce site, ci-dessus, pourtant placé en bas de code.

Attraper la bonne variable

Toute variable passée en URL (query string) ou via un formulaire, doit être récupérée via les variables d'environnement dites superglobales, essentiellement $_GET et $_POST. Pour simplifier on utilise $_REQUEST :

<?
// récupération de $id
$id = (isset($_REQUEST['id'])) ? $_REQUEST['id'] : 0;
if($id) echo "<p>ID vaut : $id</p>";
echo "<p><a href='?id=1'>ID vaut 1</a></p>";
?>
<form action="<?= $_SERVER['PHP_SELF']?>" method="post">
<input name="id">
<input type="submit" value="GO">
</form>

Body/background CSS variable

Si l'on souhaite modifier le fond de chaque page sans avoir à le stipuler dans la même feuille de styles (avec des identifiants à chaque <body>), une solution souple existe. A supposer que les paramètres suivants sont identiques, on définit d'abord les styles de base de background dans le fichier styles.css :

/* couleur, position, répétition */
body { background: #ccc 95% 95% fixed no-repeat }

Chargé en toutes pages dans un fichier header.php (qu'on inclut systématiquement) il suffit ensuite d'y déterminer l'image de fond en fonction du nom de fichier, grâce à basename() :

<?
// extraction du nom de fichier courant, sans extension
$pageName = basename($_SERVER['PHP_SELF'],".php");
// attribution de l'image (et du titre, par la même occasion)
switch($pageName) {
  case 'contact': $imagefond = "images/body-contact.gif"; $title = "Contact"; break;
  case 'liens': $imagefond = "images/body-liens.gif"; $title = "Liens"; break;
  default: $imagefond = "images/body-index.gif"; $title = "Accueil"; break;
}
?>
<html><head>
<title><?= $title?></title>
<link type="text/css" rel="stylesheet" href="styles.css">
<style type="text/css">
body { background-image: url("<?= $imagefond?>") }
</style>
</head><body>

Le fichier index.php, par exemple, sera écrit ainsi :

<? include('header.php'); ?>
<div>Hello</div>
</body></html>

http://dev.ppan.net [Haut de page]