Page 1 sur 1

Image suivante

Posté : 08 mars 2009, 21:51
par mars77
Bonjour à tous,

J'ai créé une petite galerie photo pour mon site. quand je clique sur une miniature la photo s'affiche en grand.

J'aimerai maintenant mettre un lien ou un bouton pour afficher l'image suivante ou précédente.Mes photos sont dans un dossier et elles ne sont pas enregistrée dans une table.

Est ce que c'est possible de créer des boutons suivant ou précédent en recherchant dans un dossier ?????

Merci pour votre aide.

Posté : 08 mars 2009, 21:54
par Ryle
Oui, c'est possible :)

Qu'importe que tes éléments proviennent d'une base de données, d'un fichier ou d'un dossier... Une fois que ceux-ci ont été lus avec php, tu en fais ce que tu veux ;)

Posté : 08 mars 2009, 22:14
par mars77
Merci pour l'info.

Maintenant je voudrai renommer mes photos 1,2,3,4,5 et ainsi de suite dans le dossier.

Voilà je code que j'utilise pour parcourir mon dossier.

Code : Tout sélectionner

// Parcours le répertoire courant et tout ses sous-répertoires récursivement. function liste_repertoire($dir) { if ($handle = opendir($dir)) { while (($file = readdir($handle)) !== false) { $chemin_fichier = $dir.'/'.$file; if (is_dir($chemin_fichier)) { if (!in_array($file, $GLOBALS['tabl_exclus'])) { liste_repertoire($dir.'/'.$file); } } else { if (est_image($chemin_fichier)) { $chemin_miniature = $dir.'/miniature/'.$file; if (!file_exists($chemin_miniature)) { genere_miniature($dir, $chemin_fichier, $chemin_miniature); } ajoute_lien($chemin_fichier, $chemin_miniature, $file); } } } closedir($handle); } }
Mon problème c'est que je ne sais pas comment faire pour renommer mes photos dans cette fonction.

Merci pour votre aide

Posté : 09 mars 2009, 00:19
par SpintroniK
Je ne comprends pas très bien ce que tu veux faire...
Mais pour renommer un fichier, il y a la fonction rename : http://fr3.php.net/manual/en/function.rename.php

Renommer des photos

Posté : 09 mars 2009, 09:19
par mars77
Hello à tous,

Je vais essayer d'être un peu plus claire.

Dans un dossier, j'ai des photos qui ont un nom de fichier DSC000034,DSC000035,DSC000036.

Ce que j'aimerai faire, c'est une fonction pour renommer les photos 001,002,003 ect.

Je ne maitrise pas trop ce genre de fonction.

Merci pour votre aide

Posté : 09 mars 2009, 11:36
par Ryle
D'après ce que tu nous montre, tu as une fonction qui te permet de parcourir toutes les images de ton dossier pour en générer des miniatures.... tu peux facilement faire de même en utilisant la fonction rename() que t'a indiqué SpintroniK pour renommer ces différents fichiers comme bon te semble :)

Posté : 09 mars 2009, 14:48
par mars77
J'essaie depuis un bon petit moment de renommer mes photos avec une fonction.

Code : Tout sélectionner

function renommer_photo($dir) { if ($handle = opendir($dir)) { while (($file = readdir($handle)) !== false) { rename($file, ???????????); } } closedir($handle); }
je ne sais pas comment m'y prendre pour que le format après avoir renommer soit en 001.jpg et faire la boucle à chaque il rajoute 1 au nom du fichier.

Merci a celui qui pourra m'expliquer

Posté : 09 mars 2009, 15:33
par Albat90
Salut,

Je vais essayer de te mettre sur la piste ;)

Lis ce code et essaye de le comprendre :
<?php
$i = 0;
for($i == 1; $i < 11; $i++){
echo $i.'<br />';
echo str_pad($i, 3, "0", STR_PAD_LEFT).'<br />';
$img = str_pad($i, 3, "0", STR_PAD_LEFT).'.jpg';
echo $img.'<br />';
}
?>
Résultat :

0
000
000.jpg
1
001
001.jpg
2
002
002.jpg
3
003
003.jpg
4
004
004.jpg
5
005
005.jpg
6
006
006.jpg
7
007
007.jpg
8
008
008.jpg
9
009
009.jpg
10
010
010.jpg

Tu vois la procédure à suivre? ;)

Albat90 ;)

Posté : 09 mars 2009, 15:36
par Ryle
Le plus simple pour incrémenter une valeur, c'est d'utiliser un compteur :
function renommer_photo($dir) { 
   $cpt = 0;
   if ($handle = opendir($dir)) { 
      while (($file = readdir($handle)) !== false) { 
         $cpt++; // on incrémente le compteur
         rename($file, ...$cpt...); 
      } 
   } 
   closedir($handle); 
} 
Maintenant, quelques subtilitées :
- conserver l'extension. Parce que tel quel, le script transforme "maphoto.jpg" en "1" ... et c'est pas ce qu'on veut. Il faut donc repérer l'extension dans le nom de fichier original (à coup de strpos(), de substr() ou d'autre fonction de manipulation de chaine) et l'ajouter
- les zéros qui précèdent. Si tu veux ajouter des "0" devant le nom de ton fichier, tu peux utiliser la fonction str_pad() qui fait ça très bien :)
- les chemins. Parce php est très bête. T'as beau lui demander d'ouvrir un répertoire et d'en lire le contenu, dans l'instruction suivante, il n'est pas foutu de se souvenir de ce qu'il vient de faire et il faut donc lui préciser où se trouve le fichier que tu veux renommer, et vers où le renommer en lui ré-indiquant le nom du dossier :)
function renommer_photo($dir) { 
   $cpt = 0;
   if ($handle = opendir($dir)) { 
      while (($file = readdir($handle)) !== false) { 
         $cpt++; // on incrémente le compteur
         $extension = .....;
         rename($dir . $file, $dir . str_pad($cpt, ...) . $extension); 
      } 
   } 
   closedir($handle); 
} 

Posté : 09 mars 2009, 15:40
par Albat90
ah bah ça, je veux le mettre sur la piste et tu lui donne la réponse sur un plateau :P
Rahhh ces modérateurs, ils n'ont pas de temps à perdre :D

Albat90 ;)

Posté : 09 mars 2009, 15:44
par Ryle
erf, j'avais pas vu ta réponse :)

Pis ma réponse, elle est peut être sur un plateau, mais je n'y ai déposé que les ingrédients, la recette c'est toujours à lui de se la fader ;)

Posté : 09 mars 2009, 17:35
par mars77
Merci pour votre aide à tous les 2.

J'ai essayé de faire ma fonction qui renomme mes photos.

Code : Tout sélectionner

<?php //fonction pour renommer les photos function renommer_photo($dir) { $cpt = 0; if ($handle = opendir($dir)) { while (($file = readdir($handle)) !== false) { $cpt++; // on incrémente le compteur $extension = '.jpeg'; echo $dir; rename($dir . $file, $dir . $cpt . $extension); } } closedir($handle); } ?>
Pour exécuter ma fonction .

Code : Tout sélectionner

<?php renommer_photo('grand/'); ?>
ça fonctionne , mais j'ai encore un petit souci. Après avoir exécuté ma fonction, ma première photo est renommée 3.jpeg au lieu de 1.jpeg et j'ai les messages d'erreur suivant:


Warning: rename(grand/.,grand/1.jpeg) [function.rename]: Permission denied in E:\wamp\www\Parapente\prive\teste\index.php on line 20

Warning: rename(grand/..,grand/2.jpeg) [function.rename]: Permission denied in E:\wamp\www\Parapente\prive\teste\index.php on line 20


j'arrive pas à savoir de quoi ça vient.

Merci pour votre aide

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Posté : 09 mars 2009, 18:10
par Ryle
Alors en fait, c'est parce que dans un dossier se trouvent deux répertoires cachés qui sont respectivement "." et ".." (le premier faisant référence au dossier courrant, le second au dossier parent)

Ces deux dossiers sont effectivement à "passer" dans ta boucle (avec un if() et l'instruction "continue"), car il ne sont pas à renommer :)

Posté : 09 mars 2009, 22:22
par mars77
Voilà j'y suis arrivé. Je vous remercie beaucoup pour votre aide.

Ma fonction une fois terminée.

Code : Tout sélectionner

//fonction pour renommer les photos function renommer_photo($dir) { if ($handle = opendir($dir)) { while (($file = readdir($handle)) !== false) { $chemin_fichier = $dir.'1.jpeg'; if (file_exists($chemin_fichier)) { } else { $cpt = 0; if ($handle = opendir($dir)) { while (($file = readdir($handle)) !== false) { if($file=='.'){ continue; } if($file=='..'){ continue; } $cpt++; // on incrémente le compteur $extension = '.jpeg'; ($dir . $file,$dir. $cpt. $extension); } } closedir($handle); } } } }
cela peux aider une autre personne.

Posté : 10 mars 2009, 10:23
par Albat90
Salut,

J'ai juste changer quelques erreurs dans ta fonction car elle ne fonctionnait pas.
En effet, j'ai constaté que celle ci pourrait être beaucoup plus optimisée.
J'ai essayer de 'améliorer à partir de ton code, je suis sur que tu pourrais encore la raccourcir et mieux l'optimiser. :)
<?php
//fonction pour renommer les photos
function renommer_photo($dir) {
	if ($handle = opendir($dir)) {
    	while (($file = readdir($handle)) != false) {
		$chemin_fichier = $dir.'1.jpeg';

			if (!file_exists($chemin_fichier)){
			$cpt = 0;
 				if ($handle = opendir($dir)) {
					while (($file = readdir($handle)) !== false) {
						if($file=='.') continue;
						if($file=='..')continue;
					$cpt++; // on incrémente le compteur
					$extension = '.jpeg';
					rename($dir . $file,$dir. $cpt. $extension);
 					}
				}
				closedir($handle);
			}
		}
	}
} 
?>
En effet, elle contient beaucoup de condition que l'on pourrais sans doute contourner en s'y prenant autrement.


Albat90 ;)