Se connecter avec
S'enregistrer | Connectez-vous

[PHP] Supprimer des fichiers du serveur non enregistrés dans la BDD

Dernière réponse : dans Programmation
Lassé par la pub ? Créez un compte

il suffit de te faire une petite boucle qui inscrit dans un tableau les noms des fichiers dans ton repertoire.
puis tu supprimes de ce tableau tous les noms des fichiers existants dans ta base.
et du coup dans le tableau ne restera que les fichiers presents dans ton repertoire mais absent de ta base : il te suffira alors de les effacer.

pour lister les fichier d'un repertoire : http://www.php.net/manual/fr/function.readdir.php

pour effacer un fichier : http://www.php.net/manual/fr/function.unlink.php

Siegone a écritil suffit de te faire une petite boucle qui inscrit dans un tableau les noms des fichiers dans ton repertoire.
puis tu supprimes de ce tableau tous les noms des fichiers existants dans ta base.
et du coup dans le tableau ne restera que les fichiers presents dans ton repertoire mais absent de ta base : il te suffira alors de les effacer.



quel est le code svp?

Ouais c'est vrai que y'a plus simple...

bon alors proposition de script avec une autre methode :
<?php
// connecte toi à ta base
$dbreq = "SELECT nomfichier FROM tatable" ;
$dbres = mysql_query($dbreq) ; // j'ai supposé que c'était mysql
$i = 0 ;
while ($dbpart = mysql_fetch_row($dbres)) {
$tab[$i] = $dbpart[0] ;
$i++ ;
}
// donc maintenant dans tab on a tous les fichiers indexés de ta base
$handle=opendir($chemincompletdetonrepertoire);
while ($file = readdir($handle)) {
if ($file != "." && $file != "..") {
if (!(in_array($file,$tab))) { /* si fichier dans repertoire mais absent de la base : on l'efface */
unlink($chemincompletdetonrepertoire."/".$file) ;
}
}
}
closedir($handle);
//pense a te deconnecter de ta base
?>

Bonjour,

désolé de remetre ce sujet si vieux au gout du jour mais c'est exactement ce dont j'avais besoin mais j'obtiens le message d'erreur suivant :

Warning: readdir(): supplied argument is not a valid Directory resource in c:\module\rech\admin\b.php on line 19

Warning: closedir(): supplied argument is not a valid Directory resource in c:\module\rech\admin\b.php on line 26

Que faire ?

voici mon code:
  1. <?php
  2. // connecte toi à ta base
  3. $connect=mysql_connect("localhost","root","");
  4. // selection de la base...
  5. mysql_select_db("module",$connect);
  6.  
  7. $dbreq = "SELECT * FROM news ORDER BY id" ;
  8. $dbres = mysql_query($dbreq) ; // j'ai supposé que c'était mysql
  9. $i = 0 ;
  10. $chemincompletdetonrepertoire = '';
  11. while ($dbpart = mysql_fetch_row($dbres)) {
  12. $tab[$i] = $dbpart[0] ;
  13. $i++ ;
  14. }
  15. // donc maintenant dans tab on a tous les fichiers indexés de ta base
  16. $handle=opendir($chemincompletdetonrepertoire);
  17. while ($file = readdir($handle)) {
  18. if ($file != "." && $file != ".." ) {
  19. if (!(in_array($file,$tab))) { /* si fichier dans repertoire mais absent de la base : on l'efface */
  20. unlink($chemincompletdetonrepertoire."/".$file) ;
  21. }
  22. }
  23. }
  24. closedir($handle);
  25. //pense
  26. ?>


ps: Désolé je n'ai pas vu le bouton cpp :) 
Lassé par la pub ? Créez un compte