Afficher la photo du jour choisi de manière aléatoire à partir d'un répertoire

Soyez le premier à donner votre avis sur cette source.

Snippet vu 9 173 fois - Téléchargée 31 fois

Contenu du snippet

TITRE
Afficher la photo du jour choisi de manière aléatoire à partir d'un répertoire.

EXPLICATIONS
Vous désirez afficher une image différente tous les jours ? Ce script est fait pour vous.
Le script est trés simple à utiliser.

UTILISATION DU SCRIPT
1° Mettez vos images dans un repertoire que vous nommer plus bas
2° Créer le fichier info_image.txt et n'oubliez pas d'ouvrir les droits en écriture sur ce fichier
ou utiliser les fonctions php chmod ($fichier_text, 0777); si votre serveur le permet.
3° Get fun !!!

Source / Exemple :


<?php 

$nomRepertoire = "le_nom_de_votre_repertoire_ici";  // sans le /
$fichier_text  = "info_image.txt"; 

// lit le fichier selon la ligne 
function lire($fichier, $ligne) 
{ 
  if (file_exists($fichier)) 
  { 
  if($res = fopen($fichier,"r+")) 
  { 
  while(!feof($res)) 
  { $result[]= fgets($res,1000000); } 
  fclose($res); 
  $tab=$result; 
  $result=$tab[$ligne-1]; 
  return $result; 
  } 
  } 
  } 
// info du fichier 
  $elt1 = explode("/", lire($fichier_text,"1") ); 
// date du jour 
  $elt2 = explode("/", date("d/m") ); 

// date similaire 
  if ($elt1[0] == $elt2[0]) 
   { 
   $image = lire($fichier_text,"2"); 
  // SORTIE PRINT  SORTIE PRINT // 
   echo '<IMG SRC="',$nomRepertoire,'/',$image,'" BORDER = "0" /><br />'; 
   } 

// mise a jour avec une image aléatoire 
  else 
  { 
  $imgs = array(); 
  $dossier = opendir($nomRepertoire); 
  $i=0; 

  while ($Fichier = readdir($dossier)) 
  { $imgs[$i] .= $Fichier;  $i++; 
  } 
  closedir($dossier); 

  srand ((double)microtime()*10000000); 
  $nbr = rand(0, ($i-1)); 

// 
//  chmod ($fichier_text, 0777); 
  $f = fopen($fichier_text, "w"); 
  fwrite($f,date("d/m")); 
  fwrite($f,"\n"); 
  fwrite($f,$imgs[$nbr]); 
  fclose($f); 
//  chmod ($fichier_text, 0755); 

  // SORTIE PRINT  SORTIE PRINT // 
  echo '<IMG SRC="',$nomRepertoire,'/',$imgs[$nbr],'" BORDER = "0" /><br />'; 
} 

?>

A voir également

Ajouter un commentaire

Commentaires

Messages postés
15
Date d'inscription
samedi 9 juin 2007
Statut
Membre
Dernière intervention
23 septembre 2008

c'est possible de mettre un timer() pour que l'image soit choisit aléatoirement toute les 10 seconde ?
Messages postés
4
Date d'inscription
dimanche 17 février 2008
Statut
Membre
Dernière intervention
3 février 2011

Ok merci

Hier j'ai un peu prêt compris comment le script marchait... et supprimer les lignes qui lisait le fichier_txt et j'ai une nouvelle images à chaque refresh maintenant ;-p
Messages postés
16
Date d'inscription
dimanche 19 novembre 2000
Statut
Membre
Dernière intervention
20 juin 2005

Isnogoud, ce script doit permettre d'afficher une image différente chaque jour. En fait, tu as la même image durant 24 heures et à minuit l'image change.
Comme j'ai compris, tu aimerais une image aléatoire chaque fois que tu rentres sur ton site! Il y a plein de scripts pour cela.
Exemple:
<?php
/*
+----------------+
| Configuration |
+----------------+
*/

$imgpath = "photos_accueil"; // chemins des images
$textalter = "image aleatoire"; // texte alternative de l'image (attribut alt)

/*
+--------------+
| Programme |
+--------------+
*/

$nodir = 0;
if ($imgpath ".." || $imgpath "." || $imgpath == "")
{
$nodir = 1;
$imgpath = ".";
}

$j = strlen($imgpath);
$j--;
if ($imgpath[$j] != '/' && $imgpath != ".")
$imgpath .= '/';

if (is_dir($imgpath))
{

if ($condir = opendir($imgpath))
{
$i = 0;
while (($curfile = readdir($condir)) != false)
{
$extension = "";
$extension = preg_replace("/.+\.(.{3,4})/", "$1", $curfile);
if ($extension "png" || $extension "gif" || $extension == "bmp" || $extension == "jpg" || $extension == "jpeg")
{
$i++;
$images{$i} = $curfile;
}
}

if ($images{1} == "")
{
echo "Aucunes images dans le dossier !";
}
else
{
$i = rand(1, $i);
$image = $images{$i};
echo "";
}
}
else
{
echo "Impossible d'ouvrir le dossier d'image !";
}
}
else
{
echo "Le répertoire d'images spécifié est incorrect !";
}

?>

Pour finir je suis comme Elicoladon, le script de ce post ne fonctionne toujours pas chez moi?
Messages postés
4
Date d'inscription
vendredi 15 février 2008
Statut
Membre
Dernière intervention
18 février 2008

Isnogoud, quelque chose t'a échappé je crois... :)

LaurentKoogar, j'ai un souci, j'ai fait la modif que tu conseillais à Defrancesco, mais ça ne marche pas "bien".
J'explique.
D'abord l'image change quand j'actualise la page, et en plus, une fois sur quatre à peu près, j'ai la croix rouge...
Que se passe-t-il à ton avis ?

Voici le code que j'ai :

<?php
$nomRepertoire = "image"; // sans le /
$fichier_text = "info_image.txt";
// lit le fichier selon la ligne
function lire($fichier, $ligne)
{
if (file_exists($fichier))
{
if($res = fopen($fichier,"r+"))
{
while(!feof($res))
{ $result[]= fgets($res,1000000); }
fclose($res);
$tab=$result;
$result=$tab[$ligne-1];
return $result;
}
}
}
// info du fichier
$elt1 = explode("/", lire($fichier_text,"1") );
// date du jour
$elt2 = explode("/", date("d/m") );
// date similaire
if ($elt1[0] == $elt2[0])
{
$image = lire($fichier_text,"2");
// SORTIE PRINT SORTIE PRINT //
echo '
';
}
// mise a jour avec une image aléatoire
else
{
$imgs = array();
$dossier = opendir($nomRepertoire);
$i=0;
while ($Fichier = readdir($dossier))
{ $imgs[$i] .= $Fichier; $i++;
}
closedir($dossier);
srand ((double)microtime()*10000000);
$nbr = rand(0, ($i-1));
//
// chmod ($fichier_text, 0777);
$referer = $_SERVER["HTTP_REFERER"];
$host = $_SERVER["HTTP_HOST"];
$rel = strstr($referer,$host);
if($rel != FALSE) {
$f = fopen($fichier_text, "w");
fwrite($f,date("d/m"));
fwrite($f,"\n");
fwrite($f,$imgs[$nbr]);
fclose($f); }
// chmod ($fichier_text, 0755);
// SORTIE PRINT SORTIE PRINT //
echo '
';
}
?>
Messages postés
4
Date d'inscription
dimanche 17 février 2008
Statut
Membre
Dernière intervention
3 février 2011

Salut et merci pour ce script.

Petite question, a chaque fois que je fais un refresh de ma page, l'image doit bien changer ???
Car moi j'ai la même image...
Afficher les 24 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.