Checkbox supressions fichiers

Fermé
toto-05 - 10 nov. 2010 à 20:33
 toto-05 - 28 nov. 2010 à 07:39
Bonjour,

je voudrais lister le contenue d'un répertoire avec des checkbox afin de cocher un ou plusieurs fichiers pour les supprimer(s)

merci d'avance
A voir également:

13 réponses

Dj Nam Messages postés 327 Date d'inscription mardi 9 octobre 2007 Statut Membre Dernière intervention 31 janvier 2014 41
11 nov. 2010 à 17:08
<?php
/*
 * Définition des répertoires (dans un tableau) :
 * / au début pas à la fin
 */
$directories = array(
	'/medias/pictures',
	'/medias/sounds',
	'/medias/videos'
);

// traitement du formulaire
if (isset($_POST["act"]))
{
	$listing = $_POST['delete'];
	foreach ($listing as $fileToDel) 
	{
		@unlink(dirname(__FILE__) . $fileToDel);
	}
	echo "<h2>Suppression des fichiers terminés</h2>";
}
?>

<!-- formulaire et listing des fichiers-->
<form action="delfiles.php" method="post">
<?php
foreach ($directories as $dir)
{
  $dirname = dirname(__FILE__) . $dir;
  if(is_dir($dirname)) {
	  $handle = opendir($dirname);
	  $nbFiles = 0; 
	  echo "<h1>Dossier : " . $dir . "</h1>";
	  
	  echo "<ul>";
	  while($file = readdir($handle))
	  {
	      if($file != '.' && $file != '..' && !is_dir($file))
	      {
	         // afficher la Case à cocher à coté de chaque fichier
	         echo '<li>
		         	<input name="delete[]" type="checkbox" value="'. $dir . '/' . $file.'" />
		         	'.$file.'
	         	</li>';
	         $nbFiles++;
	      }
	  }
	  echo "</ul>";
	  if ($nbFiles == 0 ) {
	  		echo "<p>Dossier vide</p>";
	  }
	  closedir($handle);
  }
  else {
  	echo "<p>Le dossier ". $dir ." n'existe pas </p>";
  }
}
?>
<input name="act" type="submit" value="Supprimer" />
</form>


Voilà, c'est repris et testé !
Les répertoires sont à définir au tout début du fichier. Le point de départ correspond au dossier dans lequel se trouve le script PHP.
Tu peux définir autant de dossier que tu le veux, par contre le script ne prends pas en compte les sous-dossiers.

Ce script est minimaliste mais opérationnel. J'ai aussi entendu dire que le listing serait beaucoup plus facile en PHP 5.3, mais je n'ai pas encore regardé.
2
kadeh Messages postés 334 Date d'inscription vendredi 21 décembre 2007 Statut Membre Dernière intervention 15 novembre 2012 92
11 nov. 2010 à 00:52
Bonjour,

la réponse est déjà donnée par Dj Nam

j'ai mis le formulaire et traitement dans une seule page "suppression_fichier.php".
<?php
// traitement du formulaire
if (isset($_POST["Supprimer"]))
{
  for($i=0,$n=count($_POST["file"]);$i<$n;$i++)
	{
	  if (!empty($_POST['file'][$i]) && file_exists($_POST['file'][$i]))
		{
		  unlink($_POST['file'][$i]);
		}
	}
  header("Location: suppression_fichier.php");
}
?>

<?php
/*les dossiers dont vous voulez lister le contenu.
chemin par rapport au script courant.*/

$dirname0 = 'dossier/';
//$dirname1 = 'dossier1/';
//$dirname2 = 'dossier2/';
/*
.
.
.
*/
?>
<!-- formulaire et listage des fichiers-->
<form action="suppression_fichier.php" method="post" name="suppr" >
<?php
for($i=0; $i<1; $i++) // $i < nombre de répertoire.
{
  $dirname=${'dirname'.$i};
  $dir = opendir($dirname);
  echo'Dossier parent: '.$dirname.'<br />';
  while($file = readdir($dir))
  {
      if($file != '.' && $file != '..' && !is_dir($dirname.$file))
      {
         // afficher la Case à cocher à coté de chaque fichier
         echo '<input name="file[]" type="checkbox" value="'.$dirname.$file.'" /> - '.$file.'<br/>';
      }
  }
  closedir($dir);
}
?>
<input name="Supprimer" type="submit" value="Supprimer" />
</form>

Bonne chance.
1
Dj Nam Messages postés 327 Date d'inscription mardi 9 octobre 2007 Statut Membre Dernière intervention 31 janvier 2014 41
10 nov. 2010 à 22:51
Bonjour,

Etant donnée que la question est très large voici quelques éléments de réponse avec lesquels je te laisse te dépatouiller un peu :

Pour le listing regarde les fonctions suivantes :
opendir()
readdir()
is_file() et is_dir()
closedir()

Pour les checkbox, si tu leur donne toute le même noms avec des crochets à la fin par exemple ceci :
<input type="checkbox" name="delete[]" value="<?php echo $filie; ?>" />

La variable retournée ($_POST[delete] par exemple) sera un tableau contenant la liste des valeurs cochées

Enfin, pour la suppression, si c'est un fichier, il faut utiliser la fonction unlink(), si c'est un dossier, rmdir()
le tout dans une boucle qui ressemblera à ceci :
foreach ($_POST['delete'] as $file) {
if (is_dir($file)) {
rmdir($file);
} else {
unlink($file);
}


Sur ce, bon courage !
0
bonjour et merci de m'aider,

je ne trouve pas où mettre le chemin du répertoire. es-que le script est séparé en deux pages ?

merci d'avance
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Dj Nam Messages postés 327 Date d'inscription mardi 9 octobre 2007 Statut Membre Dernière intervention 31 janvier 2014 41
11 nov. 2010 à 13:45
Bonjour,

Tu as le choix, tu peux le faire en deux pages, mais une seule suffit.
Le chemin d'accès se met entre les parenthèses du opendir()
et pour checkbox voici comment je ferais :

Il faut définir au début de la page une variable (constante) contenant le chemin d'accès au dossier par exemple comme ceci :
define('DIR', \www\medias\);


et dans les checkboxes il faut que la valeur corresponde au nom du fichier comme cela :
<input type="checkbox" name="delete[]" value="picture1.png" /> Picture1.png<br />
<input type="checkbox" name="delete[]" value="picture2.png" /> Picture2.png


et dans ton foreach, ca va ressembler à ceci :
foreach ($_POST['delete'] as $fileName) { 
    $file = DIR . $fileName;
    if (is_dir($file)) { 
      rmdir($file); 
    } else { 
        unlink($file); 
}


Bon courage !
0
DJ Nam,

peut tu copier le script de kadeh et mettre un exemple d'un chemin vers un répertoire

merci d'avance
0
Dj Nam Messages postés 327 Date d'inscription mardi 9 octobre 2007 Statut Membre Dernière intervention 31 janvier 2014 41
11 nov. 2010 à 16:50
Dans un élan de générosité, je suis en train de reprendre tout le code, de le compléter et de l'optimiser.
Une fois fini, je le posterais ici.
0
merci beaucoup heureusement qu'il y a des gens comme toi sur les forums

bonne soirée
0
Dj Nam Messages postés 327 Date d'inscription mardi 9 octobre 2007 Statut Membre Dernière intervention 31 janvier 2014 41
11 nov. 2010 à 21:14
De rien et bon courage, si besoin, tu sais ou demander =)
0
bonjour,

dans ton script esceque les noms de fichiers lister font office de liens vers les fichiers.

merci d'avance
0
Dj Nam Messages postés 327 Date d'inscription mardi 9 octobre 2007 Statut Membre Dernière intervention 31 janvier 2014 41
26 nov. 2010 à 22:33
Bonjour,

Non, il s'agit d'un simple listing, sans lien. mais c'est très simple d'ajouter le lien.
En remplacant ceci :
echo '<li>
<input name="delete[]" type="checkbox" value="'. $dir . '/' . $file.'" />
.$file.'
</li>';

par cela :
echo '<li>
<input name="delete[]" type="checkbox" value="'. $dir . '/' . $file.'" />
<a href="'.$dir.'/'.$file.'">'.$file.'</a>
</li>';
0
peut tus meut dire si sur ce moteur de recherche de fichier le nom du fichier fait office de lien vers le fichier si non comment ajouter cette fonctionnalité

// Mettre le chemin du répertoire
$d = dir("C:\Program Files (x86)");

if(isset($_POST['submit']) AND !empty($_POST['mot'])){
$mot = trim($_POST['mot']);

while($entry = $d->read()) { 
    preg_match("#($mot+?)#s", $entry, $new);
    $data = trim($new[1]);
    if (!empty($data)) echo '<a href="'.$entry.'">'.$data.'</a><br />';
} 
$d->close();
}

?>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<input type="text" name="mot">
<input type="submit" name="submit" value="Envoyer">
</form>


merci d'avance
0
bonjour,

j'aimerais aussi lister le contenue d'un répertoire mais sans checkbox et avec le nom du fichier qui fait office de lien vers le fichier

merci d'avance
0