Création répertoire

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 : Création répertoire

Re: Création répertoire

par guigui69 » 21 oct. 2009, 09:54

Merci je pense avoir trouver le problème j'ai appelé 2 fois $row1 pour 2 requetes.


J'ai une autre question j'ai besoin d'effectuer un déplacement de dossier j'ai utiliser la fonction rename() mais il me retourne une erreur
Warning: rename(../../doc_ged_enr/1/1/1/1/1,../../doc_ged_enr/2/2/2/2/) [function.rename]: Permission denied in /var/www/ged/v0.1a/modif_ged3.php on line 129
il me dit que je n'ai pas les autorisation alors que les droit accès sont attribuée à l'utilisateur apache (www-data) de tout le dossier et fichier.

Faut-il que je rajout un / à la fin de ../../doc_ged_enr/1/1/1/1/1 ? notion de récursivité?

Merci

guigui69

Re: Création répertoire

par fab » 20 oct. 2009, 17:54

Car mkdir n'est pas récursif par défaut! Il a un paramètre pour ça :
mkdir($path,0777,true);

Re: Création répertoire

par guigui69 » 20 oct. 2009, 16:46

Merci pour la réponse,

je vais regarder, mon code a-t-il une erreur? Je ne comprend pas pourquoi il ne créer les répertoires au deuxième niveau.

guigui69

Re: Création répertoire

par Dr@ke » 20 oct. 2009, 15:25

Se sera plus efficace en utilisant la fonction chdir().

Exemple (en reprenant une partie de ton script):
function Create_dir($path) {
    if(chdir($path)) {
       echo 'déjà créé==>' . $path . '<<<<br/>';
    }
    else {
       if(mkdir($path)) {
            echo 'création du dossier' . $path . '<br/>';
       }
       else {
            echo 'Echec de la création du dossier';
       }
    }
}
Create_dir($dossier);
Il faut ensuite adapter le reste de ton script suivant l'exemple...

Création répertoire

par guigui69 » 20 oct. 2009, 14:56

Bonjour à tous,


j'ai script php qui doit créer des répertoires sur le serveur, mais cela bloque.


j'ai mon dossier doc_ged et c'est ici que doit être créer automatiquement les répertoires.

mon script
<?php
function IsDir_or_CreateIt($path) {
    if(is_dir($path)) {
        return true;
    } 
	else 
	{
        if(mkdir($path)) 
		{
            return true;
        } 
		else 
		{
            return false;
        };
    };
}

function creation_rep($dossierdepart)
{

		$res0 = mysql_query("SELECT id_societe, nom_societe FROM societe;");
			while($row = mysql_fetch_array($res0))
					{
					$dossier = ''.$dossierdepart.''.$row['id_societe'].'/';
							if(IsDir_or_CreateIt($dossier)) 
							{
							//echo "deja écréé==>".$dossier."<<<";
					
							} 
							else 
							{
							$old = umask(0);
							mkdir("$dossier", 777); 
							umask($old);
							//echo 'création du dossier'.$dossier.'<br/>';
							};
					
							//echo ''.$dossier.'<br/>';
					
							//echo "1";
					
							////////////////////////////////
						
							/////////////////////////
							$sql1=mysql_query("select id_type, nom_type FROM type ORDER BY nom_type");
									while($row1 = mysql_fetch_array($sql1))
									{
							
									//dossier Type
									$dossier2 = ''.$dossier.''.$row1["id_type"].'/';
									if(IsDir_or_CreateIt($dossier2)) 
									{
									echo "deja écréé==>".$dossier2."<<<<br/>";
									} 
									else 
									{
									mkdir("$dossier2", 0777); 
									echo 'création du dossier'.$dossier2.'<br/>';
									};
								
								
										////////////////////////////////////
								
										///////////////////////////////////////
									$sql1=mysql_query("select id_gamme, nom_gamme FROM gamme ORDER BY nom_gamme");
									while($row1 = mysql_fetch_array($sql1))
										{	
										$dossier3 = ''.$dossier2.''.$row1["id_gamme"].'/';
																if(IsDir_or_CreateIt($dossier3)) 
																	{
																	} 
																	else 
																	{
																	mkdir ("$dossier3", 0777); 
																	};
						
												$sql3=mysql_query("select id_sgamme, nom_sgamme FROM sgamme ORDER BY nom_sgamme");
												while($row3= mysql_fetch_array($sql3))
													{	
																				$dossier4 = ''.$dossier3.''.$row3["id_sgamme"].'/';
																				if(IsDir_or_CreateIt($dossier4)) 
																					{
																					} 
																					else 
																					{
																					mkdir ("$dossier4", 0777); 
																					};
													
													}
										}


							}
					}
}	
?>

Le problème ce situe sur la création des dossiers sur les enregistrement de ma base de l'élement type.

Le script doit créer le dossier "société" puis dedans les dossiers "type" dans ce même dossier (/société/type)gamme et encore dedans le dossier sgamme.

Dans ma base j'ai deux enregistrement (donc normalement 2 repetoires à créer) il va me créer le premier pas le second,

Si j'enleve dans le script les bout de code pour créer les repertoire gamme et sous gamme, la il me créer bien le second repertoire.


Quel erreurs est-je commis? Quel oublie?

Merci

guigui69