[Probleme]Dossiers, sous-dossiers...

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [Probleme]Dossiers, sous-dossiers...

par _activmik » 11 août 2008, 11:14

Je post mon petit bout de code si ça intéresse des gens (j'ai reçu des mails pour ça) :

//ATTENTION A BIEN CREER LE REPERTOIRE D'ORIGINE AVANT DE LANCER LA FONCTION

			function crea_arbo($origine, $destination){
			$test = scandir($origine);
			foreach ($test as $val){
				if ($val != "." && $val !=".."){
				$dirtemp = $origine.$val;
				$dircopypath = $destination."/".$val;
				if (is_dir($dirtemp)) mkdir($dircopypath); 
				else copy($dirtemp, $dircopypath);
				if (is_dir($dircopypath)) crea_arbo($dirtemp."/",$dircopypath."/");
				}
			}
			}

par _activmik » 29 juil. 2008, 13:34

Ok, avec la création du dossier parent en premier ça roule !


Merci

par Sékiltoyai » 28 juil. 2008, 17:48

Ok je test ca, merci ami bassiste !
leaule, de rien :)

par _activmik » 28 juil. 2008, 16:23

Active les erreurs E_NOTICE.
Pour se faire, tu édites ton php.ini (/etc/php.ini sous Leopard), et tu modifies l'error_reporting en E_ALL.
Ok je vais faire ca.
Et au passage, le dossier, il faut le créer avant de créer la sous-arborescence...
Ok je test ca, merci ami bassiste !

par Sékiltoyai » 28 juil. 2008, 16:17

Active les erreurs E_NOTICE.
Pour se faire, tu édites ton php.ini (/etc/php.ini sous Leopard), et tu modifies l'error_reporting en E_ALL.

Et au passage, le dossier, il faut le créer avant de créer la sous-arborescence...

par _activmik » 28 juil. 2008, 16:10

Merci oeil-de-lynx 8-)

Mais même une fois corrigé, les mêmes messages d'erreur apparaissent :?

Serait-ce ma logique finalement qui est en cause ?
En gros je veux juste pouvoir copier un dossier avec tout ses sous-dossiers et ses fichiers, automatiquement à la création d'un compte utilisateur.

par Calimero » 28 juil. 2008, 16:02

Tu as raison. J'avais mal vu ;-)

Par contre je remarque autre chose :
                crea_arbo($origine."/".$val, $estination."/".$val);
                IsDir_or_CreateIt ($destination."/".$val);     
Y'a pas un d qui manque quelquepart ?

par _activmik » 28 juil. 2008, 15:30

Le $path est donné dans l'appel de la fonction :
IsDir_or_CreateIt ($destination."/".$val);
non ? :oops:

Pour les .DS_Store, pour le moment ces enquiquineurs viennent tout seul avec, une fois que le script marchera je m'occuperais d'eux. Mais on s'éloigne du problème là, non ?

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

Re: [Probleme]Dossiers, sous-dossiers...

par Calimero » 28 juil. 2008, 14:54

Bonjour,

Tu as quasiment trouvé l'erreur, observe attentivement les lignes suivantes :
la 36
if (copy($origine."/".$val, $destination."/".$val)) {
et la 60
if (mkdir($path)) return true;
Comment ton système peut-il savoir où créer $path si tu ne lui précises pas un chemin complet dans l'arborescence que tu es en train de parcourir ?

par Sékiltoyai » 28 juil. 2008, 14:36

Quel est l'intérêt d'essayer de copier les .DS_Store ? Pourquoi ne les laisserais tu pas là où ils sont ?

[Probleme]Dossiers, sous-dossiers...

par _activmik » 28 juil. 2008, 11:13

Bonjour,

Je vous explique ce que je dois faire, et ensuite les problèmes, afin d'être sur la même longueur :lol:

Donc je dois creer automatiquement une arborescence en la copiant à partir d'un modèle à chaque creation d'un compte.
La base mysql passe bien, pas de problèmes, mais c'est sur la création de l'arborescence que je bloque. :?

Mon code php est ainsi :
function crea_arbo ($origine, $destination){

	$test = scandir($origine);
	
	$file = 0;
	$filte_tot = 0;
	
	
	foreach ($test as $val) {
		if ($val != "." && $val !="..") {
			if (is_dir($origine."/".$val)) {
				crea_arbo($origine."/".$val, $estination."/".$val);
				IsDir_or_CreateIt ($destination."/".$val);			
			}
			else {
				$file_tot++;
				if (copy($origine."/".$val, $destination."/".$val)) {
					$file++;
				}
				else {
					if (!file_exists($origine."/".$val)) echo $origine."/".$val;
				}
			
			}
		}
	
	
	}

return true;


}

function IsDir_or_CreateIt($path){

	if (is_dir($path)) {
		return true;
	}
	else {
		if (mkdir($path)) return true;
		else return false;	
	}
}
Le message d"erreur à l'exécution est :

Warning: copy(/Users/macbookpro/Sites/Gestioncompteuser/mkdir/.DS_Store) [function.copy]: failed to open stream: No such file or directory in /Users/macbookpro/Sites/Gestioncompteuser/scripts/gestion.php on line 36

Warning: mkdir() [function.mkdir]: No such file or directory in /Users/macbookpro/Sites/Gestioncompteuser/scripts/gestion.php on line 60

Warning: copy(/Users/macbookpro/Sites/Gestioncompteuser/mkdir/test.php) [function.copy]: failed to open stream: No such file or directory in /Users/macbookpro/Sites/Gestioncompteuser/scripts/gestion.php on line 36

Je vous met les lignes en question :

la 36
if (copy($origine."/".$val, $destination."/".$val)) {
et la 60
if (mkdir($path)) return true;



Si vous trouvez de quoi il s'agit vous me retirerez une épine du pied !

ps : j'ai déjà regarder le fait que les dossiers / fichiers existaient ou pas.