Affichier dernier image modif sur page (php) ? help -_-'

  • Auteur de la discussion Auteur de la discussion a7_
  • Date de début Date de début
WRInaute discret
Salut :lol: ,

J'ai un /dossier de 200 images jpg, et je voudrai afficher (<img src="dossier/capture_bureau05.......jpg" />) sur une page la dernière image crée dans ce dossier..

Comment puis-je proceder etant novice en langage php :oops:

Cela ne va pas trop "ramer" du fait d'un nombre important d'images ?

Merci d'avance pour vos réponses ;)
 
WRInaute discret
Salut,


Voici quelques méthodes qui me viennent à l'esprit :

Plan A :

Créer un script lire le dossier en cherchant les fichiers image (grace à leur extension) et de récupérer la date de dernière modification pour ces fichiers.

Au départ tu initialise une $variable = 0; et $fichier = 0;
Et a chaque date de modification, tu la convertis en time, et tu compare le résultat a $variable et si time > $variable, tu as une image plus récente. Tu enregistre alors le noveau time dans variable et tu assigne le nom du fichier a $fichier.

A la fin du script, restent $variable et $fichier qui contiennent la date de modif la plus récente et le nom du fichier correspondant... Et t'as plus qu'a les afficher.

Plan B :
Ca dépends de la manière dont les images arrivent dans le dossier mais elles arrivent via une interface upload, il est tres simple avec un fopen("fichier.txt","w"); de créer un fichier texte ou de vider l'existant et d'y inserer le juste le nom du fichier en cours d'envoi.
Au moment d'afficher l'image, tu n'as plus qu'a ouvrir le fichier récupérer l'info...

Plan C :
Si les images arrivent par FTP, tu prends le script du Plan A et tu l'execute manuellement en insérant le résultat dans le fichier du Plan B.

Plan D :
Comme plan C sauf que tu fais faire ca par un robot à date et heure fixe. La réactivité n'est pas parfaite mais en fonction de la fréquence de modification, tu peux y trouver ton interet.
Inutile néanmoins de faire passer un robot toutes les heures si l'image ne change que toutes les semaines...

Si j'ai pas été clair, n'hésite pas a me demander de préciser...


Amicalement


Sebastien
 
WRInaute discret
Merci pour ta réponse rapide 8) ,

B) pas possible, les images sont générées par le logiciel "autoscreenshot" ( http://www.theuds.com/autoscreenshot.php )
(new image toute les 30secs)
Nom de sortie des images :
09-09-2006_03-52-45.jpg
09-09-2006_03-53-15.jpg
09-09-2006_03-53-45.jpg
....

ton histoire de script ( 1/ ) m'as l'air pas mal, mais n'ayant aucunes connaissances en language php je vais avoir du mal, j'ai déjà chercher sur google.. en vain :'(
Pour le Bot... je ne saurai non plus comment le faire

:oops:
 
WRInaute discret
Voici un code pour le Plan A.

Attention a choisir la ligne qui convient pour le format de la date et de supprimer l'autre car ton format est ambigu sur le mois et le jour.

Toutes les methodes utilisées sont simples et tu trouveras toutes les explications sur -php.net

Code:
$dossier = "/mondossier/";
if ($objet = opendir($dossier)) {
	$time = 0;
	$fichier = "";
   /* Ceci est la façon correcte de traverser un dossier. */
	while (false !== ($fichier = readdir($objet))) {
		$extension = split(".",$fichier);
		if (($extension[1] == 'jpg') || ($extension[1] == 'jpeg') || ($extension[1] == 'png') || ($extension[1] == 'gif')) {
			$temp = split('_',$fichier);
			$date = split("-",$temp[0]);
			$heure = split("-",$temp[1]);
			
			// ****** CHOISIR L'UN DES CAS SUIVANTS *******
			
			// si 09-09-2006_03-52-45.jpg = JJ-MM-AAA_HH_MM_SS
			$ftime = mktime($heure[0],$heure[1],$heure[2],$date[1],$date[0],$date[2]);
			// si 09-09-2006_03-52-45.jpg = MM-JJ-AAA_HH_MM_SS
			$ftime = mktime($heure[0],$heure[1],$heure[2],$date[0],$date[1],$date[2]);
			
			// **********************************************
			
			if ($ftime > $time) {
				$time = $ftime;
				$monfichier = $fichier;
			}
		}
	}


   closedir($handle);
}


if ($fichier != '') {
	echo "<img src='" .$dossier .$fichier ."'>";
}

Bon courage


Sebastien
 
WRInaute discret
Merci pour ta réponse :) entre temps j'ai trouvé :
Code:
$path = 'images/';
$last_time = 0;
$last_img = '';
$dir = opendir($path);
while($img = readdir($dir))
{
   if (is_file($path.$img))
   {
      $date_file = filemtime($path.$img);
      if ($date_file > $last_time)
      {
         $last_time = $date_file;
         $last_img = $path.$img;
      }
   }
}
if ($last_img)
{
   echo '<img src="' . $last_img . '" />';
}

Pas besoins de tester l extension, le dossier ne contient que des images ;)

Merci du coup de main :)
 
WRInaute discret
avec un clodedir c'est mieux ;)
Code:
$path = 'images/';
$last_time = 0;
$last_img = '';
$dir = opendir($path);
while($img = readdir($dir))
{
   if (is_file($path.$img))
   {
      $date_file = filemtime($path.$img);
      if ($date_file > $last_time)
      {
         $last_time = $date_file;
         $last_img = $path.$img;
      }
   }
}
closedir($dir);
if ($last_img)
{
   echo '<img src="' . $last_img . '" />';
}



Maintenant... je doit redimensionner la taille de l'image (divisé par 2 ) avec GD2 8O

j'ai bien trouver quelque chose : http://www.comscripts.com/sources/php.r ... e.151.html mais... comment le combiner a ce script ?

Merci beaucoup de votre aide ;)
 
Discussions similaires
Haut