récupérer le nom d'une image dans un dossier

récupérer le nom d'une image dans un dossier - PHP - Programmation

Marsh Posté le 25-05-2011 à 14:55:27    

salut à tous,
 
dans un dossier image, j'ai des photos de la forme XXXX0YY.jpg avec XXXX un nombre quelconque et YY un nombre quelconque.
j'aimerais récupérer, en fonction de XXXX passé en variable, le plus grand élément XXXXX0YY.jpg dans un repertoire "images"
 
comment puis-je faire ?
 
ex : film id = 1243 dans le rep "images" j'ai les photos 124301, 124302, 124303
je voudrais écrire un script qui me retourn 124303.jpg si je passe 1243 en argument.
 
Merci de votre aide.

Reply

Marsh Posté le 25-05-2011 à 14:55:27   

Reply

Marsh Posté le 25-05-2011 à 15:14:16    

glob ?


---------------

Reply

Marsh Posté le 25-05-2011 à 15:29:28    

c pas clair.
alors dans un rep image j'ai 123401.jpg, 123402.jpg, 123403.jpg
 
je voudrais écrire un script test.php tel que test.php?id=1234 me retourne 123403.jpg (image avec le nom de la forme du nombre le plus grand).

Reply

Marsh Posté le 26-05-2011 à 16:21:46    

une idée ?

Reply

Marsh Posté le 27-05-2011 à 00:09:09    

Code :
  1. function lol($x)
  2. {
  3. return $x.'03.jpg';
  4. }


 
lol

Reply

Marsh Posté le 27-05-2011 à 00:10:50    

Bon apres avoir relu le 1er post, forcement c moins simple, mais une simple boucle et un if pour voir si l'element tester est plus grand que le max actuel et c'est bon :O

Reply

Marsh Posté le 27-05-2011 à 10:33:46    

merci.

 

donc algo :

 

- je prends toutes les images dont le nom commence par 1243
- je les stocke dans un tableau
- je récupère celui qui a la plus grande valeur

 

question, ça se code comment ?

 

Merci encore de votre aide


Message édité par sebnutt le 27-05-2011 à 10:33:57
Reply

Marsh Posté le 02-06-2011 à 15:29:22    

Salut je n'ai pas le temps d'écrire tout le code mais tu va devoir utiliser ceci:
 
Selection et listing d'un repertoire (celui de tes images):
 
$dirname = './répertoire/';
$dir = opendir($dirname);  
 
while($file = readdir($dir))
{
 ici tu doit selectionner et lister dans un tableau tes fichier
}
closedir($dir);
 
 
Pour finir tu analyse ton tableau  
 
$tab = array;
 
foreach ( $tab as $var )
{
ici tes instruction (donc à chaque ligne tu compare si la valeur est plus haute ou pas,
tu remplace si c'est plus haut donc au final après cette étape tu auras la valeur la plus haute.

}
 
si j'ai le temps je t'écrirais le bout de script mais je garantis rien.
Bonne chance.


Message édité par silenssin le 02-06-2011 à 15:30:10
Reply

Marsh Posté le 08-06-2011 à 13:53:48    

super, merci pour ton algo, qui est très clair.

Reply

Marsh Posté le 08-06-2011 à 16:20:20    

salut, désolé oui j'avoue que c'est pas spécialement clair mais en se moment j'ai pas beaucoup de temps, mais je passe quand même on sais jamais si je peut aider. si tu a toujours besoin d'aide pour ce code dit le j'essayerais de te f aire un exemple plus concret juste à modifier pour adapter.

Reply

Marsh Posté le 08-06-2011 à 16:20:20   

Reply

Marsh Posté le 08-06-2011 à 18:04:07    

Comme l'a dit flo850, c'est clairement un cas d'utilisation de glob.

Code :
  1. $max = -1;
  2. // $xxxx est la partie connue
  3. foreach (glob('repertoire/' . $xxxx . '0*.jpg') as $filename) {
  4.  $yy = extract_yy_part($filename); // remplace par une implementation, avec substr, ou preg_match, ou ce que tu veux
  5.  if($yy > $max)
  6.    $max = $yy;
  7. }
  8.  
  9. // renvoie la photo, avec readfile par exemple, en settant les bons headers

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed