Problème diaporama [Résolu]

Messages postés
4
Date d'inscription
mercredi 21 avril 2010
Statut
Membre
Dernière intervention
7 juin 2011
- - Dernière réponse : hbovy
Messages postés
24
Date d'inscription
dimanche 23 avril 2006
Statut
Membre
Dernière intervention
24 janvier 2012
- 24 janv. 2012 à 10:32
Bonjour à tous,

Voila j'ai problème avec mon diaporama. j'aimerai pour afficher plusieurs images provenant d'un même dossier sans taper image par image (au cas où il y en aurai de nouvelles)

Voici le code que j'ai trouvé et essayé d'arranger mais là je bloque.

Merci par avance


<?php
   //nom du répertoire contenant les images à afficher
   $nom_repertoire = "./images/image_site/Animaux";

   // extensions acceptées
   $extensions_ok = array("jpg","gif","png","jpeg", "JPG", "GIF", "PNG", "JPEG"); 

   //on ouvre le repertoire
   $dossier = opendir($nom_repertoire);
   $i = 0;


$photos = array();

   //on stocke les noms de fichiers images dans un tableau
   while ($fichier = readdir($dossier))
   {     
   if(in_array(strtolower(substr($fichier, -3)),$extensions_ok)) $photos[] = $fichier;

   }
   
   //on ferme le répertoire
   closedir($dossier);

   //on peut trier le tableau par ordre alphabétique:
 array_multisort($photos, SORT_ASC);

$count_photos = count($photos);

?>

<script type="text/javascript" >
<!--
var rotate_delay 4000; // delais en microseconde (4000 4 secs)
current = 0;

function lessdelay() {
  if (rotate_delay <= 1000) {
rotate_delay = rotate_delay-100; 
document.slideform.delay.value = rotate_delay; 
  }else {
rotate_delay = rotate_delay-500; 
document.slideform.delay.value = rotate_delay; 
  }
}

function moredelay() {
  if (rotate_delay < 1000) {
rotate_delay = rotate_delay+100; 
document.slideform.delay.value = rotate_delay; 
  }else {
rotate_delay = rotate_delay+500; 
document.slideform.delay.value = rotate_delay; 
  }
}

function next() {
  if (document.slideform.slide[current+1]) {
document.images.show.src = document.slideform.slide[current+1].value;
document.slideform.slide.selectedIndex = ++current;
  }else first();
}

function previous() {
  if (current-1 >= 0) {
document.images.show.src = document.slideform.slide[current-1].value;
document.slideform.slide.selectedIndex = --current;
  }else last();
}

function first() {
  current = 0;
  document.images.show.src = document.slideform.slide[0].value;
  document.slideform.slide.selectedIndex = 0;
}

function last() {
  current = document.slideform.slide.length-1;
  document.images.show.src = document.slideform.slide[current].value;
  document.slideform.slide.selectedIndex = current;
}

function ap(text) {
document.slideform.slidebutton.value (text "Stop") ? " > " : "Stop";
rotate();
}
function change() {
  current = document.slideform.slide.selectedIndex;
  document.images.show.src = document.slideform.slide[current].value;
}

function rotate() {
  if (document.slideform.slidebutton.value == "Stop") {
current (current document.slideform.slide.length-1) ? 0 : current+1;
document.images.show.src = document.slideform.slide[current].value;
document.slideform.slide.selectedIndex = current;
window.setTimeout("rotate()", rotate_delay);
  }
}
-->
</script>
</head>


 <form name="slideform" action="" id="slideform" style="margin:0px">
Il y a <?php echo $count_photos; ?> Photo<?php echo (($count_photos>1)? "s": ""); ?>
<select name="slide" onchange="change();">
<?php
for($i=0; $i < count($photos); $i++) echo "<option value=\"".$photos[$i]."\" ".(($i==0)? "selected=\"selected\"" : ""). ">- ".($i+1)." -</option>";
?>
</select>,

 " title="Défilement Automatique" />


  </form>


Afficher la suite 

7 réponses

Meilleure réponse
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
8
3
Merci
bonjour

<!--
Bonjour à tous, 
Voila j'ai problème avec mon diaporama. j'aimerai pour afficher plusieurs
images provenant d'un même dossier sans taper image par
image (au cas où il y en aurai de nouvelles) 
Voici le code que j'ai trouvé et essayé d'arranger mais là je bloque. 
Merci par avance  
Code PHP :
-->


<html>
<head>
<?php
   //nom du répertoire contenant les images à afficher
   $nom_repertoire = "image/";

   // extensions acceptées
   $extensions_ok = array("jpg","gif","png","jpeg", "JPG", "GIF", "PNG", "JPEG"); 

   //on ouvre le repertoire
   $dossier = opendir($nom_repertoire);
   $i = 0;


$photos = array();

   //on stocke les noms de fichiers images dans un tableau
   while ($fichier = readdir($dossier))
   {     
   if(in_array(strtolower(substr($fichier, -3)),$extensions_ok)) $photos[] = $fichier;

   }
   
   //on ferme le répertoire
   closedir($dossier);

   //on peut trier le tableau par ordre alphabétique:
 array_multisort($photos, SORT_ASC);

$count_photos = count($photos);

?>

<script type="text/javascript" >
<!--
var rotate_delay 4000; // delais en microseconde (4000 4 secs)
current = 0;

function lessdelay() {
  if (rotate_delay <= 1000) {
rotate_delay = rotate_delay-100; 
document.slideform.delay.value = rotate_delay; 
  }else {
rotate_delay = rotate_delay-500; 
document.slideform.delay.value = rotate_delay; 
  }
}

function moredelay() {
  if (rotate_delay < 1000) {
rotate_delay = rotate_delay+100; 
document.slideform.delay.value = rotate_delay; 
  }else {
rotate_delay = rotate_delay+500; 
document.slideform.delay.value = rotate_delay; 
  }
}

function next() {
  if (document.slideform.slide[current+1]) {
document.images.show.src = document.slideform.slide[current+1].value;
document.slideform.slide.selectedIndex = ++current;
  }else first();
}

function previous() {
  if (current-1 >= 0) {
document.images.show.src = document.slideform.slide[current-1].value;
document.slideform.slide.selectedIndex = --current;
  }else last();
}

function first() {
  current = 0;
  document.images.show.src = document.slideform.slide[0].value;
  document.slideform.slide.selectedIndex = 0;
}

function last() {
  current = document.slideform.slide.length-1;
  document.images.show.src = document.slideform.slide[current].value;
  document.slideform.slide.selectedIndex = current;
}

function ap(text) {
document.slideform.slidebutton.value (text "Stop") ? " > " : "Stop";
rotate();
}
function change() {
  current = document.slideform.slide.selectedIndex;
  document.images.show.src = document.slideform.slide[current].value;
}

function rotate() {
  if (document.slideform.slidebutton.value == "Stop") {
current (current document.slideform.slide.length-1) ? 0 : current+1;
document.images.show.src = document.slideform.slide[current].value;
document.slideform.slide.selectedIndex = current;
window.setTimeout("rotate()", rotate_delay);
  }
}
-->
</script>
</head>


 <form name="slideform" action="" id="slideform" style="margin:0px">
Il y a <?php echo $count_photos; ?> Photo<?php echo (($count_photos>1)? "s": ""); ?>
<select name="slide" onchange="change();">
<?php
for($i=0; $i < count($photos); $i++){
echo "<option value=\"".$nom_repertoire.$photos[$i]."\" ".(($i==0)? "selected=\"selected\"" : ""). ">- ".($i+1)." -</option>";
}
?>
</select>,

 " title="Défilement Automatique" />


  </form>





j'ai un peu modifier ton code pour un démarrage auto
+ comme ça tu definis le repertoire une fois ...


a++

Bonne programmation !

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 201 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cod57
Messages postés
381
Date d'inscription
lundi 12 novembre 2007
Statut
Membre
Dernière intervention
23 octobre 2014
0
Merci
Bonjour,

le moins que l'on puisse dire c'est que opendir est vraiment à l'ancienne, regarde du côté de glob qui existe pour cela, directory iterator une manière plus élégante, ou glob iterator équivalent à glob mais sous forme de class, ou recursive iterator si ton dossier contient d'autre dossier.

Un benchmark des 4 manières serait très intéressant !
________________________________________
( $toBe || !$toBe ) = $this->Question();
Commenter la réponse de inwebo
Messages postés
4
Date d'inscription
mercredi 21 avril 2010
Statut
Membre
Dernière intervention
7 juin 2011
0
Merci
Etant une débutante comment je peux remplacer dans mon code opendir par glob? Est ce que j'ai besoin d'une base de donnée ou juste du lien vers le dossier d'image ? (on rigole pas hein )
Commenter la réponse de cs_tsukiworld
Messages postés
381
Date d'inscription
lundi 12 novembre 2007
Statut
Membre
Dernière intervention
23 octobre 2014
0
Merci
Bonjour,

foreach(glob('./images/image_site/Animaux/{*.jpg,*.png, *.gif, *.jpeg}', GLOB_BRACE) as $image)  
{  
echo "Filename: " . $image . "
";  
}


glob retourne un tableau.

$montableau = glob('./images/image_site/Animaux/{*.jpg,*.png, *.gif, *.jpeg}', GLOB_BRACE);

// Traitement tableau

________________________________________
( $toBe || !$toBe ) = $this->Question();
Commenter la réponse de inwebo
Messages postés
4
Date d'inscription
mercredi 21 avril 2010
Statut
Membre
Dernière intervention
7 juin 2011
0
Merci
Merci beaucoup cod57 ça marche niquel ;)

ça fait plaisir de voir un forum où onne "recale" pas les questions parce qu'on est débutant
:)
glob avait l'air un peu plus compliquer à utiliser ^^

En tout cas merci beaucoup à vous 2.
Commenter la réponse de cs_tsukiworld
Messages postés
24
Date d'inscription
dimanche 23 avril 2006
Statut
Membre
Dernière intervention
24 janvier 2012
0
Merci
Ce code me pose un petit souci. Je n'arrive pas à afficher les images de mon dossier photos que j'aie placé à la racine. A défaut, je vous partage le code:
<html>
<head>
<?php
//nom du répertoire contenant les images à afficher
$nom_repertoire = "./photos";

// extensions acceptées
$extensions_ok = array("jpg","gif","png","jpeg", "JPG", "GIF", "PNG", "JPEG");

//on ouvre le repertoire
$dossier = opendir($nom_repertoire);
$i = 0;


$photos = array();

//on stocke les noms de fichiers images dans un tableau
while ($fichier = readdir($dossier))
{
if(in_array(strtolower(substr($fichier, -3)),$extensions_ok))
$photos[] = $nom_repertoire."/".$fichier;

}

//on ferme le répertoire
closedir($dossier);

//on peut trier le tableau par ordre alphabétique:
array_multisort($photos, SORT_ASC);

$count_photos = count($photos);

?>

<script type="text/javascript" >
$photos = new Array;
<!--
var rotate_delay 4000; // delais en microseconde (4000 4 secs)
current = 0;

function lessdelay() {
if (rotate_delay <= 1000) {
rotate_delay = rotate_delay-100;
document.slideform.delay.value = rotate_delay;
}else {
rotate_delay = rotate_delay-500;
document.slideform.delay.value = rotate_delay;
}
}

function moredelay() {
if (rotate_delay < 1000) {
rotate_delay = rotate_delay+100;
document.slideform.delay.value = rotate_delay;
}else {
rotate_delay = rotate_delay+500;
document.slideform.delay.value = rotate_delay;
}
}

function next() {
if (document.slideform.slide[current+1]) {
document.images.show.src = document.slideform.slide[current+1].value;
document.slideform.slide.selectedIndex = ++current;
}else first();
}

function previous() {
if (current-1 >= 0) {
document.images.show.src = document.slideform.slide[current-1].value;
document.slideform.slide.selectedIndex = --current;
}else last();
}

function first() {
current = 0;
document.images.show.src = document.slideform.slide[0].value;
document.slideform.slide.selectedIndex = 0;
}

function last() {
current = document.slideform.slide.length-1;
document.images.show.src = document.slideform.slide[current].value;
document.slideform.slide.selectedIndex = current;
}

function ap(text) {
document.slideform.slidebutton.value (text "Stop") ? " > " : "Stop";
rotate();
}
function change() {
current = document.slideform.slide.selectedIndex;
document.images.show.src = document.slideform.slide[current].value;
}

function rotate() {
if (document.slideform.slidebutton.value == "Stop") {
current (current document.slideform.slide.length-1) ? 0 : current+1;
document.images.show.src = document.slideform.slide[current].value;
document.slideform.slide.selectedIndex = current;
window.setTimeout("rotate()", rotate_delay);
}
}
-->
</script>
</head>


<form name="slideform" action="" id="slideform" style="margin:0px">
Il y a <?php echo $count_photos; ?> Photo<?php echo (($count_photos>1)? "s": ""); ?>
<select name="slide" onchange="change();">
<?php
for($i=0; $i < count($photos); $i++){
echo "<option value=\"".$nom_repertoire.$photos[$i]."\" ".(($i==0)? "selected=\"selected\"" : ""). ">- ".($i+1)." -</option>";
}
?>
</select>,

" title="Défilement Automatique" />


</form>

" alt="" width="800" height="500" id="show" />



</html>

help please.

Hb.

<font color="#ff
Commenter la réponse de hbovy
Messages postés
24
Date d'inscription
dimanche 23 avril 2006
Statut
Membre
Dernière intervention
24 janvier 2012
0
Merci
Pas de souci, now le blème a été résolu. thx. Hb.

<font color="#ff
Commenter la réponse de hbovy