par
visualight » 11 juin 2010, 19:35
Merci pour vos réponses,
J'ai suivi les conseils de macgawel.
Lister les images de la table_photo dans un tableau $ImagesTable (avec un mysql_fetch_*)
Lister les images du répertoire dans un tableau $ImagesRep (avec un glob par exemple)
Supprimer les éléments de $ImagesRep qui se trouvent aussi dans $ImagesTable (avec array_diff)
(on ne conserve donc que les images qui sont dans le répertoire mais pas dans la table)
J'ai fait un truc mais ça ne fonctionne pas ... en effet, tout mes fichiers se suppriment du répertoire lors de l'unlink.
Tous sauf 1 : (test-du-fichier-photo-mademoiselle-liege-maastricht-20081203133641.jpg)
Le contenu de ma table_photo est :
exemple champ : photo_grande (2enregistrements)
Code : Tout sélectionner
http://www.monsite.com/temp/nice/V/V_S/V_S_K/VSKYSLV2QQH7Q5F/test-du-fichier-photo-mademoiselle-liege-maastricht-20081203133641.jpg
Code : Tout sélectionner
http://www.monsite.com/temp/nice/V/V_S/V_S_K/VSKYSLV2QQH7Q5F/test-du-fichier-photo-mademoiselle-liege-maastricht-20081203133632.jpg
Voici le code incriminé :
// -------------- Variables à modifier
$reldir = '/home/a50/www/temp/nice';
// -------------- Paramètres globaux
$pictures_table = array();
$pictures_dir = array();
// Connection à la base de donnée photos Neptune
$Neptune_db = mysql_connect('localhost', 'USER', 'PASS');
mysql_select_db('a50',$Neptune_db);
// On se connete à la table photo de Nice
$sql_photo = "SELECT photo_grande, photo_moyenne, photo_petite, photo_viral FROM tbl_photo";
$req_photo = mysql_query($sql_photo) or die('Erreur SQL !<br>'.$sql_photo.'<br>'.mysql_error());
// On Boucle sur la Db pour et on stock les images dans un array()
while($data = mysql_fetch_assoc($req_photo)) {
//$url_big = $data['photo_grande'];
//$dirname=basename(dirname($data['photo_grande']));
$info_grande_pics = pathinfo($data['photo_grande']);
$info_moyenne_pics = pathinfo($data['photo_moyenne']);
$info_petite_pics = pathinfo($data['photo_petites']);
$info_viral_pics = pathinfo($data['photo_viral']);
$relpath = substr ($info_grande_pics['dirname'], 28);
array_push($pictures_table, $info_grande_pics['basename'], $info_moyenne_pics['basename'], $info_petite_pics['basename'], $info_viral_pics['basename']);
// On scanne le répertoire, on évite les dossier système et on place les fichiers dans un array()
if ($handle = opendir($reldir.'/'.$relpath)) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
array_push($pictures_dir, $file);
}
}
}
closedir($handle);
// On supprime les doublons dans l'array
$Upictures_dir = array_unique($pictures_dir);
// On supprime les fichiers que l'on suohaite au final garder (paradoxe :) )
$pictures_diff = array_diff($Upictures_dir, $pictures_table);
// Pour chaque fichier restant, on le supprime
foreach ($pictures_diff as $picture) {
unlink($reldir.'/'.$relpath.'/'.$picture);
}
}
Si quelqu'un peut vérifier et me dire ce qui cloche, ça serait SUUUPPERRR sympa !
J'ai vraiment besoin d'un coup de main.
Merci,
raph
Merci pour vos réponses,
J'ai suivi les conseils de macgawel.
[quote]Lister les images de la table_photo dans un tableau $ImagesTable (avec un mysql_fetch_*)
Lister les images du répertoire dans un tableau $ImagesRep (avec un glob par exemple)
Supprimer les éléments de $ImagesRep qui se trouvent aussi dans $ImagesTable (avec array_diff)
(on ne conserve donc que les images qui sont dans le répertoire mais pas dans la table)[/quote]
J'ai fait un truc mais ça ne fonctionne pas ... en effet, tout mes fichiers se suppriment du répertoire lors de l'unlink.
[b]Tous sauf 1[/b] : (test-du-fichier-photo-mademoiselle-liege-maastricht-20081203133641.jpg)
Le contenu de ma table_photo est :
[u][b]exemple champ : photo_grande (2enregistrements)[/b][/u]
[code]http://www.monsite.com/temp/nice/V/V_S/V_S_K/VSKYSLV2QQH7Q5F/test-du-fichier-photo-mademoiselle-liege-maastricht-20081203133641.jpg[/code]
[code]http://www.monsite.com/temp/nice/V/V_S/V_S_K/VSKYSLV2QQH7Q5F/test-du-fichier-photo-mademoiselle-liege-maastricht-20081203133632.jpg[/code]
Voici le code incriminé :
[php] // -------------- Variables à modifier
$reldir = '/home/a50/www/temp/nice';
// -------------- Paramètres globaux
$pictures_table = array();
$pictures_dir = array();
// Connection à la base de donnée photos Neptune
$Neptune_db = mysql_connect('localhost', 'USER', 'PASS');
mysql_select_db('a50',$Neptune_db);
// On se connete à la table photo de Nice
$sql_photo = "SELECT photo_grande, photo_moyenne, photo_petite, photo_viral FROM tbl_photo";
$req_photo = mysql_query($sql_photo) or die('Erreur SQL !<br>'.$sql_photo.'<br>'.mysql_error());
// On Boucle sur la Db pour et on stock les images dans un array()
while($data = mysql_fetch_assoc($req_photo)) {
//$url_big = $data['photo_grande'];
//$dirname=basename(dirname($data['photo_grande']));
$info_grande_pics = pathinfo($data['photo_grande']);
$info_moyenne_pics = pathinfo($data['photo_moyenne']);
$info_petite_pics = pathinfo($data['photo_petites']);
$info_viral_pics = pathinfo($data['photo_viral']);
$relpath = substr ($info_grande_pics['dirname'], 28);
array_push($pictures_table, $info_grande_pics['basename'], $info_moyenne_pics['basename'], $info_petite_pics['basename'], $info_viral_pics['basename']);
// On scanne le répertoire, on évite les dossier système et on place les fichiers dans un array()
if ($handle = opendir($reldir.'/'.$relpath)) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
array_push($pictures_dir, $file);
}
}
}
closedir($handle);
// On supprime les doublons dans l'array
$Upictures_dir = array_unique($pictures_dir);
// On supprime les fichiers que l'on suohaite au final garder (paradoxe :) )
$pictures_diff = array_diff($Upictures_dir, $pictures_table);
// Pour chaque fichier restant, on le supprime
foreach ($pictures_diff as $picture) {
unlink($reldir.'/'.$relpath.'/'.$picture);
}
}[/php]
Si quelqu'un peut vérifier et me dire ce qui cloche, ça serait SUUUPPERRR sympa !
J'ai vraiment besoin d'un coup de main.
Merci,
raph