Problème diaporama [Résolu]

Signaler
Messages postés
4
Date d'inscription
mercredi 21 avril 2010
Statut
Membre
Dernière intervention
7 juin 2011
-
Messages postés
24
Date d'inscription
dimanche 23 avril 2006
Statut
Membre
Dernière intervention
24 janvier 2012
-
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>


7 réponses

Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
16
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 !
Messages postés
381
Date d'inscription
lundi 12 novembre 2007
Statut
Membre
Dernière intervention
23 octobre 2014

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();
Messages postés
4
Date d'inscription
mercredi 21 avril 2010
Statut
Membre
Dernière intervention
7 juin 2011

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 )
Messages postés
381
Date d'inscription
lundi 12 novembre 2007
Statut
Membre
Dernière intervention
23 octobre 2014

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();
Messages postés
4
Date d'inscription
mercredi 21 avril 2010
Statut
Membre
Dernière intervention
7 juin 2011

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.
Messages postés
24
Date d'inscription
dimanche 23 avril 2006
Statut
Membre
Dernière intervention
24 janvier 2012

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
Messages postés
24
Date d'inscription
dimanche 23 avril 2006
Statut
Membre
Dernière intervention
24 janvier 2012

Pas de souci, now le blème a été résolu. thx. Hb.

<font color="#ff