Pour présenter les résultats d'une sélection multiple on utilise généralement une table HTML comme dans l'exemple ci-dessous. La table est bien sûr mise en forme et "stylée" avec CSS.
Pour ne pas avoir un script comme le précédent avec du code CSS "brutalement" intégré au milieu de PHP, nous pouvons modifier dans bib_fonctions.php la fonction htmlDebut pour qu'elle accepte comme second paramètre éventuel le nom d'un fichier contenant une feuille de styles CSS :
/**
* Envoie à la sortie standard le début du code HTML d'une page
*
* @param string $titre Titre de la page
* @param string $css Fichier CSS éventuel
*/
function htmlDebut($titre, $css = '') {
$titre = htmlentities($titre, ENT_COMPAT, 'ISO-8859-1');
if ($css != '') {
$css = "<link rel='stylesheet' href='$css'>";
}
echo '<!DOCTYPE html>',
'<html lang="fr">',
'<head>',
'<meta charset="ISO-8859-1">',
'<title>', $titre, '</title>',
$css,
'<style>',
'body { font-size: 13px;',
'font-family: Verdana, sans-serif}',
'h3 { font-size: 15px;',
'margin: 0 0 15px 0;',
'padding: 5px 0;',
'text-align: center;',
'background: #FFF5AB}',
'h4 { font-size: 13px;',
'margin: 1em 0 0 0;',
'padding: 3px;',
'background: #ebebeb}',
'label {display: block;',
'font-weight:',
'bold;margin-top: 10px;}',
'</style>',
'</head>',
'<body>',
'<h3>', $titre, '</h3>';
}
Le code du fichier bd.css :
.tab-bd {
border-collapse: collapse;
border-spacing: 0;
margin: 0 auto;
min-width: 340px;
}
.tab-bd tr:nth-child(odd) {
background: #eee;
}
.tab-bd tr:first-child {
background: #ccc;
font-weight: bold;
}
.tab-bd td {
border: 1px solid #ddd;
padding: 2px;
vertical-align: top;
}
Et le résultat :
De la même que vous avons déplacer le code CSS du script, nous pouvons déplacer le code HTML qui s'occupe de la table dans 2 nouvelles fonctions de notre bibliothèque bib_fonctions.php.
La fonction htmlLigne va générer le code HTML d'affichage d'une ligne d'une table. A noter que nous utilisons une boucle foreach pour prendre en compte aussi des tableaux avec un indice numérique que des tableaux associatifs.
/**
* Envoie à la sortie standard une ligne d'une table HTML
*
* @param array $elts Elements à afficher dans les colonnes
*/
function htmlLigne($elts) {
echo '<tr>';
foreach ($elts as $elt) {
echo '<td>', $elt, '</td>';
}
echo '</tr>';
}
La fonction htmlTable va générer le code HTML d'affichage de l'en-tete d'une table.
/**
* Envoie à la sortie standard l'en-tête d'une table HTML
*
* @param array $titres Titres de colonnes de la table
* @param string $css Classe CSS éventuelle de la table
*/
function htmlTable($titres, $css = '') {
echo '<table', ($css == '') ? '>' : " class='$css'>";
htmlLigne($titres);
}
Et le résultat :