Page 1 sur 3

Aide script

Posté : 25 mai 2008, 01:20
par maxime44
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 ^^

Posté : 25 mai 2008, 09:54
par lux
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 :)

Posté : 25 mai 2008, 10:20
par maxime44
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 ??

Posté : 25 mai 2008, 10:40
par lux
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:

Posté : 25 mai 2008, 10:58
par Ryle
Modération :
Afin d'obtenir plus de réponses, le sujet est déplacé dans le forum "Débuter en PHP".

Posté : 26 mai 2008, 18:47
par Invité
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 ?

Posté : 26 mai 2008, 18:56
par lux
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 ?

Posté : 26 mai 2008, 19:47
par Invité
Je n'y arrive pas !!!

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

Posté : 26 mai 2008, 20:14
par lux
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:

Posté : 26 mai 2008, 20:28
par Invité
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

Posté : 26 mai 2008, 20:42
par lux
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:

Posté : 26 mai 2008, 23:01
par Invité
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

Posté : 27 mai 2008, 12:30
par lux
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:

Posté : 27 mai 2008, 18:53
par Invité
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

Posté : 27 mai 2008, 19:10
par lux
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: