Accueil > > > EXEMPLE DE DIAPORAMA EN PHP
EXEMPLE DE DIAPORAMA EN PHP
Information sur la source
Description
Ce petit script montre le principe d'un diaporama en PHP. Il faut lui fournir par la methode GET le répertoire et le numéro de la nième photo à afficher (0 pour la première et il corrige si le numéro est trop élévé. Pour être autonome, ce diaporama est associé à un petit formulaire qui permet de choisir le répertoire (chemin relatif par rapport au script). Principe : On parcour le répertoire pour y trouver les images, connaître leurs noms et leurs numéros d'ordre. après avoir vérifié que le nuéro n'est pas supérieur au nombre maximum d'image, on affiche l'image associé à un menu proposant le numéro précédent, le numéro suivant et un retour au formulaire(Si on est à la dernière image, la "suivante" est la première et inversement pour la "précédente")
Source
- <?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 = '450'; // 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
-
- }
-
- ?>
-
-
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-
- <html>
- <head>
- <title>Choisir un image</title>
- <!-- Pour avoir mon menu sur une seule ligne -->
- <style type="text/css">
- .suivante li {display: inline;}
- </style>
- </head>
-
- <body>
-
- <?php
-
- echo $texte;
-
- ?>
-
-
- </body>
- </html>
<?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 = '450'; // 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
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Choisir un image</title>
<!-- Pour avoir mon menu sur une seule ligne -->
<style type="text/css">
.suivante li {display: inline;}
</style>
</head>
<body>
<?php
echo $texte;
?>
</body>
</html>
Conclusion
J'ai mis mes remarques et suggestions dans les commentaires
Historique
- 16 juin 2008 23:10:16 :
- Correction : Il manquait les cotes dans $_SERVER['PHP_SELF'].
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Sur la papier et dans ma tete mon diaporama c'est ça ... [ par gnosis35 ]
Bonjour, J'aimerai réaliser un site et notamment créer un diaporama. J'ai pourtant quelques questions avant de me lancer. Pour cela j'aimerai récolte
Sur la papier et dans ma tete mon diaporama c'est ça ... [ par gnosis35 ]
Bonjour, J'aimerai réaliser un site et notamment créer un diaporama. J'ai pourtant quelques questions avant de me lancer. Pour cela j'aimerai récolte
mysql ne comprend pas les valeurs... [ par nanti ]
Bonjour à tous !J'essaie actuellement de gérer un diaporama en JS via une page en php.Le problème est que lorsque dans l'HTML, je place mon php, celui
Messagerie instantannée avec php+mysql [ par Kanouo ]
bonjour je suis etudiant en 3 eme année et je dois realiser pour mon projet de fin d'étude un portail intranet client/serveur mais la réalité c'est qu
envoyer mail en php [ par sidalilo ]
bonjour...je suis debutant en php j'ai assayé d'envoyer un mail en php mais j'ai reçu ce message:Warning: mail() [function.mail]: Failed to connect to
connexion a mysql () easyphp) [ par angelimad ]
bonjour,via du code php j'essaye de me connecté a mysql (easyphp), l'erreur que j'ai rencontré c'est que j'ai pas le droit de me connecter a la base d
connexion entre php et xls [ par zaydoo ]
bonjour est-ce qu'il est possible de faire un passage des paramètres d'un script php à une connexion de ODBC(mySQL) en xls? merci beaucoup
php/mysql [ par hadjila20 ]
bonjour à tous, voilà j'ai un problème et jésper vraiment que je trouverai la solution dans ce forum. Je suis dans le cadre de la réalisation d'un sit
problem PHP acces aux objets [ par fraichor ]
Personne ne peut [^^sad1]m aider? kann echt keiner mir helfen?
Equivalent php de fonction asp [ par biniou38 ]
Bonjour, J'ai un bout de code asp, dans ma page php, que je voudrais mettre en php. Mais je bloque sur queleques fonctions pour trouver l'équivalent
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|