1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193
| <?php
// diaporama.php
/* Ce script montre comment faire un diaporama en PHP
On n'affiche successivement toute les diapo d'un répertoire et on revient
à la première quand on a terminer ou on fait l'inverse.
Normalement si on rajoute ou enlève des diapos entre deux clics on met
de l'incertitude temporaire dans la chronologie mais l'algorithme ne plante pas.
Chaque appel doit fournir le répertoire et un n° de diapo
dans la chaîne de requête suivant l'url
On utilise la methode GET car on utilise des envoi par le menu.
Deux utilisations réalistes pour lancer ce script:
a) Un menu passe l'url du script et le n° de diapo 0 (zéro)
b) Dans une série de vignettes, le clic sur l'une d'elles
passe l'url du script et le n° de la vignette
*/
error_reporting(E_ALL &~E_NOTICE); // EasyPhp n'affiche pas les notices
// Initialisations
$b_diapo = false; // à priori, je n'ai pas de diapo (Pessimiste ?)
$texte = ''; // futur contenu du <body> html
$filtre = '\.(jpg|gif|png)'; // régex d'identification des extensions de diapo
$hauteur = '375'; // hauteur d'affichage des diapo en pixels
// A - C'est là que ça commence
// Est-ce que je connais le répertoire et le n° de la diapo ?
// Normalement comme dit ci-dessus, je peux recevoir ces informations grâce
// à un choix dans un menu. Le cas ci-dessous (par formulaire) risque d'être
// peu utilisé
// Mais c'est quand même là quil faut vérifier que l'uri est valide
if ( (isset($_GET['dir'])) && (isset($_GET['nr'])) ) {
$dir = $_GET['dir'];
$nr = $_GET['nr'];
$b_diapo = true;
}
if (!($b_diapo)) {
// Si je n'ai pas mes infos, je les demande
// renvoi au module appelant, à la page d'accueil ...
// ou, comme ici, par un formulaire
// (Le répertoire, est le répertoire relatif à celui du script)
$texte .= '<form action="'.$_SERVER['PHP_SELF'].'" method="get" name="diaporama">'
.'<input type="hidden" name="nr" value="0" />'
.'<input type="text" name="dir" value=""/>'
.'<input type="submit" value="Valider"/>'
.'</form>'
;
}
else {
// B - C'est là que ça recommence
// Je connais le répertoire et le n° de la diapo
// 1. je repère toutes les diapos du répertoire et je
// met leurs noms dans un tableau
if ( $handle = opendir($dir) ) {
while (false !== ($file = readdir($handle))) {
if (preg_match('/'.$filtre.'/s',strtolower($file))) {
$diapos[] = $file; // élément 0 du tableau puis suivants ;
}
} // on pourrait s'arrêter au n° de la diapo
closedir($handle);
} else {echo $dir.' NON TROUVE ';}
// 2. Si j'ai des diapos
if (isset($diapos[0])) {
$max = count($diapos); // nombre de diapo trouvées
if (!($nr<$max)) { // au cas ou on m'a oté des diapos entre-temps, je réduit le N°
$nr = $max-1;
}
// 3. J'affiche la diapo
$texte .= '<img src="'.$dir.'/'.$diapos[$nr].'" alt="" height="'.$hauteur.'" />';
// 4. Je fais un menu
$texte .= '<ul class="suivante">';
// (nr + (max+1)) modulo max = n° précédent
$texte .= '<li><a href="'
.$_SERVER['PHP_SELF'].'?dir='.$dir.'&nr='.strval(($nr+($max-1))%$max).'" >'
.' << Précédente '
.'</a></li>'
;
$texte .= ' ';
// Retour au module d'où je venais (event. modifier l'url)
$texte .= '<li><a href="'
.$_SERVER['PHP_SELF'].'" >'
.' ^Retour^ '
.'</a></li>'
;
$texte .= ' ';
// (nr + 1) modulo max = n° suivant
$texte .= '<li><a href="'
.$_SERVER['PHP_SELF'].'?dir='.$dir.'&nr='.strval(($nr+1)%$max).'" >'
.' Suivante >> '
.'</a></li>'
;
$texte .= '</ul>';
}
else { echo $_GET['dir'].' vide';}
// NB. l'utilisation de $_SERVER['PHP_SELF'] (moi-même) comme url
// permet de faire fonctionner ce script quelque soit son nom
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>Hotel Restaurant Beaurivage</title>
<link href="style.css" rel="stylesheet" type="text/css">
<!-- Pour avoir mon menu sur une seule ligne -->
<style type="text/css">
.suivante li {display: inline;}
</style>
</head>
<body>
<div id="global">
<div id="cadremaitre">
<div id="cadre-gauche">
<div class="MENU">
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<img src="puce.gif"><a href="Accueil.php"> Accueil </a><br />
<img src="puce.gif"><a href="Resto.php"> Le Restaurant</a><br />
<img src="puce.gif"><a href="Menujour.php"> Menu du Jour</a><br />
<img src="puce.gif"><a href="Menus.php"> Les Menus </a><br />
<img src="puce.gif"><a href="Carte.php"> La Carte</a><br />
<img src="puce.gif"><a href="Hotel.php"> L'Hotel</a><br />
<img src="puce.gif"><a href="Diapo.php"> Diaporama</a><br />
<img src="puce.gif"><a href="Bourget.php"> Le Bourget-Du-Lac</a><br />
<img src="puce.gif"><a href="Acces.php"> Plan D'Accès</a><br />
<img src="puce.gif"><a href="Histoire.php"> L'Histoire</a><br />
</div>
</div>
<div id="cadre-droite">
<div style="float:left"><img src="photos/25-1.jpg"></div>
</div>
<div id="cadre-haut">
Bienvenue Au Restaurant Beaurivage
</div>
<div id="cadre-text">
<div class="titre4">Entrez le NOM du diaporama (uniquement le texte souligné):<br />
<u>Les plats du chef</u>,ou:<u>Le lac du bourget</u>,ou encore:<u>Le restaurant</u><br /><br />
</div>
<?php
echo $texte;
?>
</div>
<div id="cadre-bas">
<a href="Contact.php">° Nous Contacter °</a>
</div>
</div>
</div>
</body>
</html> |
Partager