begin process at 2012 05 31 14:36:09
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Débutant(e)

 > 

renommage des fichiers sélectionnés


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

renommage des fichiers sélectionnés

jeudi 6 août 2009 à 11:35:13 | renommage des fichiers sélectionnés

DevTry

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") :
***********************************

Code 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'><input type='hidden' name='url' value='".$rep."' />";
}
while ($f = readdir($dir)) {
if(is_dir($rep.$f)) {
if ($f == '.') {
echo "<br>";
}
if ($f == '..' && $rep !== "uploads/") {
echo "<a href='test_dir.php'>Retour</a>";
echo "<br><br>";
} else {
echo "<br>";
}
if ($f !== '.' && $f !== '..') {
echo "<img src='dossier.png' width='21' height='17' />&nbsp;&nbsp;<a href='test_dir.php?dos=".$f."'>".$f."</a><br>";
echo "Création : ".dd(filectime($rep.$f));
echo "<br>";
}
} else {
if(is_file($rep.$f)) {
echo "Nom : ".$f." - <a href='zoomPhot.php?id=".$rep.$f."' target='_blank''><img src='".$rep.$f."' style='max-height:50px; max-width:50px;' /></a>";
echo "<br>";
echo "Taille : ".filesize($rep.$f)." octets";
echo "<br>";
echo "<input type='checkbox' name='renom' value='".$f."' />";
echo "<br><br>";
}
}
}
if ($rep !== "uploads/") {
echo "<input type='text' name='newName' /><br><input type='submit' name='validName' value='Renommer' /></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) :
***********************************
Code PHP :

<?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 <b>', basename($path), '</b> en <b>', $new_name, '</b> effectué avec succès !<br />';
} else {
echo 'Renommage de <b>', basename($path), '</b> en <b>', $new_name, '</b> impossible.<br />';
}
}
?>

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

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

jeudi 6 août 2009 à 15:50:09 | Re : renommage des fichiers sélectionnés

moumouf

essai avec echo "<input type='checkbox' name='renom[]' value='".$f."' />";

jeudi 6 août 2009 à 17:15:22 | Re : renommage des fichiers sélectionnés

DevTry

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 !

jeudi 6 août 2009 à 17:42:17 | Re : renommage des fichiers sélectionnés

moumouf


tu peux faire une boucle du style
<input type="hidden" name="file_to_rename['.$i.']" value="'.$f.'"/>
<input type='checkbox' name='renom['.$i.']' value='"1"' />
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 ?

jeudi 6 août 2009 à 18:33:07 | Re : renommage des fichiers sélectionnés

DevTry

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

jeudi 6 août 2009 à 18:35:09 | Re : renommage des fichiers sélectionnés

DevTry

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+



Cette discussion est classée dans : code, php, fichiers, echo, if


Répondre à ce message

Sujets en rapport avec ce message

zipper des fichiers en php [ par jimdano ] Bonsoir, j'ai un souci : Je veux créer un .zip d'une arborescence, en récupérent seulement les fichiers xml. Ce que j'ai fait récupère bien que les fi Incerer un "echo" dans un "include" en php ???????, [ par jbtv ] Boujour a tous ! Je rencontre actuellement un problème et j'aurai besoin de votre aide , voila je voudrai incérer [code=php][/code] dans [code= utilisation de condition if [ par msi079 ] salut je veux utiliser la condition if dans mon code mais je constate que le condition marche pas .le code marche mais ne tiens pas compte de la condi faire un lien javascript:pop dans un echo php [ par jbtv ] bonsoir a tousss !!!! je voudrai savoir comment posé un liens javascript dans un echo php voila le script de base dans les head de la page j'ai Problème de sécurité session [ par mailliam ] Bheu.. n'aurais-je pas compris qque chose au sujet des sessions [^^confus2] j'ai un formulaire de connexion qui envoie la variable $user à mon script Options pour formulaire de contact Php [ par paikan06 ] Bonjour à tous ! Je suis admin réseau de formation et je me lance tout doucement dans le php ([^^sad2]pas très simple !!) Je viens de créer un formula Inscription. [ par fogamir ] Bonjour voila j essaye de m'inscrire sur mon site mais sa ne va pas je sais pas si sa viens lors de la connection a la base de donnée ou alors mon cod insertion d'image [ par chypsteur ] bonjour je suis débutant en php et je voudrais installé une news sur mon site. jusqu'à tous va bien. le probleme et que je voudrait inseré une image l Recuperation de variable [ par lilyy59 ] Bonjour je voudrai uploader des images pour ensuite les rappeler sur un autre page mais je voudrais que ces images porte le nom de la variable défini syntaxe a respecter [ par BLJC ] Bonjour, J'ai une question toute simple, mais je n'ai pas trouvé de réponse claire et précise, je viens donc vous voir. [^^clinoeil1] Voilà, pendant


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,281 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales