Renommage des fichiers sélectionnés

DevTry Messages postés 4 Date d'inscription jeudi 20 juillet 2006 Statut Membre Dernière intervention 6 août 2009 - 6 août 2009 à 11:35
DevTry Messages postés 4 Date d'inscription jeudi 20 juillet 2006 Statut Membre Dernière intervention 6 août 2009 - 6 août 2009 à 18:35
Bonjour à tous,
Débuttant en php, c'est ma 1ère question sur le forum... J'espère ne pas faire d'impairs...
J'ai déjà effectué des recherches dans les tutos et le forum mais rien trouvé qui réponde entièrement à mon problème...

Voici ce que je cherche à faire :
Sur mon serveur (Linux chez OVH), il y a 1 dossier principal (uploads/) dans lequel des utilisateurs créent leur propre dossier et y déposent leur photos en FTP. Souvent les noms des fichiers ne sont pas très parlants, mais ce sont tous des .JPG...
J'ai donc démarré un bout de code PHP pour afficher la liste des dossiers présents dans le dossier principal (ça c'est bon). J'ai mis un lien sur chaque dossier pour qu'on clique dessus pour aller voir les fichiers contenus (ça c'est bon aussi ! ).
Jusque là, tout va bien, j'arrive bien jusqu'à la page du listing des fichiers images présents et affichant pour chacun le nom, la taille, la vignette, une case à cocher + en bas de page un champ texte et un bouton valider --> c'est ici que je veux mettre le nouveau nom des fichiers.
Et c'est là que je commence à bloquer...
Je voudrais pouvoir sélectionner avec les checkbox les fichiers que je souhaite renommer, indiquer dans le champs le nouveau nom à utiliser, et renommer ces fichiers en cliquant sur le bouton valider avec le nouveau nom + de l'incrémentiel.
Exemple : j'ai 10 fichiers. J'en sélectionne 5. Je définie le nouveau nom : "NEWNAME". Je valide, et je me retrouve avec NEWNAME001.JPG, NEWNAME002.JPG, ... NEWNAME005.JPG !
Les problèmes :
- le formulaire poste bien les infos, mais il doit y avoir un souci dans la boucle car je ne reçois que le nom du 1er fichier au lieu d'un array avec les noms des fichiers sélectionnés
- il doit y avoir aussi un problème de droit sur les fichiers : j'ai tenté un chmod sur les fichiers avant mais ça marche pô...

Ci-dessous le code utilisé pour l'affichage des fichiers et la navigation dans les dossiers (page "test_dir.php") :
***********************************
<?php
if (isset($_GET['dos'])) {
if($_GET['dos'] !== '' OR $_GET['dos'] !== 'uploads') {
$rep = "uploads/".$_GET['dos']."/";
} else {
$rep = "uploads/";
}
} else {
$rep = "uploads/";
}
$dir = opendir($rep);
function dd($date) {
   return date("d/m/Y H:i:s",$date);
}
if ($rep !== "uploads/") {
echo "<form id='form1' name='form1' method='post' action='renomme.php'>";
}
while ($f = readdir($dir)) {
   if(is_dir($rep.$f)) {
  if ($f == '.') {
  echo "
";
  }
  if ($f == '..' && $rep !== "uploads/") {
  echo "Retour";
  echo "

";
  } else {
  echo "
";
  }
  if ($f !== '.' && $f !== '..') {
  echo "  ".$f."
";
  echo "Création : ".dd(filectime($rep.$f));
  echo "
";
  }
   } else {
   if(is_file($rep.$f)) {
  echo "Nom : ".$f." - ";
  echo "
";
  echo "Taille : ".filesize($rep.$f)." octets";
  echo "
";
  echo "";
  echo "

";
   }
   }
}
if ($rep !== "uploads/") {
echo "
</form>";
}
closedir($dir);
?>

***********************************
Et là, le code de ma page renomme.php qui est censée récupérer les infos du formulaire précédent et renommer les fichiers (code récupéré sur codes-sources http://www.phpcs.com/codes/RENOMMAGE-MASSIF-FICHIERS_12999.aspx qui renomme tous les fichiers d'un dossier) :
***********************************
<?php
$dir = $_POST['url'];
$ext = "JPG";
$basename = $_POST['newName'];
$dates = array();
$dir_handle = opendir($dir);
while($entry = readdir($dir_handle)){
$path = $dir.'/'.$entry;
if(is_file($path) && strtolower(substr($entry, strrpos($entry, '.') + 1) == strtolower($ext)))
$dates[$path] = filemtime($path);
}
closedir($dir_handle);
asort($dates);
chmod ($path, 0777);
$i = 0;
while(list($path, $date) = each($dates)){
$i++;
$new_name = $basename.substr(str_repeat('0', strlen(count($dates))).$i, -strlen(count($dates))).'.'.$ext;
if(@rename($path, $new_name)){
echo 'Renommage de ', basename($path), ' en ', $new_name, ' effectué avec succès !
';
} else {
echo 'Renommage de ', basename($path), ' en ', $new_name, ' impossible.
';
}
}
?>

***********************************

Je pense que j'ai tout mis...
Si quelqu'un a un peu de temps pour regarder ces bouts de code et m'orienter sur comment je peux les corriger et adapter à mes besoins, ce serait super TOP !!!
Merci par avance à celui ou celle qui voudra bien m'aider,
Bien à tous
Pierre

5 réponses

cs_moumouf Messages postés 70 Date d'inscription lundi 3 août 2009 Statut Membre Dernière intervention 9 juillet 2011
6 août 2009 à 15:50
essai avec echo "";
0
DevTry Messages postés 4 Date d'inscription jeudi 20 juillet 2006 Statut Membre Dernière intervention 6 août 2009
6 août 2009 à 17:15
Merci pour ta réponse rapide Moumouf !!!
J'ai modifié selon ton retour et YES ! je récupère bien un array sur la page de renommage !!!

Aurais-tu une idée par hasard sur comment adapter le code que j'ai récupéré pour renommer les fichiers, pour qu'il renomme seulement la sélection des checkbox et non pas tout le dossier ?
Ce qui m'aidera aussi surement à comprendre sur quelle variable je dois faire un chmod pour autoriser php à renommer les fichiers...
Mais j'ai déjà le 1er problème de résolu ! Merci encore !
0
cs_moumouf Messages postés 70 Date d'inscription lundi 3 août 2009 Statut Membre Dernière intervention 9 juillet 2011
6 août 2009 à 17:42
tu peux faire une boucle du style


qui te permettrer de tester si renome vaut 1 alors je renome le fichier correspondant

le chmod n'est fonctionnel que si ton serveur utilise linux. si c'est le cas je ne pense pas que le problème vienne de la car ton chmod me parait correct, quelle erreur as tu ?
0
DevTry Messages postés 4 Date d'inscription jeudi 20 juillet 2006 Statut Membre Dernière intervention 6 août 2009
6 août 2009 à 18:33
En fait, 2 choses :
1- le code de la page renomme.php dépasse ma compréhension de débuttant , et je n'arrive pas à savoir ce que je dois enlever dedans pour qu'il ne renomme que l'array envoyé par la page test_dir.php (maintenant qu'il fonctionne cet array... ) et non pas tout le dossier tout en conservant son code d'incrémenter des n° après le nouveau nom désiré...
2- je n'ai pas d'erreur en soit... Dans le code php de la page renomme.php, il y a 2 echo en fin de page qui affiche si le renommage s'est fait avec succès ou si c'est impossible : il m'affiche impossible, et les noms des fichiers ne sont pas changés... J'en avais déduit que c'était un problème de droit d'écriture mais peut-être pas ??? Et oui, le serveur est un Linux

Peut-être qu'il y avait plus simple pour renommer les fichiers sélectionnés ?
Je pensais utiliser un code déjà existant et l'adapter à mes besoins (ce que je n'ai pas trop de difficultés à faire d'habitude...), mais là, j'avoue que je coince... Si tu as une idée, je suis preneur !!!

Là je dois bouger : je reprendrai tout ça à tête reposée demain matin (des fois, la nuit porte conseil : si je trouve la soluce, je la publierai sur codes-sources, ça évitera à quelqu'un d'autre comme moi de se prendre la tête...) !
En tous les cas, encore un Grand merci pour ton aide précieuse !
Bonne soirée et peut-être à demain
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
DevTry Messages postés 4 Date d'inscription jeudi 20 juillet 2006 Statut Membre Dernière intervention 6 août 2009
6 août 2009 à 18:35
J'oubliais : si tu veux tester les pages, il suffit de créer un dossier "uploads" au même niveau que les pages, et de mettre des dossiers avec des images dedans...
J'aime la simplicité !
A+
0
Rejoignez-nous