8768 sujets

Développement web côté serveur, CMS

Bonjour à tous,

voilà, j'ai créé une fonction en php qui me permet de supprimer les images d'un dossier qui ne sont pas enregistrées dans une table mysql.

Le problème est que dans ma table, j'ai 3 champs images : ph1, ph2 et ph3

Le script ci-dessous fonctionne parfaitement pour 1 seul champs image (ph1), mais pour 3 champs image, ça plante, ça m'efface même des photos présentes dans la table.


function nettoyage_photos() {
$req_net_photos = "SELECT ph1,ph2,ph3 FROM table" ;
$req_net_photos_exec = mysql_query($req_net_photos) ; 

$i = 0 ;
while ($photos = mysql_fetch_row($req_net_photos_exec)) {
$tab[$i] = $photos[0] ;
$i++ ;
}

$dossier = "photos";
$handle = opendir($dossier);
$nbr_photos = 0;
while ($photo = readdir($handle)) {
if ($photo != "." && $photo != "..") {
if (!(in_array($photo,$tab))) {
//unlink($dossier."/".$photo) ;
echo "<img src='" . $dossier . "/" . $photo . "' width='100' height='100' /><br>$photo<br>";
$nbr_photos++;
}
}
}
echo '<p>Nettoyage des photos OK. <small>(' . $nbr_photos . ' supprim&eacute;es)</small></p>';
closedir($handle);
}

nettoyage_photos();



Avez-vous une idée ?

Merci d'avance.



Quand la table
salut Smiley smile

normal au vu de ton code tu ne fourni à l'array tab que les résultats du premier champs Smiley smile

Voici comment y remédier Smiley cligne

remplace toute cette partie :

$i = 0 ;
while ($photos = mysql_fetch_row($req_net_photos_exec)) {
$tab[$i] = $photos[0] ;
$i++ ;
}


par ceci


while ($photos = mysql_fetch_row($req_net_photos_exec)) {
$tab[] = $photos[0] ;
$tab[] = $photos[1] ;
$tab[] = $photos[2] ;
}



et voilà comme ça tab contient toutes les images présentent dans les 3 champs Smiley smile
Mille merciiiisssss pchlj !!!!

Ça fonctionne parfaitement Smiley smile

Erreur toute bête !! Fallait juste le définir manuellement

D'autant plus que ce script va me faire un sacré nettoyage !!