Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/12/2010, 14h10   #1
Invité régulier
 
shaolin zeu
Inscription : novembre 2009
Messages : 31
Détails du profil
Informations personnelles :
Nom : shaolin zeu

Informations forums :
Inscription : novembre 2009
Messages : 31
Points : 5
Points : 5
Par défaut Supprimer les photos inutiles du serveur

Bonjour,

L'upload de photo fonctionne très bien, en enregistrant la photo dans un dossier spécifié du serveur, et le nom de cette photo dans un champs de la base de donnée.
Pour différentes raisons, des photos peuvent être enregistrées malgré leur inutilité sans inscrire leur nom dans la base de donnée (c'est cette faille que je compte exploiter).
Je voudrais de temps en temps exécuter un script visant à supprimer ces photos inutiles du serveur. Je pense être proche de la solution, mais il me manque le ptit quelque chose ... ... comme d'habitude.

Voici le script auquel je pense:


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
 
// On se connecte à la base
$link = mysql_connect("...", "...", "...");
mysql_select_db("...");
 
 
// On crée la requête dans la table qui se nomme annonce
$select = "SELECT * FROM annonces";
$result = mysql_query($select,$link);
$data = mysql_fetch_array($result);
$photo = $data['photo'];
 
 
// On ouvre le dossier.
$dossier = "Photos";
$repertoire = opendir($dossier);
 
 
// On lance notre boucle qui lira les fichiers un par un.
while($fichier = readdir($repertoire))
        {
 
// Si le contenu du répertoire est différent de la variable photo, on supprime            
if($fichier != ".." AND $fichier != "." AND $fichier != $photo)
                {
                unlink("Photos/$fichier");
                }
                else
                {
                echo 'FICHIERS NON SUPPRIMES CAR PRESENTS DANS LA BASE DE DONNEE';
                }
 
 
        }
closedir($repertoire);
// On ferme !
Je pense que le problème vient de la variable $photo, puisqu'elle ne contient qu'une valeur alors qu'il faudrait qu'elle contienne toutes les valeurs inscrites dans la base de donnée auxquelles je ne veux pas toucher.

Merci à qui m'enlèvera cette aiguille à tricoter du pied
zeushaolin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 14h24   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Code :
1
2
3
while($data = mysql_fetch_array($result)) {
$photos[] = $data['photo'];
}
Code :
if($fichier != ".." AND $fichier != "." AND !in_array($fichier, $photos))
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 14h48   #3
Invité régulier
 
shaolin zeu
Inscription : novembre 2009
Messages : 31
Détails du profil
Informations personnelles :
Nom : shaolin zeu

Informations forums :
Inscription : novembre 2009
Messages : 31
Points : 5
Points : 5
Bon ... ben merci sabotage ... ça ne t'aura pas pris bien longtemps ... mais à moi si .

Voilà le code final si certains en ont besoin un jour.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// On se connecte à la base
$link = mysql_connect("...", "...", "...");
mysql_select_db("...");
 
 
// On crée la requête dans la table qui se nomme annonce
$select = "SELECT * FROM annonces";
$result = mysql_query($select,$link);
 
while($data = mysql_fetch_array($result)) 
{  $photos[] = $data['photo'];  }
 
 
// On ouvre le dossier.
$dossier = "Photos";
$repertoire = opendir($dossier);
 
 
// On lance notre boucle qui lira les fichiers un par un.
while($fichier = readdir($repertoire))
        {
 
// Si le contenu du répertoire est différent de la variable photo, on supprime            
                if($fichier != ".." AND $fichier != "." AND !in_array($fichier, $photos))
 
                {
                unlink("Photos/$fichier");
                }
                else
                {
                echo 'FICHIERS NON SUPPRIMES CAR PRESENTS DANS LA BASE DE DONNEE';
                }
 
 
        }
closedir($repertoire);
// On ferme !
A ta première correction,
Code :
1
2
3
 
while($data = mysql_fetch_array($result)) 
{  $photos[] = $data['photo'];  }
le [] a coté de $photo ... cela signifie "ensemble de resultats" c'est ca?

De la même facon qu'à ta seconde correction,
Code :
!in_array($fichier, $photos)
Cela signifie t il, "ce qui n'est pas dans la réponse array incluant dans $fichier le contenu $photo" ??
Ou bien j'ai tout faux ... .

Bref' dans tous les cas merci beaucoup pour ton aide Sabotage .
zeushaolin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 16h25   #4
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
$tableau[] signifie "un nouvel élement dans le tableau $tableau"

c'est comme si tu écrivais $tableau[x] avec x qui augmente a chaque fois
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h11.


 
 
 
 
Partenaires

Hébergement Web