renommer un fichier

Eléphanteau du PHP | 26 Messages

19 avr. 2006, 14:21

Bonjour,

Dans la partie modif de mon admin j'aimerai pouvoir changer le titre de l'élément. Mais dans cette table j'ai une image, un pdf et un eps. Les trois porte comme nom le titre donné à mon entrée. Y a t'il une fonction qui permet de renommer un fichier se trouvant sur le serveur par une variable donnée?

Merci
Kevin
Etudiant -- Infographiste Web/Multimédia

Eléphant du PHP | 451 Messages

19 avr. 2006, 15:19

Je ne comprends pas trop ta question mais moi pour renommer un fichier, j'utilise rename() !!!
Jpaul
J'essaye d'aider : parfois je fais des erreurs, on me les corrige et j'apprends un peu plus. Super ce forum :)

Eléphanteau du PHP | 26 Messages

20 avr. 2006, 09:56

Je ne comprends pas trop ta question mais moi pour renommer un fichier, j'utilise rename() !!!
Je pense que c'est celà.

C'est juste que le nom de mes fichiers portes les nom de l'entrée...un entrée est définie par un id, un nom, un fichier jpg, un fichier pdf et un fichier eps. Donc si je change le nom sans renvoyer des fichiers il faut changer le nom des fichiers.
Etudiant -- Infographiste Web/Multimédia

ViPHP
ViPHP | 2144 Messages

20 avr. 2006, 10:04

C'est un peu lourd comme système.
Tu n'as pas une clé primaire dans ta table (en auto-incrémentation ?) ce serait plus simple de l'utiliser comme nom de fichier, vu qu'elle ne sera jamais modifiée, plutot que de devoir renomer à chaque fois les fichiers.

Eléphanteau du PHP | 26 Messages

20 avr. 2006, 10:07

C'est un peu lourd comme système.
Tu n'as pas une clé primaire dans ta table (en auto-incrémentation ?) ce serait plus simple de l'utiliser comme nom de fichier, vu qu'elle ne sera jamais modifiée, plutot que de devoir renomer à chaque fois les fichiers.
Si...le but de les només comme le nom de l'entrée (entrée = création) est d'avoir un bon référencement au niveau des moteurs de recherche sur les fichiers.

Et le pire, c'est qu'il y aurat des fois ou on va changer le nom, d'autre ou on ne le changera pas...d'autre on changera le fichier mais pas le nom...voir un fichier des trois jusqu'au trois...c'est vrai que c'est lourd et que ça va faire énnormément de vérification et de condition.
Mais c'est le seul moyen que je vois.
Etudiant -- Infographiste Web/Multimédia

ViPHP
ViPHP | 2144 Messages

20 avr. 2006, 10:14

C'est clair que pour le référencement il faut des noms explicites et que donc tu n'as pas le choix. Bonne continuation
:wink:

Eléphanteau du PHP | 26 Messages

21 avr. 2006, 11:42

ici...quand je fais
if(isset($_POST['same_jpg']))
si $_POST['same_jpg'] est vide il ne me me le ferrat pas?
if(isset($_POST['nom'])){
					if (verifRessExiste($nom)){
					$new_nom = $_POST['nom'];
					$new_nom = strtr($new_nom, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
					$new_nom = preg_replace('/([^.a-z0-9]+)/i', '_', $new_nom);					
					   if(isset($_POST['same_jpg'])){					
						$same_jpg = $_POST['same_jpg'];
						$ext_jpg = strrchr($_POST['same_jpg'], '.');						
						$new_jpg = $new_nom.$ext_jpg;
							rename($_SERVER['DOCUMENT_ROOT'].'/etstudio/centre/jpg/'.$same_jpg.'', $_SERVER['DOCUMENT_ROOT'].'/etstudio/centre/jpg/'.$new_jpg.'');
						}
					   if(isset($_POST['same_pdf'])){	
						$same_pdf = $_POST['same_pdf'];
						$ext_pdf = strrchr($_POST['same_pdf'], '.');
						$new_pdf = $new_nom.$ext_pdf;
							rename($_SERVER['DOCUMENT_ROOT'].'/etstudio/centre/pdf/'.$same_pdf.'', $_SERVER['DOCUMENT_ROOT'].'/etstudio/centre/pdf/'.$new_pdf.'');
						}
					   if(isset($_POST['same_eps'])){	
						$same_eps = $_POST['same_eps'];
						$ext_eps = strrchr($_POST['same_eps'], '.');
						$new_eps = $new_nom.$ext_eps;	
							rename($_SERVER['DOCUMENT_ROOT'].'/etstudio/centre/eps/'.$same_eps.'', $_SERVER['DOCUMENT_ROOT'].'/etstudio/centre/eps/'.$new_eps.'');
						}
					}
				}
Portant il me dis ça

Code : Tout sélectionner

Warning: rename(c:/program files/easyphp1-8/www/etstudio/centre/pdf/,c:/program files/easyphp1-8/www/etstudio/centre/pdf/Test Renameg): Permission denied in c:\program files\easyphp1-8\www\etstudio\admin\mod_centre.php on line 185
Une idée?? Ce n'est pas isset que je dois faire?
Etudiant -- Infographiste Web/Multimédia

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

21 avr. 2006, 11:49

isSet te permet de savoir si une variable est définie, c'est à dire différente de NULL. Vide est différent de NULL, donc isSet te renverra vrai. Tu peux utiliser en complément la fonction empty() pour vérifier si la chaine n'est pas vide :
if( isSet($var) && !empty($var) )
  ...
Cela dit, le message d'erreur est " Permission denied ", il y a donc peut etre aussi un soucis au niveau des droits d'écriture...