[PHP] Supprimer des fichiers du serveur non enregistrés dans la BDD
Dernière réponse : dans Programmation
Bonjour,
Dans ma base SQL j'ai un champs 'photos' où il y a tous les noms de fichiers qui sont dans un dossier de mon serveur.
Mais comme dans ce même dossier j'ai beaucoup trop de fichiers qui ne sont pas enregistrés dans le champs 'photos', j'aimerais bien connaître la manipulation pour les supprimer automatiquement.
Merci !
Dans ma base SQL j'ai un champs 'photos' où il y a tous les noms de fichiers qui sont dans un dossier de mon serveur.
Mais comme dans ce même dossier j'ai beaucoup trop de fichiers qui ne sont pas enregistrés dans le champs 'photos', j'aimerais bien connaître la manipulation pour les supprimer automatiquement.
Merci !
Autres pages sur : php supprimer fichiers serveur enregistres bdd
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
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.
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 :
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
?>
// 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:
ps: Désolé je n'ai pas vu le bouton cpp
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:
<?php // connecte toi à ta base $connect=mysql_connect("localhost","root",""); // selection de la base... mysql_select_db("module",$connect); $dbreq = "SELECT * FROM news ORDER BY id" ; $dbres = mysql_query($dbreq) ; // j'ai supposé que c'était mysql $i = 0 ; $chemincompletdetonrepertoire = ''; 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 ?>
ps: Désolé je n'ai pas vu le bouton cpp
Lassé par la pub ? Créez un compte