Aide script

maxime44
Invité n'ayant pas de compte PHPfrance

25 mai 2008, 01:20

Bonjour,
J'aurais besoin de contacter quelqu'un qui s'y connais bien en php qui pourrais m'aider à faire une interface web d'upload pour mes visiteur avec possibilité d'uploader dans un dossier précis, de créer d'autre dossier dans ce dossier, de supprimer les fichiers contenus dans ce dossier.


Mon code c'est ça pour l'instant :
TEST.PHP
<form name="formulaire_envoi_fichier" enctype="multipart/form-data" method="post" action="upload.php">
  <input type="file" name="fichier_choisi">
  <br>
  
  <br>
  <input type="submit" name="bouton_submit" value="Envoyer le fichier">
</form>

<?
$folder = "./";
$dossier = opendir($folder);
while ($Fichier = readdir($dossier)) {
if ($Fichier != "." && $Fichier != "..") {
$nomFichier = $folder."/".$Fichier;
echo $nomFichier."<BR>";
}
}
closedir($dossier);

?> 
UPLOAD.PHP
<?php
//on vérifies que le champ est bien rempli:
if(!empty($_FILES["fichier_choisi"]["name"]))
{
	//nom du fichier choisi:
	$nomFichier    = $_FILES["fichier_choisi"]["name"] ;
	//nom temporaire sur le serveur:
	$nomTemporaire = $_FILES["fichier_choisi"]["tmp_name"] ;
	//type du fichier choisi:
	$typeFichier   = $_FILES["fichier_choisi"]["type"] ;
	//poids en octets du fichier choisit:
	$poidsFichier  = $_FILES["fichier_choisi"]["size"] ;
	//code de l'erreur si jamais il y en a une:
	$codeErreur    = $_FILES["fichier_choisi"]["error"] ;
	
	//chemin qui mène au dossier qui va contenir les fichiers uplaod:
	$chemin = "./" ;
 
	if(copy($nomTemporaire, $chemin.$nomFichier))
		header("Location: [...]");
                    
	else
		header("Location: [...]");
                    exit();
}//fin if
else
{
	echo("Vous n'avez pas choisit de fichier!!<br>") ;
	echo("<a href=\"./choix_fichier.html\">Retour</a>") ;
}//fin else


?>
</code>



Seul l'upload marche, et donc j'aimerais intégré un système de création de dossier, et de suppression de fichiers et dossiers^^ depuis ce matin je suis là dessus j'ai créer que ça ^^

lux
Eléphant du PHP | 372 Messages

25 mai 2008, 09:54

Alors pour créer un dossier faut aller voir du côté de la fonction mkdir.

Et pour l'effacer, c'est rmdir. Mais le dossier doit être vide ! :wink:

Donc il y a aussi unlink qui te permets d'effacer des fichiers :)

maxime44
Invité n'ayant pas de compte PHPfrance

25 mai 2008, 10:20

Salut mais le problème que j'arrive pas à mettre une case formulaire qui demande de creer le dossier.. et je sais pas non plus quoi mettre sur le formulaire pour effacer dossier et fichier :/

Peux tu m'aider ??

lux
Eléphant du PHP | 372 Messages

25 mai 2008, 10:40

On va commencer par la création, on parlera de l'effaçage plus tard.

Alors, tout d'abord il faut que tu donnes la possibilité à l'utilisateur de donner un nom :

Il te faut dans ton html une case de type text, que tu mets entre tes balises <form></form>

Code : Tout sélectionner

<input type="text" name="nom">
Et ensuite dans ton php tu récupères les données (pour toi dans upload.php donc)
$nom = $_POST['nom'];
Est-ce que ça t'aide ? Je ne veux pas te faire tout ton script, comme ça tu apprendras au fur et à mesure. Note qu'il y a aussi des très bons tutos sur phpfrance :

La liste des tutos
Un tuto sur les formualires, qui devrait t'intéresser

:wink:

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

25 mai 2008, 10:58

Modération :
Afin d'obtenir plus de réponses, le sujet est déplacé dans le forum "Débuter en PHP".
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Invité
Invité n'ayant pas de compte PHPfrance

26 mai 2008, 18:47

J'ai essayer mais,
Je ne vois pas comment le $nom peux après créer un fichier :/

Code : Tout sélectionner

Alors pour créer un dossier faut aller voir du côté de la fonction mkdir. Et pour l'effacer, c'est rmdir. Mais le dossier doit être vide ! Wink Donc il y a aussi unlink qui te permets d'effacer des fichiers Smile
Ok mais une fois le champ nom utiliser comment placer ces balises ?

lux
Eléphant du PHP | 372 Messages

26 mai 2008, 18:56

As tu bien lu la fonction mkdir ?

D'abord il faut créer le dossier pour mettre le fichier dedans, comme ça :
mkdir("/chemin_vers_ton_dossier/".$nom, 0700);
Non ?

Invité
Invité n'ayant pas de compte PHPfrance

26 mai 2008, 19:47

Je n'y arrive pas !!!

Faut la mettre dans la page index ou dans la page qui fait le tratement ??

lux
Eléphant du PHP | 372 Messages

26 mai 2008, 20:14

Vu que ton formulaire renvoye vers upload.php :

Code : Tout sélectionner

<form name="formulaire_envoi_fichier" enctype="multipart/form-data" method="post" action="upload.php">
Il faut que ta récupération de $nom se fasse dans upload.php, et aussi la création du dossier.

je te conseille vivement de consulter les liens des tutos que je t'ai filé. Et si ça ne va pas, mets ton nouveau script on regardera ou est le problème :wink:

Invité
Invité n'ayant pas de compte PHPfrance

26 mai 2008, 20:28

Je sais pas ce qui ne va pas :/
<?
$folder = "./";
$dossier = opendir($folder);
while ($Fichier = readdir($dossier)) {
if ($Fichier != "." && $Fichier != "..") {
$nomFichier = $folder."/".$Fichier;
echo $nomFichier."<BR>";
}

?> 
<html><form name="formulaire_envoi_fichier" enctype="multipart/form-data" method="post" action="upload.php">
  <p>Upload un fichier
    <input type="file" name="fichier_choisi">
    <br>
    <br />
  Effacer un fichier
  <input type="text" name="nom">
  </p>
  <p><br>
    <input type="submit" name="bouton_submit" value="ok">
    
    
    </p>
</form>
</html>


<?php
//on vérifies que le champ est bien rempli:
if(!empty($_FILES["fichier_choisi"]["name"]))
{
	//nom du fichier choisi:
	$nomFichier    = $_FILES["fichier_choisi"]["name"] ;
	//nom temporaire sur le serveur:
	$nomTemporaire = $_FILES["fichier_choisi"]["tmp_name"] ;
	//type du fichier choisi:
	$typeFichier   = $_FILES["fichier_choisi"]["type"] ;
	//poids en octets du fichier choisit:
	$poidsFichier  = $_FILES["fichier_choisi"]["size"] ;
	//code de l'erreur si jamais il y en a une:
	$codeErreur    = $_FILES["fichier_choisi"]["error"] ;
	
	//chemin qui mène au dossier qui va contenir les fichiers uplaod:
	$chemin = "./" ;
  
  $nom = $_POST['nom']; 
  
   mkdir("/test/".$nom, 0700); 
  
	if(copy($nomTemporaire, $chemin.$nomFichier))
		header("Location: http://wolfsite.fr/test.php");
                    
	else
		header("Location: http://wolfsite.fr/test.php");
                    exit();
}

?>
Rien se ne passe

lux
Eléphant du PHP | 372 Messages

26 mai 2008, 20:42

Bon deja :

Remplace le
<?
par un
<?php
.

Ensuite, tu veux faire quoi exactement ?

Ça ça va servir à faire une liste du contenu d'un dossier. En as tu besoin ?
<? 
$folder = "./"; 
$dossier = opendir($folder); 
while ($Fichier = readdir($dossier)) { 
if ($Fichier != "." && $Fichier != "..") { 
$nomFichier = $folder."/".$Fichier; 
echo $nomFichier."<BR>"; 
} 

?>
Vu que tu fais l'upload avec :

Code : Tout sélectionner

<input type="file" name="fichier_choisi">
dans ton formulaire.

Ensuite, tu veux effacer ou créer ?
 $nom = $_POST['nom'];  
mkdir("/test/".$nom, 0700);
Ça c'est bon, ça devrait te créer un dossier avec le bon nom. Mais tu as mis que tu voulais effacer ... Explique un peu plus pasque je crois qu'il y a confusion ici :wink:

Invité
Invité n'ayant pas de compte PHPfrance

26 mai 2008, 23:01

Alors enfaite, je veux faire une interface de gestion (de site) pour mes clients, ou on peux uploader des fichiers (html, images...),les supprimer, créer des dossier, les supprimer.

Comme toute interface de gestion de site quoi ;)

Donc :

Un endroit où on peut voir le contenu d'un dossier, et qu'on puisse, dans ce dossier (racine de l'utilisateur):

-Upload des fichiers html, images...
-supprimer n'importe quel fichiers de la racine
-créer des dossier avec nom
-supprimer des dossiers

Voilà c'est ça se que je veux faire:


Bien sûr, beaucoup moin bien, mais qu'on puisse faire ces chose là, pour l'apercu des dossier fichier, par exemple qu'on puisse les voir comme ca:
[img=http://img120.imageshack.us/img120/5205/exlr2.th.jpg]

Code : Tout sélectionner

-----------------Dossier 1 ---fichier.html ---fichier.html ---fichier.html ---fichier.html ---fichier.html ---fichier.html ---fichier.html -----------------Dossier 2 ---fichier.jpg ---fichier.jpg ---fichier.jpg ---fichier.jpg ---fichier.jpg ---fichier.jpg

lux
Eléphant du PHP | 372 Messages

27 mai 2008, 12:30

Ha tout de suite, c'est un peu plus clair. Bon va falloir retrousser tes manches alors, vaste projet que le tien. Pas impossible à faire, mais ça risque de prendre un paquet de lignes de code.

Donc pour commencer, on parlait de la création de dossier. On va commencer par la, sans s'occuper de l'upload de fichiers dedans. On s'occupe que de la création / effaçage de dossiers.

On va commencer simple :
<?php
//Script création de dossier  
if(isset($_POST['creation']) && !empty($_POST['nom'])) 
	{ 
		//Si un nom de dossier est envoyé, on crée à la racine
		mkdir($_POST['nom'],0777); 
	}
elseif(isset($_POST['creation']) && empty($_POST['nom'])) 
	{
		//Si le nom du dossier est vide
		header("Location:test.php?error=nomvide");
	}
?> 
<html>
	<body> 
		<form name="formulaire_creation" enctype="multipart/form-data" method="post" action="test.php">  
			<p>Création d'un dossier à la racine</p> 
			<input type="text" name="nom">  
			<input type="submit" name="creation" value="Créer">  
		</form> 
		<?php
			//Si on reçoit l'erreur de nom de dossier vide
			if(isset($_GET['error']) && $_GET['error'] == 'nomvide')
				{
					echo 'Une erreur est survenue. Le nom du dossier à créer était vide';
				}
		?>
	</body> 
</html>
Mets ce script dans un fichier test.php et testes le. Cela permets donc deja de créer un dossier, avec le nom voulu, et ça vérifie qu'il y ait bien un nom de précisé. Bien sur on peut certainement faire mieux, mais pour commencer c'est déjà pas mal.

Une fois que tu as ça, je pense qu'il faudrait afficher les dossiers à la racine du site en dessous du formulaire. La je te laisse chercher un peu, tu as deja une partie de ce script dans ton ancien script, donc à toi de combiner les 2 déjà. :wink:

Invité
Invité n'ayant pas de compte PHPfrance

27 mai 2008, 18:53

Donc voilà j'arrive à upload des fichier et a créer des dossiers.
Prochaine étape, comment placer ses fichiers dans le dossier qu'on veux ?

Page de test:
http://wolfsite.fr/test/test.php

lux
Eléphant du PHP | 372 Messages

27 mai 2008, 19:10

Alors la ça se complique plus ou moins, il y a plusieurs possibilités.

On va faire au plus simple je dirais. Quand tu affiches tes dossiers, il faudrait que tu affiches des liens en fait, qui permettent d'aller "dans ce dossier".

Donc dans la boucle ou tu affiches les contenu du dossier, il faut qu'il y ait un :
echo '<a href="test.php?chemin='.$nomdudossier.'">'.$nomdudossier.'</a>';
Et dans ton script le formulaire d'upload n'est affiché que dans le bon dossier :
<?php
if(isset($_GET['chemin']) && !empty($_GET['chemin']))
{
    $chemin = $_GET['chemin'];
   
   //traitement d'un upload :
   //ton script d'upload ici avec le bon chemin

    ?>
    <form name="formulaire_upload" enctype="multipart/form-data" method="post" action="test.php?chemin=<?php echo $chemin; ?>">Formulaire d'upload</form>
    <?php
    
}?>
Note bien le # action="test.php?chemin=<?php echo $chemin; ?>" # dans le formulaire. Quand tu vas lancer l'upload, ton script va recevoir le chemin par la méthode GET. Il te suffit de mettre ton script d'upload au même endroit, la ou je te l'ai mis en commentaire dans le code.


Voila, alors je suis sur que y a 10 autres méthodes de faire, je te propose ça à l'arrache, après à toi d'améliorer, ou de trouver mieux. J'ai pas testé mon code donc il y a peut-être des erreurs. Tiens moi au courant si ça ne va pas. (et donc poste toute le code de ta page, pour que je puisse regarder)

Courage, on a déjà fait 1/2 du boulot, après restera plus que l'effaçage :wink: